Commit 533770cc authored by Al Viro's avatar Al Viro

new helper: get_tree_keyed()

For vfs_get_keyed_super users.
Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
parent 1dd9bc08
...@@ -1386,8 +1386,7 @@ static int nfsd_fill_super(struct super_block *sb, struct fs_context *fc) ...@@ -1386,8 +1386,7 @@ static int nfsd_fill_super(struct super_block *sb, struct fs_context *fc)
static int nfsd_fs_get_tree(struct fs_context *fc) static int nfsd_fs_get_tree(struct fs_context *fc)
{ {
fc->s_fs_info = get_net(fc->net_ns); return get_tree_keyed(fc, nfsd_fill_super, get_net(fc->net_ns));
return vfs_get_super(fc, vfs_get_keyed_super, nfsd_fill_super);
} }
static void nfsd_fs_free_fc(struct fs_context *fc) static void nfsd_fs_free_fc(struct fs_context *fc)
......
...@@ -157,8 +157,7 @@ static int proc_get_tree(struct fs_context *fc) ...@@ -157,8 +157,7 @@ static int proc_get_tree(struct fs_context *fc)
{ {
struct proc_fs_context *ctx = fc->fs_private; struct proc_fs_context *ctx = fc->fs_private;
fc->s_fs_info = ctx->pid_ns; return get_tree_keyed(fc, proc_fill_super, ctx->pid_ns);
return vfs_get_super(fc, vfs_get_keyed_super, proc_fill_super);
} }
static void proc_fs_context_free(struct fs_context *fc) static void proc_fs_context_free(struct fs_context *fc)
......
...@@ -1211,6 +1211,16 @@ int get_tree_single(struct fs_context *fc, ...@@ -1211,6 +1211,16 @@ int get_tree_single(struct fs_context *fc,
} }
EXPORT_SYMBOL(get_tree_single); EXPORT_SYMBOL(get_tree_single);
int get_tree_keyed(struct fs_context *fc,
int (*fill_super)(struct super_block *sb,
struct fs_context *fc),
void *key)
{
fc->s_fs_info = key;
return vfs_get_super(fc, vfs_get_keyed_super, fill_super);
}
EXPORT_SYMBOL(get_tree_keyed);
#ifdef CONFIG_BLOCK #ifdef CONFIG_BLOCK
static int set_bdev_super(struct super_block *s, void *data) static int set_bdev_super(struct super_block *s, void *data)
{ {
......
...@@ -136,7 +136,7 @@ extern int vfs_get_tree(struct fs_context *fc); ...@@ -136,7 +136,7 @@ extern int vfs_get_tree(struct fs_context *fc);
extern void put_fs_context(struct fs_context *fc); extern void put_fs_context(struct fs_context *fc);
/* /*
* sget() wrapper to be called from the ->get_tree() op. * sget() wrappers to be called from the ->get_tree() op.
*/ */
enum vfs_get_super_keying { enum vfs_get_super_keying {
vfs_get_single_super, /* Only one such superblock may exist */ vfs_get_single_super, /* Only one such superblock may exist */
...@@ -147,12 +147,17 @@ extern int vfs_get_super(struct fs_context *fc, ...@@ -147,12 +147,17 @@ extern int vfs_get_super(struct fs_context *fc,
enum vfs_get_super_keying keying, enum vfs_get_super_keying keying,
int (*fill_super)(struct super_block *sb, int (*fill_super)(struct super_block *sb,
struct fs_context *fc)); struct fs_context *fc));
extern int get_tree_nodev(struct fs_context *fc, extern int get_tree_nodev(struct fs_context *fc,
int (*fill_super)(struct super_block *sb, int (*fill_super)(struct super_block *sb,
struct fs_context *fc)); struct fs_context *fc));
extern int get_tree_single(struct fs_context *fc, extern int get_tree_single(struct fs_context *fc,
int (*fill_super)(struct super_block *sb, int (*fill_super)(struct super_block *sb,
struct fs_context *fc)); struct fs_context *fc));
extern int get_tree_keyed(struct fs_context *fc,
int (*fill_super)(struct super_block *sb,
struct fs_context *fc),
void *key);
extern const struct file_operations fscontext_fops; extern const struct file_operations fscontext_fops;
......
...@@ -364,8 +364,7 @@ static int mqueue_get_tree(struct fs_context *fc) ...@@ -364,8 +364,7 @@ static int mqueue_get_tree(struct fs_context *fc)
{ {
struct mqueue_fs_context *ctx = fc->fs_private; struct mqueue_fs_context *ctx = fc->fs_private;
fc->s_fs_info = ctx->ipc_ns; return get_tree_keyed(fc, mqueue_fill_super, ctx->ipc_ns);
return vfs_get_super(fc, vfs_get_keyed_super, mqueue_fill_super);
} }
static void mqueue_fs_context_free(struct fs_context *fc) static void mqueue_fs_context_free(struct fs_context *fc)
......
...@@ -1416,8 +1416,7 @@ EXPORT_SYMBOL_GPL(gssd_running); ...@@ -1416,8 +1416,7 @@ EXPORT_SYMBOL_GPL(gssd_running);
static int rpc_fs_get_tree(struct fs_context *fc) static int rpc_fs_get_tree(struct fs_context *fc)
{ {
fc->s_fs_info = get_net(fc->net_ns); return get_tree_keyed(fc, rpc_fill_super, get_net(fc->net_ns));
return vfs_get_super(fc, vfs_get_keyed_super, rpc_fill_super);
} }
static void rpc_fs_free_fc(struct fs_context *fc) static void rpc_fs_free_fc(struct fs_context *fc)
......
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