Linux 3.4 compat, d_make_root() replaces d_alloc_root()

torvalds/linux@adc0e91ab1 introduced
introduced d_make_root() as a replacement for d_alloc_root(). Further
commits appear to have removed d_alloc_root() from the Linux source
tree. This causes the following failure:

  error: implicit declaration of function 'd_alloc_root'
  [-Werror=implicit-function-declaration]

To correct this we update the code to use the current d_make_root()
interface for readability.  Then we introduce an autotools check
to determine if d_make_root() is available.  If it isn't then we
define some compatibility logic which used the older d_alloc_root()
interface.

Signed-off-by: Richard Yao <ryao@gentoo.org>
Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Closes #776
This commit is contained in:
Richard Yao
2012-06-06 17:08:00 +00:00
committed by Brian Behlendorf
parent ab85f8455b
commit 6a0936babc
61 changed files with 182 additions and 1 deletions
+1 -1
View File
@@ -1200,7 +1200,7 @@ zfs_domount(struct super_block *sb, void *data, int silent)
}
/* Allocate a root dentry for the filesystem */
sb->s_root = d_alloc_root(root_inode);
sb->s_root = d_make_root(root_inode);
if (sb->s_root == NULL) {
(void) zfs_umount(sb);
error = ENOMEM;