switch configfs
authorAl Viro <viro@zeniv.linux.org.uk>
Wed, 12 Jan 2011 21:41:05 +0000 (16:41 -0500)
committerAl Viro <viro@zeniv.linux.org.uk>
Thu, 13 Jan 2011 01:03:12 +0000 (20:03 -0500)
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
fs/configfs/configfs_internal.h
fs/configfs/dir.c
fs/configfs/mount.c

index 026cf68553a41bc4539e7846c5d2098b15479ae9..82bda8fdfc1cb40ed56b9765af242214f7564742 100644 (file)
@@ -90,6 +90,7 @@ extern const struct file_operations configfs_file_operations;
 extern const struct file_operations bin_fops;
 extern const struct inode_operations configfs_dir_inode_operations;
 extern const struct inode_operations configfs_symlink_inode_operations;
+extern const struct dentry_operations configfs_dentry_ops;
 
 extern int configfs_symlink(struct inode *dir, struct dentry *dentry,
                            const char *symname);
index 36637a8c1ed339b945057698bfab2da66467a364..90ff3cb10de3123d1ca9095d511552eccb7188fe 100644 (file)
@@ -72,7 +72,7 @@ static int configfs_d_delete(const struct dentry *dentry)
        return 1;
 }
 
-static const struct dentry_operations configfs_dentry_ops = {
+const struct dentry_operations configfs_dentry_ops = {
        .d_iput         = configfs_d_iput,
        /* simple_delete_dentry() isn't exported */
        .d_delete       = configfs_d_delete,
@@ -442,7 +442,6 @@ static int configfs_attach_attr(struct configfs_dirent * sd, struct dentry * den
                return error;
        }
 
-       d_set_d_op(dentry, &configfs_dentry_ops);
        d_rehash(dentry);
 
        return 0;
@@ -489,7 +488,6 @@ static struct dentry * configfs_lookup(struct inode *dir,
                 */
                if (dentry->d_name.len > NAME_MAX)
                        return ERR_PTR(-ENAMETOOLONG);
-               d_set_d_op(dentry, &configfs_dentry_ops);
                d_add(dentry, NULL);
                return NULL;
        }
@@ -683,7 +681,6 @@ static int create_default_group(struct config_group *parent_group,
        ret = -ENOMEM;
        child = d_alloc(parent, &name);
        if (child) {
-               d_set_d_op(child, &configfs_dentry_ops);
                d_add(child, NULL);
 
                ret = configfs_attach_group(&parent_group->cg_item,
@@ -1681,7 +1678,6 @@ int configfs_register_subsystem(struct configfs_subsystem *subsys)
        err = -ENOMEM;
        dentry = d_alloc(configfs_sb->s_root, &name);
        if (dentry) {
-               d_set_d_op(dentry, &configfs_dentry_ops);
                d_add(dentry, NULL);
 
                err = configfs_attach_group(sd->s_element, &group->cg_item,
index 7d3607febe1c7f8878912ab3a389933cda932aaa..ecc62178beda98d3975b2796714ab6d3d6b1968e 100644 (file)
@@ -101,6 +101,7 @@ static int configfs_fill_super(struct super_block *sb, void *data, int silent)
        configfs_root_group.cg_item.ci_dentry = root;
        root->d_fsdata = &configfs_root;
        sb->s_root = root;
+       sb->s_d_op = &configfs_dentry_ops; /* the rest get that */
        return 0;
 }