forked from Minki/linux
ceph: multiple filesystem support
To access non-default filesystem, we just need to subscribe to mdsmap.<MDS_NAMESPACE_ID> and add a new mount option for mds namespace id. Signed-off-by: Yan, Zheng <zyan@redhat.com> [idryomov@gmail.com: switch to a new libceph API] Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
This commit is contained in:
parent
737cc81ead
commit
235a09821c
@ -108,6 +108,7 @@ static int ceph_sync_fs(struct super_block *sb, int wait)
|
||||
* mount options
|
||||
*/
|
||||
enum {
|
||||
Opt_mds_namespace,
|
||||
Opt_wsize,
|
||||
Opt_rsize,
|
||||
Opt_rasize,
|
||||
@ -143,6 +144,7 @@ enum {
|
||||
};
|
||||
|
||||
static match_table_t fsopt_tokens = {
|
||||
{Opt_mds_namespace, "mds_namespace=%d"},
|
||||
{Opt_wsize, "wsize=%d"},
|
||||
{Opt_rsize, "rsize=%d"},
|
||||
{Opt_rasize, "rasize=%d"},
|
||||
@ -212,6 +214,9 @@ static int parse_fsopt_token(char *c, void *private)
|
||||
break;
|
||||
|
||||
/* misc */
|
||||
case Opt_mds_namespace:
|
||||
fsopt->mds_namespace = intval;
|
||||
break;
|
||||
case Opt_wsize:
|
||||
fsopt->wsize = intval;
|
||||
break;
|
||||
@ -367,6 +372,7 @@ static int parse_mount_options(struct ceph_mount_options **pfsopt,
|
||||
fsopt->max_readdir = CEPH_MAX_READDIR_DEFAULT;
|
||||
fsopt->max_readdir_bytes = CEPH_MAX_READDIR_BYTES_DEFAULT;
|
||||
fsopt->congestion_kb = default_congestion_kb();
|
||||
fsopt->mds_namespace = CEPH_FS_CLUSTER_ID_NONE;
|
||||
|
||||
/*
|
||||
* Distinguish the server list from the path in "dev_name".
|
||||
@ -457,6 +463,8 @@ static int ceph_show_options(struct seq_file *m, struct dentry *root)
|
||||
seq_puts(m, ",noacl");
|
||||
#endif
|
||||
|
||||
if (fsopt->mds_namespace != CEPH_FS_CLUSTER_ID_NONE)
|
||||
seq_printf(m, ",mds_namespace=%d", fsopt->mds_namespace);
|
||||
if (fsopt->wsize)
|
||||
seq_printf(m, ",wsize=%d", fsopt->wsize);
|
||||
if (fsopt->rsize != CEPH_RSIZE_DEFAULT)
|
||||
@ -530,6 +538,7 @@ static struct ceph_fs_client *create_fs_client(struct ceph_mount_options *fsopt,
|
||||
goto fail;
|
||||
}
|
||||
fsc->client->extra_mon_dispatch = extra_mon_dispatch;
|
||||
fsc->client->monc.fs_cluster_id = fsopt->mds_namespace;
|
||||
ceph_monc_want_map(&fsc->client->monc, CEPH_SUB_MDSMAP, 0, true);
|
||||
|
||||
fsc->mount_options = fsopt;
|
||||
|
@ -62,6 +62,7 @@ struct ceph_mount_options {
|
||||
int cap_release_safety;
|
||||
int max_readdir; /* max readdir result (entires) */
|
||||
int max_readdir_bytes; /* max readdir result (bytes) */
|
||||
int mds_namespace;
|
||||
|
||||
/*
|
||||
* everything above this point can be memcmp'd; everything below
|
||||
|
Loading…
Reference in New Issue
Block a user