Commit a129880d authored by Al Viro's avatar Al Viro

switch affs

either d_op instance would work for root, actually...
Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
parent d463a0c4
...@@ -201,6 +201,7 @@ extern const struct address_space_operations affs_aops; ...@@ -201,6 +201,7 @@ extern const struct address_space_operations affs_aops;
extern const struct address_space_operations affs_aops_ofs; extern const struct address_space_operations affs_aops_ofs;
extern const struct dentry_operations affs_dentry_operations; extern const struct dentry_operations affs_dentry_operations;
extern const struct dentry_operations affs_intl_dentry_operations;
static inline void static inline void
affs_set_blocksize(struct super_block *sb, int size) affs_set_blocksize(struct super_block *sb, int size)
......
...@@ -32,7 +32,7 @@ const struct dentry_operations affs_dentry_operations = { ...@@ -32,7 +32,7 @@ const struct dentry_operations affs_dentry_operations = {
.d_compare = affs_compare_dentry, .d_compare = affs_compare_dentry,
}; };
static const struct dentry_operations affs_intl_dentry_operations = { const struct dentry_operations affs_intl_dentry_operations = {
.d_hash = affs_intl_hash_dentry, .d_hash = affs_intl_hash_dentry,
.d_compare = affs_intl_compare_dentry, .d_compare = affs_intl_compare_dentry,
}; };
...@@ -240,7 +240,6 @@ affs_lookup(struct inode *dir, struct dentry *dentry, struct nameidata *nd) ...@@ -240,7 +240,6 @@ affs_lookup(struct inode *dir, struct dentry *dentry, struct nameidata *nd)
if (IS_ERR(inode)) if (IS_ERR(inode))
return ERR_CAST(inode); return ERR_CAST(inode);
} }
d_set_d_op(dentry, AFFS_SB(sb)->s_flags & SF_INTL ? &affs_intl_dentry_operations : &affs_dentry_operations);
d_add(dentry, inode); d_add(dentry, inode);
return NULL; return NULL;
} }
......
...@@ -477,12 +477,16 @@ static int affs_fill_super(struct super_block *sb, void *data, int silent) ...@@ -477,12 +477,16 @@ static int affs_fill_super(struct super_block *sb, void *data, int silent)
goto out_error_noinode; goto out_error_noinode;
} }
if (AFFS_SB(sb)->s_flags & SF_INTL)
sb->s_d_op = &affs_intl_dentry_operations;
else
sb->s_d_op = &affs_dentry_operations;
sb->s_root = d_alloc_root(root_inode); sb->s_root = d_alloc_root(root_inode);
if (!sb->s_root) { if (!sb->s_root) {
printk(KERN_ERR "AFFS: Get root inode failed\n"); printk(KERN_ERR "AFFS: Get root inode failed\n");
goto out_error; goto out_error;
} }
d_set_d_op(sb->s_root, &affs_dentry_operations);
pr_debug("AFFS: s_flags=%lX\n",sb->s_flags); pr_debug("AFFS: s_flags=%lX\n",sb->s_flags);
return 0; return 0;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment