diff options
-rw-r--r-- | fs/fuse/dir.c | 5 | ||||
-rw-r--r-- | fs/fuse/fuse_i.h | 1 | ||||
-rw-r--r-- | fs/fuse/inode.c | 3 |
3 files changed, 8 insertions, 1 deletions
diff --git a/fs/fuse/dir.c b/fs/fuse/dir.c index 6a4d0e5418a1..b3ebe512d64c 100644 --- a/fs/fuse/dir.c +++ b/fs/fuse/dir.c | |||
@@ -286,6 +286,11 @@ const struct dentry_operations fuse_dentry_operations = { | |||
286 | .d_release = fuse_dentry_release, | 286 | .d_release = fuse_dentry_release, |
287 | }; | 287 | }; |
288 | 288 | ||
289 | const struct dentry_operations fuse_root_dentry_operations = { | ||
290 | .d_init = fuse_dentry_init, | ||
291 | .d_release = fuse_dentry_release, | ||
292 | }; | ||
293 | |||
289 | int fuse_valid_type(int m) | 294 | int fuse_valid_type(int m) |
290 | { | 295 | { |
291 | return S_ISREG(m) || S_ISDIR(m) || S_ISLNK(m) || S_ISCHR(m) || | 296 | return S_ISREG(m) || S_ISDIR(m) || S_ISLNK(m) || S_ISCHR(m) || |
diff --git a/fs/fuse/fuse_i.h b/fs/fuse/fuse_i.h index 0dfbb136e59a..91307940c8ac 100644 --- a/fs/fuse/fuse_i.h +++ b/fs/fuse/fuse_i.h | |||
@@ -692,6 +692,7 @@ static inline u64 get_node_id(struct inode *inode) | |||
692 | extern const struct file_operations fuse_dev_operations; | 692 | extern const struct file_operations fuse_dev_operations; |
693 | 693 | ||
694 | extern const struct dentry_operations fuse_dentry_operations; | 694 | extern const struct dentry_operations fuse_dentry_operations; |
695 | extern const struct dentry_operations fuse_root_dentry_operations; | ||
695 | 696 | ||
696 | /** | 697 | /** |
697 | * Inode to nodeid comparison. | 698 | * Inode to nodeid comparison. |
diff --git a/fs/fuse/inode.c b/fs/fuse/inode.c index 17141099f2e7..6fe6a88ecb4a 100644 --- a/fs/fuse/inode.c +++ b/fs/fuse/inode.c | |||
@@ -1131,10 +1131,11 @@ static int fuse_fill_super(struct super_block *sb, void *data, int silent) | |||
1131 | 1131 | ||
1132 | err = -ENOMEM; | 1132 | err = -ENOMEM; |
1133 | root = fuse_get_root_inode(sb, d.rootmode); | 1133 | root = fuse_get_root_inode(sb, d.rootmode); |
1134 | sb->s_d_op = &fuse_root_dentry_operations; | ||
1134 | root_dentry = d_make_root(root); | 1135 | root_dentry = d_make_root(root); |
1135 | if (!root_dentry) | 1136 | if (!root_dentry) |
1136 | goto err_dev_free; | 1137 | goto err_dev_free; |
1137 | /* only now - we want root dentry with NULL ->d_op */ | 1138 | /* Root dentry doesn't have .d_revalidate */ |
1138 | sb->s_d_op = &fuse_dentry_operations; | 1139 | sb->s_d_op = &fuse_dentry_operations; |
1139 | 1140 | ||
1140 | init_req = fuse_request_alloc(0); | 1141 | init_req = fuse_request_alloc(0); |