forked from Minki/linux
new helper: get_tree_keyed()
For vfs_get_keyed_super users. Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
parent
1dd9bc08cf
commit
533770cc0a
@ -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)
|
|||||||
{
|
{
|
||||||
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)
|
||||||
|
10
fs/super.c
10
fs/super.c
@ -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);
|
|||||||
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,
|
|||||||
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)
|
|||||||
{
|
{
|
||||||
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);
|
|||||||
|
|
||||||
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)
|
||||||
|
Loading…
Reference in New Issue
Block a user