提交 fc14f2fe 编写于 作者: A Al Viro

convert get_sb_single() users

Signed-off-by: NAl Viro <viro@zeniv.linux.org.uk>
上级 848b83a5
...@@ -798,17 +798,17 @@ spufs_fill_super(struct super_block *sb, void *data, int silent) ...@@ -798,17 +798,17 @@ spufs_fill_super(struct super_block *sb, void *data, int silent)
return spufs_create_root(sb, data); return spufs_create_root(sb, data);
} }
static int static struct dentry *
spufs_get_sb(struct file_system_type *fstype, int flags, spufs_mount(struct file_system_type *fstype, int flags,
const char *name, void *data, struct vfsmount *mnt) const char *name, void *data)
{ {
return get_sb_single(fstype, flags, data, spufs_fill_super, mnt); return mount_single(fstype, flags, data, spufs_fill_super);
} }
static struct file_system_type spufs_type = { static struct file_system_type spufs_type = {
.owner = THIS_MODULE, .owner = THIS_MODULE,
.name = "spufs", .name = "spufs",
.get_sb = spufs_get_sb, .mount = spufs_mount,
.kill_sb = kill_litter_super, .kill_sb = kill_litter_super,
}; };
......
...@@ -316,10 +316,10 @@ static int hypfs_fill_super(struct super_block *sb, void *data, int silent) ...@@ -316,10 +316,10 @@ static int hypfs_fill_super(struct super_block *sb, void *data, int silent)
return 0; return 0;
} }
static int hypfs_get_super(struct file_system_type *fst, int flags, static struct dentry *hypfs_mount(struct file_system_type *fst, int flags,
const char *devname, void *data, struct vfsmount *mnt) const char *devname, void *data)
{ {
return get_sb_single(fst, flags, data, hypfs_fill_super, mnt); return mount_single(fst, flags, data, hypfs_fill_super);
} }
static void hypfs_kill_super(struct super_block *sb) static void hypfs_kill_super(struct super_block *sb)
...@@ -455,7 +455,7 @@ static const struct file_operations hypfs_file_ops = { ...@@ -455,7 +455,7 @@ static const struct file_operations hypfs_file_ops = {
static struct file_system_type hypfs_type = { static struct file_system_type hypfs_type = {
.owner = THIS_MODULE, .owner = THIS_MODULE,
.name = "s390_hypfs", .name = "s390_hypfs",
.get_sb = hypfs_get_super, .mount = hypfs_mount,
.kill_sb = hypfs_kill_super .kill_sb = hypfs_kill_super
}; };
......
...@@ -29,33 +29,33 @@ ...@@ -29,33 +29,33 @@
static struct vfsmount *dev_mnt; static struct vfsmount *dev_mnt;
#if defined CONFIG_DEVTMPFS_MOUNT #if defined CONFIG_DEVTMPFS_MOUNT
static int dev_mount = 1; static int mount_dev = 1;
#else #else
static int dev_mount; static int mount_dev;
#endif #endif
static DEFINE_MUTEX(dirlock); static DEFINE_MUTEX(dirlock);
static int __init mount_param(char *str) static int __init mount_param(char *str)
{ {
dev_mount = simple_strtoul(str, NULL, 0); mount_dev = simple_strtoul(str, NULL, 0);
return 1; return 1;
} }
__setup("devtmpfs.mount=", mount_param); __setup("devtmpfs.mount=", mount_param);
static int dev_get_sb(struct file_system_type *fs_type, int flags, static struct dentry *dev_mount(struct file_system_type *fs_type, int flags,
const char *dev_name, void *data, struct vfsmount *mnt) const char *dev_name, void *data)
{ {
#ifdef CONFIG_TMPFS #ifdef CONFIG_TMPFS
return get_sb_single(fs_type, flags, data, shmem_fill_super, mnt); return mount_single(fs_type, flags, data, shmem_fill_super);
#else #else
return get_sb_single(fs_type, flags, data, ramfs_fill_super, mnt); return mount_single(fs_type, flags, data, ramfs_fill_super);
#endif #endif
} }
static struct file_system_type dev_fs_type = { static struct file_system_type dev_fs_type = {
.name = "devtmpfs", .name = "devtmpfs",
.get_sb = dev_get_sb, .mount = dev_mount,
.kill_sb = kill_litter_super, .kill_sb = kill_litter_super,
}; };
...@@ -351,7 +351,7 @@ int devtmpfs_mount(const char *mntdir) ...@@ -351,7 +351,7 @@ int devtmpfs_mount(const char *mntdir)
{ {
int err; int err;
if (!dev_mount) if (!mount_dev)
return 0; return 0;
if (!dev_mnt) if (!dev_mnt)
......
...@@ -362,13 +362,13 @@ static int ipathfs_fill_super(struct super_block *sb, void *data, ...@@ -362,13 +362,13 @@ static int ipathfs_fill_super(struct super_block *sb, void *data,
return ret; return ret;
} }
static int ipathfs_get_sb(struct file_system_type *fs_type, int flags, static struct dentry *ipathfs_mount(struct file_system_type *fs_type,
const char *dev_name, void *data, struct vfsmount *mnt) int flags, const char *dev_name, void *data)
{ {
int ret = get_sb_single(fs_type, flags, data, struct dentry *ret;
ipathfs_fill_super, mnt); ret = mount_single(fs_type, flags, data, ipathfs_fill_super);
if (ret >= 0) if (!IS_ERR(ret))
ipath_super = mnt->mnt_sb; ipath_super = ret->d_sb;
return ret; return ret;
} }
...@@ -411,7 +411,7 @@ int ipathfs_remove_device(struct ipath_devdata *dd) ...@@ -411,7 +411,7 @@ int ipathfs_remove_device(struct ipath_devdata *dd)
static struct file_system_type ipathfs_fs_type = { static struct file_system_type ipathfs_fs_type = {
.owner = THIS_MODULE, .owner = THIS_MODULE,
.name = "ipathfs", .name = "ipathfs",
.get_sb = ipathfs_get_sb, .mount = ipathfs_mount,
.kill_sb = ipathfs_kill_super, .kill_sb = ipathfs_kill_super,
}; };
......
...@@ -555,13 +555,13 @@ static int qibfs_fill_super(struct super_block *sb, void *data, int silent) ...@@ -555,13 +555,13 @@ static int qibfs_fill_super(struct super_block *sb, void *data, int silent)
return ret; return ret;
} }
static int qibfs_get_sb(struct file_system_type *fs_type, int flags, static struct dentry *qibfs_mount(struct file_system_type *fs_type, int flags,
const char *dev_name, void *data, struct vfsmount *mnt) const char *dev_name, void *data)
{ {
int ret = get_sb_single(fs_type, flags, data, struct dentry *ret;
qibfs_fill_super, mnt); ret = mount_single(fs_type, flags, data, qibfs_fill_super);
if (ret >= 0) if (!IS_ERR(ret))
qib_super = mnt->mnt_sb; qib_super = ret->d_sb;
return ret; return ret;
} }
...@@ -603,7 +603,7 @@ int qibfs_remove(struct qib_devdata *dd) ...@@ -603,7 +603,7 @@ int qibfs_remove(struct qib_devdata *dd)
static struct file_system_type qibfs_fs_type = { static struct file_system_type qibfs_fs_type = {
.owner = THIS_MODULE, .owner = THIS_MODULE,
.name = "ipathfs", .name = "ipathfs",
.get_sb = qibfs_get_sb, .mount = qibfs_mount,
.kill_sb = qibfs_kill_super, .kill_sb = qibfs_kill_super,
}; };
......
...@@ -125,16 +125,16 @@ capifs_fill_super(struct super_block *s, void *data, int silent) ...@@ -125,16 +125,16 @@ capifs_fill_super(struct super_block *s, void *data, int silent)
return -ENOMEM; return -ENOMEM;
} }
static int capifs_get_sb(struct file_system_type *fs_type, static struct dentry *capifs_mount(struct file_system_type *fs_type,
int flags, const char *dev_name, void *data, struct vfsmount *mnt) int flags, const char *dev_name, void *data)
{ {
return get_sb_single(fs_type, flags, data, capifs_fill_super, mnt); return mount_single(fs_type, flags, data, capifs_fill_super);
} }
static struct file_system_type capifs_fs_type = { static struct file_system_type capifs_fs_type = {
.owner = THIS_MODULE, .owner = THIS_MODULE,
.name = "capifs", .name = "capifs",
.get_sb = capifs_get_sb, .mount = capifs_mount,
.kill_sb = kill_anon_super, .kill_sb = kill_anon_super,
}; };
......
...@@ -91,11 +91,10 @@ static void ibmasmfs_create_files (struct super_block *sb, struct dentry *root); ...@@ -91,11 +91,10 @@ static void ibmasmfs_create_files (struct super_block *sb, struct dentry *root);
static int ibmasmfs_fill_super (struct super_block *sb, void *data, int silent); static int ibmasmfs_fill_super (struct super_block *sb, void *data, int silent);
static int ibmasmfs_get_super(struct file_system_type *fst, static struct dentry *ibmasmfs_mount(struct file_system_type *fst,
int flags, const char *name, void *data, int flags, const char *name, void *data)
struct vfsmount *mnt)
{ {
return get_sb_single(fst, flags, data, ibmasmfs_fill_super, mnt); return mount_single(fst, flags, data, ibmasmfs_fill_super);
} }
static const struct super_operations ibmasmfs_s_ops = { static const struct super_operations ibmasmfs_s_ops = {
...@@ -108,7 +107,7 @@ static const struct file_operations *ibmasmfs_dir_ops = &simple_dir_operations; ...@@ -108,7 +107,7 @@ static const struct file_operations *ibmasmfs_dir_ops = &simple_dir_operations;
static struct file_system_type ibmasmfs_type = { static struct file_system_type ibmasmfs_type = {
.owner = THIS_MODULE, .owner = THIS_MODULE,
.name = "ibmasmfs", .name = "ibmasmfs",
.get_sb = ibmasmfs_get_super, .mount = ibmasmfs_mount,
.kill_sb = kill_litter_super, .kill_sb = kill_litter_super,
}; };
......
...@@ -259,17 +259,17 @@ static int oprofilefs_fill_super(struct super_block *sb, void *data, int silent) ...@@ -259,17 +259,17 @@ static int oprofilefs_fill_super(struct super_block *sb, void *data, int silent)
} }
static int oprofilefs_get_sb(struct file_system_type *fs_type, static struct dentry *oprofilefs_mount(struct file_system_type *fs_type,
int flags, const char *dev_name, void *data, struct vfsmount *mnt) int flags, const char *dev_name, void *data)
{ {
return get_sb_single(fs_type, flags, data, oprofilefs_fill_super, mnt); return mount_single(fs_type, flags, data, oprofilefs_fill_super);
} }
static struct file_system_type oprofilefs_type = { static struct file_system_type oprofilefs_type = {
.owner = THIS_MODULE, .owner = THIS_MODULE,
.name = "oprofilefs", .name = "oprofilefs",
.get_sb = oprofilefs_get_sb, .mount = oprofilefs_mount,
.kill_sb = kill_litter_super, .kill_sb = kill_litter_super,
}; };
......
...@@ -574,16 +574,16 @@ static void fs_remove_file (struct dentry *dentry) ...@@ -574,16 +574,16 @@ static void fs_remove_file (struct dentry *dentry)
/* --------------------------------------------------------------------- */ /* --------------------------------------------------------------------- */
static int usb_get_sb(struct file_system_type *fs_type, static struct dentry *usb_mount(struct file_system_type *fs_type,
int flags, const char *dev_name, void *data, struct vfsmount *mnt) int flags, const char *dev_name, void *data)
{ {
return get_sb_single(fs_type, flags, data, usbfs_fill_super, mnt); return mount_single(fs_type, flags, data, usbfs_fill_super);
} }
static struct file_system_type usb_fs_type = { static struct file_system_type usb_fs_type = {
.owner = THIS_MODULE, .owner = THIS_MODULE,
.name = "usbfs", .name = "usbfs",
.get_sb = usb_get_sb, .mount = usb_mount,
.kill_sb = kill_litter_super, .kill_sb = kill_litter_super,
}; };
......
...@@ -1176,9 +1176,9 @@ static int ffs_fs_parse_opts(struct ffs_sb_fill_data *data, char *opts) ...@@ -1176,9 +1176,9 @@ static int ffs_fs_parse_opts(struct ffs_sb_fill_data *data, char *opts)
/* "mount -t functionfs dev_name /dev/function" ends up here */ /* "mount -t functionfs dev_name /dev/function" ends up here */
static int static struct dentry *
ffs_fs_get_sb(struct file_system_type *t, int flags, ffs_fs_mount(struct file_system_type *t, int flags,
const char *dev_name, void *opts, struct vfsmount *mnt) const char *dev_name, void *opts)
{ {
struct ffs_sb_fill_data data = { struct ffs_sb_fill_data data = {
.perms = { .perms = {
...@@ -1194,14 +1194,14 @@ ffs_fs_get_sb(struct file_system_type *t, int flags, ...@@ -1194,14 +1194,14 @@ ffs_fs_get_sb(struct file_system_type *t, int flags,
ret = functionfs_check_dev_callback(dev_name); ret = functionfs_check_dev_callback(dev_name);
if (unlikely(ret < 0)) if (unlikely(ret < 0))
return ret; return ERR_PTR(ret);
ret = ffs_fs_parse_opts(&data, opts); ret = ffs_fs_parse_opts(&data, opts);
if (unlikely(ret < 0)) if (unlikely(ret < 0))
return ret; return ERR_PTR(ret);
data.dev_name = dev_name; data.dev_name = dev_name;
return get_sb_single(t, flags, &data, ffs_sb_fill, mnt); return mount_single(t, flags, &data, ffs_sb_fill);
} }
static void static void
...@@ -1220,7 +1220,7 @@ ffs_fs_kill_sb(struct super_block *sb) ...@@ -1220,7 +1220,7 @@ ffs_fs_kill_sb(struct super_block *sb)
static struct file_system_type ffs_fs_type = { static struct file_system_type ffs_fs_type = {
.owner = THIS_MODULE, .owner = THIS_MODULE,
.name = "functionfs", .name = "functionfs",
.get_sb = ffs_fs_get_sb, .mount = ffs_fs_mount,
.kill_sb = ffs_fs_kill_sb, .kill_sb = ffs_fs_kill_sb,
}; };
......
...@@ -2097,11 +2097,11 @@ gadgetfs_fill_super (struct super_block *sb, void *opts, int silent) ...@@ -2097,11 +2097,11 @@ gadgetfs_fill_super (struct super_block *sb, void *opts, int silent)
} }
/* "mount -t gadgetfs path /dev/gadget" ends up here */ /* "mount -t gadgetfs path /dev/gadget" ends up here */
static int static struct dentry *
gadgetfs_get_sb (struct file_system_type *t, int flags, gadgetfs_mount (struct file_system_type *t, int flags,
const char *path, void *opts, struct vfsmount *mnt) const char *path, void *opts)
{ {
return get_sb_single (t, flags, opts, gadgetfs_fill_super, mnt); return mount_single (t, flags, opts, gadgetfs_fill_super);
} }
static void static void
...@@ -2119,7 +2119,7 @@ gadgetfs_kill_sb (struct super_block *sb) ...@@ -2119,7 +2119,7 @@ gadgetfs_kill_sb (struct super_block *sb)
static struct file_system_type gadgetfs_type = { static struct file_system_type gadgetfs_type = {
.owner = THIS_MODULE, .owner = THIS_MODULE,
.name = shortname, .name = shortname,
.get_sb = gadgetfs_get_sb, .mount = gadgetfs_mount,
.kill_sb = gadgetfs_kill_sb, .kill_sb = gadgetfs_kill_sb,
}; };
......
...@@ -121,17 +121,17 @@ static int xenfs_fill_super(struct super_block *sb, void *data, int silent) ...@@ -121,17 +121,17 @@ static int xenfs_fill_super(struct super_block *sb, void *data, int silent)
return rc; return rc;
} }
static int xenfs_get_sb(struct file_system_type *fs_type, static int xenfs_mount(struct file_system_type *fs_type,
int flags, const char *dev_name, int flags, const char *dev_name,
void *data, struct vfsmount *mnt) void *data)
{ {
return get_sb_single(fs_type, flags, data, xenfs_fill_super, mnt); return mount_single(fs_type, flags, data, xenfs_fill_super);
} }
static struct file_system_type xenfs_type = { static struct file_system_type xenfs_type = {
.owner = THIS_MODULE, .owner = THIS_MODULE,
.name = "xenfs", .name = "xenfs",
.get_sb = xenfs_get_sb, .mount = xenfs_mount,
.kill_sb = kill_litter_super, .kill_sb = kill_litter_super,
}; };
......
...@@ -706,10 +706,10 @@ static int bm_fill_super(struct super_block * sb, void * data, int silent) ...@@ -706,10 +706,10 @@ static int bm_fill_super(struct super_block * sb, void * data, int silent)
return err; return err;
} }
static int bm_get_sb(struct file_system_type *fs_type, static struct dentry *bm_mount(struct file_system_type *fs_type,
int flags, const char *dev_name, void *data, struct vfsmount *mnt) int flags, const char *dev_name, void *data)
{ {
return get_sb_single(fs_type, flags, data, bm_fill_super, mnt); return mount_single(fs_type, flags, data, bm_fill_super);
} }
static struct linux_binfmt misc_format = { static struct linux_binfmt misc_format = {
...@@ -720,7 +720,7 @@ static struct linux_binfmt misc_format = { ...@@ -720,7 +720,7 @@ static struct linux_binfmt misc_format = {
static struct file_system_type bm_fs_type = { static struct file_system_type bm_fs_type = {
.owner = THIS_MODULE, .owner = THIS_MODULE,
.name = "binfmt_misc", .name = "binfmt_misc",
.get_sb = bm_get_sb, .mount = bm_mount,
.kill_sb = kill_litter_super, .kill_sb = kill_litter_super,
}; };
......
...@@ -104,16 +104,16 @@ static int configfs_fill_super(struct super_block *sb, void *data, int silent) ...@@ -104,16 +104,16 @@ static int configfs_fill_super(struct super_block *sb, void *data, int silent)
return 0; return 0;
} }
static int configfs_get_sb(struct file_system_type *fs_type, static struct dentry *configfs_do_mount(struct file_system_type *fs_type,
int flags, const char *dev_name, void *data, struct vfsmount *mnt) int flags, const char *dev_name, void *data)
{ {
return get_sb_single(fs_type, flags, data, configfs_fill_super, mnt); return mount_single(fs_type, flags, data, configfs_fill_super);
} }
static struct file_system_type configfs_fs_type = { static struct file_system_type configfs_fs_type = {
.owner = THIS_MODULE, .owner = THIS_MODULE,
.name = "configfs", .name = "configfs",
.get_sb = configfs_get_sb, .mount = configfs_do_mount,
.kill_sb = kill_litter_super, .kill_sb = kill_litter_super,
}; };
......
...@@ -135,17 +135,17 @@ static int debug_fill_super(struct super_block *sb, void *data, int silent) ...@@ -135,17 +135,17 @@ static int debug_fill_super(struct super_block *sb, void *data, int silent)
return simple_fill_super(sb, DEBUGFS_MAGIC, debug_files); return simple_fill_super(sb, DEBUGFS_MAGIC, debug_files);
} }
static int debug_get_sb(struct file_system_type *fs_type, static struct dentry *debug_mount(struct file_system_type *fs_type,
int flags, const char *dev_name, int flags, const char *dev_name,
void *data, struct vfsmount *mnt) void *data)
{ {
return get_sb_single(fs_type, flags, data, debug_fill_super, mnt); return mount_single(fs_type, flags, data, debug_fill_super);
} }
static struct file_system_type debug_fs_type = { static struct file_system_type debug_fs_type = {
.owner = THIS_MODULE, .owner = THIS_MODULE,
.name = "debugfs", .name = "debugfs",
.get_sb = debug_get_sb, .mount = debug_mount,
.kill_sb = kill_litter_super, .kill_sb = kill_litter_super,
}; };
......
...@@ -331,7 +331,7 @@ static int compare_init_pts_sb(struct super_block *s, void *p) ...@@ -331,7 +331,7 @@ static int compare_init_pts_sb(struct super_block *s, void *p)
} }
/* /*
* devpts_get_sb() * devpts_mount()
* *
* If the '-o newinstance' mount option was specified, mount a new * If the '-o newinstance' mount option was specified, mount a new
* (private) instance of devpts. PTYs created in this instance are * (private) instance of devpts. PTYs created in this instance are
...@@ -345,20 +345,20 @@ static int compare_init_pts_sb(struct super_block *s, void *p) ...@@ -345,20 +345,20 @@ static int compare_init_pts_sb(struct super_block *s, void *p)
* semantics in devpts while preserving backward compatibility of the * semantics in devpts while preserving backward compatibility of the
* current 'single-namespace' semantics. i.e all mounts of devpts * current 'single-namespace' semantics. i.e all mounts of devpts
* without the 'newinstance' mount option should bind to the initial * without the 'newinstance' mount option should bind to the initial
* kernel mount, like get_sb_single(). * kernel mount, like mount_single().
* *
* Mounts with 'newinstance' option create a new, private namespace. * Mounts with 'newinstance' option create a new, private namespace.
* *
* NOTE: * NOTE:
* *
* For single-mount semantics, devpts cannot use get_sb_single(), * For single-mount semantics, devpts cannot use mount_single(),
* because get_sb_single()/sget() find and use the super-block from * because mount_single()/sget() find and use the super-block from
* the most recent mount of devpts. But that recent mount may be a * the most recent mount of devpts. But that recent mount may be a
* 'newinstance' mount and get_sb_single() would pick the newinstance * 'newinstance' mount and mount_single() would pick the newinstance
* super-block instead of the initial super-block. * super-block instead of the initial super-block.
*/ */
static int devpts_get_sb(struct file_system_type *fs_type, static struct dentry *devpts_mount(struct file_system_type *fs_type,
int flags, const char *dev_name, void *data, struct vfsmount *mnt) int flags, const char *dev_name, void *data)
{ {
int error; int error;
struct pts_mount_opts opts; struct pts_mount_opts opts;
...@@ -366,7 +366,7 @@ static int devpts_get_sb(struct file_system_type *fs_type, ...@@ -366,7 +366,7 @@ static int devpts_get_sb(struct file_system_type *fs_type,
error = parse_mount_options(data, PARSE_MOUNT, &opts); error = parse_mount_options(data, PARSE_MOUNT, &opts);
if (error) if (error)
return error; return ERR_PTR(error);
if (opts.newinstance) if (opts.newinstance)
s = sget(fs_type, NULL, set_anon_super, NULL); s = sget(fs_type, NULL, set_anon_super, NULL);
...@@ -374,7 +374,7 @@ static int devpts_get_sb(struct file_system_type *fs_type, ...@@ -374,7 +374,7 @@ static int devpts_get_sb(struct file_system_type *fs_type,
s = sget(fs_type, compare_init_pts_sb, set_anon_super, NULL); s = sget(fs_type, compare_init_pts_sb, set_anon_super, NULL);
if (IS_ERR(s)) if (IS_ERR(s))
return PTR_ERR(s); return ERR_CAST(s);
if (!s->s_root) { if (!s->s_root) {
s->s_flags = flags; s->s_flags = flags;
...@@ -390,13 +390,11 @@ static int devpts_get_sb(struct file_system_type *fs_type, ...@@ -390,13 +390,11 @@ static int devpts_get_sb(struct file_system_type *fs_type,
if (error) if (error)
goto out_undo_sget; goto out_undo_sget;
simple_set_mnt(mnt, s); return dget(s->s_root);
return 0;
out_undo_sget: out_undo_sget:
deactivate_locked_super(s); deactivate_locked_super(s);
return error; return ERR_PTR(error);
} }
#else #else
...@@ -404,10 +402,10 @@ static int devpts_get_sb(struct file_system_type *fs_type, ...@@ -404,10 +402,10 @@ static int devpts_get_sb(struct file_system_type *fs_type,
* This supports only the legacy single-instance semantics (no * This supports only the legacy single-instance semantics (no
* multiple-instance semantics) * multiple-instance semantics)
*/ */
static int devpts_get_sb(struct file_system_type *fs_type, int flags, static struct dentry *devpts_mount(struct file_system_type *fs_type, int flags,
const char *dev_name, void *data, struct vfsmount *mnt) const char *dev_name, void *data)
{ {
return get_sb_single(fs_type, flags, data, devpts_fill_super, mnt); return mount_single(fs_type, flags, data, devpts_fill_super);
} }
#endif #endif
...@@ -421,7 +419,7 @@ static void devpts_kill_sb(struct super_block *sb) ...@@ -421,7 +419,7 @@ static void devpts_kill_sb(struct super_block *sb)
static struct file_system_type devpts_fs_type = { static struct file_system_type devpts_fs_type = {
.name = "devpts", .name = "devpts",
.get_sb = devpts_get_sb, .mount = devpts_mount,
.kill_sb = devpts_kill_sb, .kill_sb = devpts_kill_sb,
}; };
......
...@@ -322,12 +322,10 @@ static int fuse_ctl_fill_super(struct super_block *sb, void *data, int silent) ...@@ -322,12 +322,10 @@ static int fuse_ctl_fill_super(struct super_block *sb, void *data, int silent)
return 0; return 0;
} }
static int fuse_ctl_get_sb(struct file_system_type *fs_type, int flags, static struct dentry *fuse_ctl_mount(struct file_system_type *fs_type,
const char *dev_name, void *raw_data, int flags, const char *dev_name, void *raw_data)
struct vfsmount *mnt)
{ {
return get_sb_single(fs_type, flags, raw_data, return mount_single(fs_type, flags, raw_data, fuse_ctl_fill_super);
fuse_ctl_fill_super, mnt);
} }
static void fuse_ctl_kill_sb(struct super_block *sb) static void fuse_ctl_kill_sb(struct super_block *sb)
...@@ -346,7 +344,7 @@ static void fuse_ctl_kill_sb(struct super_block *sb) ...@@ -346,7 +344,7 @@ static void fuse_ctl_kill_sb(struct super_block *sb)
static struct file_system_type fuse_ctl_fs_type = { static struct file_system_type fuse_ctl_fs_type = {
.owner = THIS_MODULE, .owner = THIS_MODULE,
.name = "fusectl", .name = "fusectl",
.get_sb = fuse_ctl_get_sb, .mount = fuse_ctl_mount,
.kill_sb = fuse_ctl_kill_sb, .kill_sb = fuse_ctl_kill_sb,
}; };
......
...@@ -1405,16 +1405,16 @@ static int nfsd_fill_super(struct super_block * sb, void * data, int silent) ...@@ -1405,16 +1405,16 @@ static int nfsd_fill_super(struct super_block * sb, void * data, int silent)
return simple_fill_super(sb, 0x6e667364, nfsd_files); return simple_fill_super(sb, 0x6e667364, nfsd_files);
} }
static int nfsd_get_sb(struct file_system_type *fs_type, static struct dentry *nfsd_mount(struct file_system_type *fs_type,
int flags, const char *dev_name, void *data, struct vfsmount *mnt) int flags, const char *dev_name, void *data)
{ {
return get_sb_single(fs_type, flags, data, nfsd_fill_super, mnt); return mount_single(fs_type, flags, data, nfsd_fill_super);
} }
static struct file_system_type nfsd_fs_type = { static struct file_system_type nfsd_fs_type = {
.owner = THIS_MODULE, .owner = THIS_MODULE,
.name = "nfsd", .name = "nfsd",
.get_sb = nfsd_get_sb, .mount = nfsd_mount,
.kill_sb = kill_litter_super, .kill_sb = kill_litter_super,
}; };
......
...@@ -415,16 +415,16 @@ static int openprom_fill_super(struct super_block *s, void *data, int silent) ...@@ -415,16 +415,16 @@ static int openprom_fill_super(struct super_block *s, void *data, int silent)
return ret; return ret;
} }
static int openprom_get_sb(struct file_system_type *fs_type, static struct dentry *openprom_mount(struct file_system_type *fs_type,
int flags, const char *dev_name, void *data, struct vfsmount *mnt) int flags, const char *dev_name, void *data)
{ {
return get_sb_single(fs_type, flags, data, openprom_fill_super, mnt); return mount_single(fs_type, flags, data, openprom_fill_super)
} }
static struct file_system_type openprom_fs_type = { static struct file_system_type openprom_fs_type = {
.owner = THIS_MODULE, .owner = THIS_MODULE,
.name = "openpromfs", .name = "openpromfs",
.get_sb = openprom_get_sb, .mount = openprom_mount,
.kill_sb = kill_anon_super, .kill_sb = kill_anon_super,
}; };
......
...@@ -900,29 +900,42 @@ static int compare_single(struct super_block *s, void *p) ...@@ -900,29 +900,42 @@ static int compare_single(struct super_block *s, void *p)
return 1; return 1;
} }
int get_sb_single(struct file_system_type *fs_type, struct dentry *mount_single(struct file_system_type *fs_type,
int flags, void *data, int flags, void *data,
int (*fill_super)(struct super_block *, void *, int), int (*fill_super)(struct super_block *, void *, int))
struct vfsmount *mnt)
{ {
struct super_block *s; struct super_block *s;
int error; int error;
s = sget(fs_type, compare_single, set_anon_super, NULL); s = sget(fs_type, compare_single, set_anon_super, NULL);
if (IS_ERR(s)) if (IS_ERR(s))
return PTR_ERR(s); return ERR_CAST(s);
if (!s->s_root) { if (!s->s_root) {
s->s_flags = flags; s->s_flags = flags;
error = fill_super(s, data, flags & MS_SILENT ? 1 : 0); error = fill_super(s, data, flags & MS_SILENT ? 1 : 0);
if (error) { if (error) {
deactivate_locked_super(s); deactivate_locked_super(s);
return error; return ERR_PTR(error);
} }
s->s_flags |= MS_ACTIVE; s->s_flags |= MS_ACTIVE;
} else { } else {
do_remount_sb(s, flags, data, 0); do_remount_sb(s, flags, data, 0);
} }
simple_set_mnt(mnt, s); return dget(s->s_root);
}
EXPORT_SYMBOL(mount_single);
int get_sb_single(struct file_system_type *fs_type,
int flags, void *data,
int (*fill_super)(struct super_block *, void *, int),
struct vfsmount *mnt)
{
struct dentry *root;
root = mount_single(fs_type, flags, data, fill_super);
if (IS_ERR(root))
return PTR_ERR(root);
mnt->mnt_root = root;
mnt->mnt_sb = root->d_sb;
return 0; return 0;
} }
......
...@@ -1799,6 +1799,9 @@ extern int get_sb_bdev(struct file_system_type *fs_type, ...@@ -1799,6 +1799,9 @@ extern int get_sb_bdev(struct file_system_type *fs_type,
int flags, const char *dev_name, void *data, int flags, const char *dev_name, void *data,
int (*fill_super)(struct super_block *, void *, int), int (*fill_super)(struct super_block *, void *, int),
struct vfsmount *mnt); struct vfsmount *mnt);
extern struct dentry *mount_single(struct file_system_type *fs_type,
int flags, void *data,
int (*fill_super)(struct super_block *, void *, int));
extern int get_sb_single(struct file_system_type *fs_type, extern int get_sb_single(struct file_system_type *fs_type,
int flags, void *data, int flags, void *data,
int (*fill_super)(struct super_block *, void *, int), int (*fill_super)(struct super_block *, void *, int),
......
...@@ -28,7 +28,7 @@ ...@@ -28,7 +28,7 @@
#include <linux/sunrpc/rpc_pipe_fs.h> #include <linux/sunrpc/rpc_pipe_fs.h>
#include <linux/sunrpc/cache.h> #include <linux/sunrpc/cache.h>
static struct vfsmount *rpc_mount __read_mostly; static struct vfsmount *rpc_mnt __read_mostly;
static int rpc_mount_count; static int rpc_mount_count;
static struct file_system_type rpc_pipe_fs_type; static struct file_system_type rpc_pipe_fs_type;
...@@ -417,16 +417,16 @@ struct vfsmount *rpc_get_mount(void) ...@@ -417,16 +417,16 @@ struct vfsmount *rpc_get_mount(void)
{ {
int err; int err;
err = simple_pin_fs(&rpc_pipe_fs_type, &rpc_mount, &rpc_mount_count); err = simple_pin_fs(&rpc_pipe_fs_type, &rpc_mnt, &rpc_mount_count);
if (err != 0) if (err != 0)
return ERR_PTR(err); return ERR_PTR(err);
return rpc_mount; return rpc_mnt;
} }
EXPORT_SYMBOL_GPL(rpc_get_mount); EXPORT_SYMBOL_GPL(rpc_get_mount);
void rpc_put_mount(void) void rpc_put_mount(void)
{ {
simple_release_fs(&rpc_mount, &rpc_mount_count); simple_release_fs(&rpc_mnt, &rpc_mount_count);
} }
EXPORT_SYMBOL_GPL(rpc_put_mount); EXPORT_SYMBOL_GPL(rpc_put_mount);
...@@ -1018,17 +1018,17 @@ rpc_fill_super(struct super_block *sb, void *data, int silent) ...@@ -1018,17 +1018,17 @@ rpc_fill_super(struct super_block *sb, void *data, int silent)
return 0; return 0;
} }
static int static struct dentry *
rpc_get_sb(struct file_system_type *fs_type, rpc_mount(struct file_system_type *fs_type,
int flags, const char *dev_name, void *data, struct vfsmount *mnt) int flags, const char *dev_name, void *data)
{ {
return get_sb_single(fs_type, flags, data, rpc_fill_super, mnt); return mount_single(fs_type, flags, data, rpc_fill_super);
} }
static struct file_system_type rpc_pipe_fs_type = { static struct file_system_type rpc_pipe_fs_type = {
.owner = THIS_MODULE, .owner = THIS_MODULE,
.name = "rpc_pipefs", .name = "rpc_pipefs",
.get_sb = rpc_get_sb, .mount = rpc_mount,
.kill_sb = kill_litter_super, .kill_sb = kill_litter_super,
}; };
......
...@@ -131,17 +131,17 @@ static int fill_super(struct super_block *sb, void *data, int silent) ...@@ -131,17 +131,17 @@ static int fill_super(struct super_block *sb, void *data, int silent)
return simple_fill_super(sb, SECURITYFS_MAGIC, files); return simple_fill_super(sb, SECURITYFS_MAGIC, files);
} }
static int get_sb(struct file_system_type *fs_type, static struct dentry *get_sb(struct file_system_type *fs_type,
int flags, const char *dev_name, int flags, const char *dev_name,
void *data, struct vfsmount *mnt) void *data)
{ {
return get_sb_single(fs_type, flags, data, fill_super, mnt); return mount_single(fs_type, flags, data, fill_super);
} }
static struct file_system_type fs_type = { static struct file_system_type fs_type = {
.owner = THIS_MODULE, .owner = THIS_MODULE,
.name = "securityfs", .name = "securityfs",
.get_sb = get_sb, .mount = get_sb,
.kill_sb = kill_litter_super, .kill_sb = kill_litter_super,
}; };
......
...@@ -1909,16 +1909,15 @@ static int sel_fill_super(struct super_block *sb, void *data, int silent) ...@@ -1909,16 +1909,15 @@ static int sel_fill_super(struct super_block *sb, void *data, int silent)
goto out; goto out;
} }
static int sel_get_sb(struct file_system_type *fs_type, static struct dentry *sel_mount(struct file_system_type *fs_type,
int flags, const char *dev_name, void *data, int flags, const char *dev_name, void *data)
struct vfsmount *mnt)
{ {
return get_sb_single(fs_type, flags, data, sel_fill_super, mnt); return mount_single(fs_type, flags, data, sel_fill_super);
} }
static struct file_system_type sel_fs_type = { static struct file_system_type sel_fs_type = {
.name = "selinuxfs", .name = "selinuxfs",
.get_sb = sel_get_sb, .mount = sel_mount,
.kill_sb = kill_litter_super, .kill_sb = kill_litter_super,
}; };
......
...@@ -1310,27 +1310,25 @@ static int smk_fill_super(struct super_block *sb, void *data, int silent) ...@@ -1310,27 +1310,25 @@ static int smk_fill_super(struct super_block *sb, void *data, int silent)
} }
/** /**
* smk_get_sb - get the smackfs superblock * smk_mount - get the smackfs superblock
* @fs_type: passed along without comment * @fs_type: passed along without comment
* @flags: passed along without comment * @flags: passed along without comment
* @dev_name: passed along without comment * @dev_name: passed along without comment
* @data: passed along without comment * @data: passed along without comment
* @mnt: passed along without comment
* *
* Just passes everything along. * Just passes everything along.
* *
* Returns what the lower level code does. * Returns what the lower level code does.
*/ */
static int smk_get_sb(struct file_system_type *fs_type, static struct dentry *smk_mount(struct file_system_type *fs_type,
int flags, const char *dev_name, void *data, int flags, const char *dev_name, void *data)
struct vfsmount *mnt)
{ {
return get_sb_single(fs_type, flags, data, smk_fill_super, mnt); return mount_single(fs_type, flags, data, smk_fill_super);
} }
static struct file_system_type smk_fs_type = { static struct file_system_type smk_fs_type = {
.name = "smackfs", .name = "smackfs",
.get_sb = smk_get_sb, .mount = smk_mount,
.kill_sb = kill_litter_super, .kill_sb = kill_litter_super,
}; };
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册