switch affs
either d_op instance would work for root, actually... Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
parent
d463a0c4b5
commit
a129880daf
|
@ -201,6 +201,7 @@ extern const struct address_space_operations affs_aops;
|
|||
extern const struct address_space_operations affs_aops_ofs;
|
||||
|
||||
extern const struct dentry_operations affs_dentry_operations;
|
||||
extern const struct dentry_operations affs_intl_dentry_operations;
|
||||
|
||||
static inline void
|
||||
affs_set_blocksize(struct super_block *sb, int size)
|
||||
|
|
|
@ -32,7 +32,7 @@ const struct dentry_operations affs_dentry_operations = {
|
|||
.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_compare = affs_intl_compare_dentry,
|
||||
};
|
||||
|
@ -240,7 +240,6 @@ affs_lookup(struct inode *dir, struct dentry *dentry, struct nameidata *nd)
|
|||
if (IS_ERR(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);
|
||||
return NULL;
|
||||
}
|
||||
|
|
|
@ -477,12 +477,16 @@ got_root:
|
|||
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);
|
||||
if (!sb->s_root) {
|
||||
printk(KERN_ERR "AFFS: Get root inode failed\n");
|
||||
goto out_error;
|
||||
}
|
||||
d_set_d_op(sb->s_root, &affs_dentry_operations);
|
||||
|
||||
pr_debug("AFFS: s_flags=%lX\n",sb->s_flags);
|
||||
return 0;
|
||||
|
|
Loading…
Reference in New Issue