Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client: ceph: ensure prealloc_blob is in place when removing xattr rbd: initialize snap_rwsem in rbd_add() ceph: enable/disable dentry complete flags via mount option vfs: export symbol d_find_any_alias() ceph: always initialize the dentry in open_root_dentry() libceph: remove useless return value for osd_client __send_request() ceph: avoid iput() while holding spinlock in ceph_dir_fsync ceph: avoid useless dget/dput in encode_fh ceph: dereference pointer after checking for NULL crush: fix force for non-root TAKE ceph: remove unnecessary d_fsdata conditional checks ceph: Use kmemdup rather than duplicating its implementation Fix up conflicts in fs/ceph/super.c (d_alloc_root() failure handling vs always initialize the dentry in open_root_dentry)
This commit is contained in:
@@ -131,6 +131,8 @@ enum {
|
||||
Opt_rbytes,
|
||||
Opt_norbytes,
|
||||
Opt_noasyncreaddir,
|
||||
Opt_dcache,
|
||||
Opt_nodcache,
|
||||
Opt_ino32,
|
||||
};
|
||||
|
||||
@@ -152,6 +154,8 @@ static match_table_t fsopt_tokens = {
|
||||
{Opt_rbytes, "rbytes"},
|
||||
{Opt_norbytes, "norbytes"},
|
||||
{Opt_noasyncreaddir, "noasyncreaddir"},
|
||||
{Opt_dcache, "dcache"},
|
||||
{Opt_nodcache, "nodcache"},
|
||||
{Opt_ino32, "ino32"},
|
||||
{-1, NULL}
|
||||
};
|
||||
@@ -231,6 +235,12 @@ static int parse_fsopt_token(char *c, void *private)
|
||||
case Opt_noasyncreaddir:
|
||||
fsopt->flags |= CEPH_MOUNT_OPT_NOASYNCREADDIR;
|
||||
break;
|
||||
case Opt_dcache:
|
||||
fsopt->flags |= CEPH_MOUNT_OPT_DCACHE;
|
||||
break;
|
||||
case Opt_nodcache:
|
||||
fsopt->flags &= ~CEPH_MOUNT_OPT_DCACHE;
|
||||
break;
|
||||
case Opt_ino32:
|
||||
fsopt->flags |= CEPH_MOUNT_OPT_INO32;
|
||||
break;
|
||||
@@ -377,6 +387,10 @@ static int ceph_show_options(struct seq_file *m, struct dentry *root)
|
||||
seq_puts(m, ",norbytes");
|
||||
if (fsopt->flags & CEPH_MOUNT_OPT_NOASYNCREADDIR)
|
||||
seq_puts(m, ",noasyncreaddir");
|
||||
if (fsopt->flags & CEPH_MOUNT_OPT_DCACHE)
|
||||
seq_puts(m, ",dcache");
|
||||
else
|
||||
seq_puts(m, ",nodcache");
|
||||
|
||||
if (fsopt->wsize)
|
||||
seq_printf(m, ",wsize=%d", fsopt->wsize);
|
||||
@@ -647,10 +661,10 @@ static struct dentry *open_root_dentry(struct ceph_fs_client *fsc,
|
||||
root = ERR_PTR(-ENOMEM);
|
||||
goto out;
|
||||
}
|
||||
ceph_init_dentry(root);
|
||||
} else {
|
||||
root = d_obtain_alias(inode);
|
||||
}
|
||||
ceph_init_dentry(root);
|
||||
dout("open_root_inode success, root dentry is %p\n", root);
|
||||
} else {
|
||||
root = ERR_PTR(err);
|
||||
|
Reference in New Issue
Block a user