提交 152a0836 编写于 作者: A Al Viro

new helper: mount_bdev()

... and switch of the obvious get_sb_bdev() users to ->mount()
Signed-off-by: NAl Viro <viro@zeniv.linux.org.uk>
上级 c96e41e9
...@@ -490,17 +490,16 @@ static int adfs_fill_super(struct super_block *sb, void *data, int silent) ...@@ -490,17 +490,16 @@ static int adfs_fill_super(struct super_block *sb, void *data, int silent)
return -EINVAL; return -EINVAL;
} }
static int adfs_get_sb(struct file_system_type *fs_type, static struct dentry *adfs_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_bdev(fs_type, flags, dev_name, data, adfs_fill_super, return mount_bdev(fs_type, flags, dev_name, data, adfs_fill_super);
mnt);
} }
static struct file_system_type adfs_fs_type = { static struct file_system_type adfs_fs_type = {
.owner = THIS_MODULE, .owner = THIS_MODULE,
.name = "adfs", .name = "adfs",
.get_sb = adfs_get_sb, .mount = adfs_mount,
.kill_sb = kill_block_super, .kill_sb = kill_block_super,
.fs_flags = FS_REQUIRES_DEV, .fs_flags = FS_REQUIRES_DEV,
}; };
......
...@@ -573,17 +573,16 @@ affs_statfs(struct dentry *dentry, struct kstatfs *buf) ...@@ -573,17 +573,16 @@ affs_statfs(struct dentry *dentry, struct kstatfs *buf)
return 0; return 0;
} }
static int affs_get_sb(struct file_system_type *fs_type, static struct dentry *affs_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_bdev(fs_type, flags, dev_name, data, affs_fill_super, return mount_bdev(fs_type, flags, dev_name, data, affs_fill_super);
mnt);
} }
static struct file_system_type affs_fs_type = { static struct file_system_type affs_fs_type = {
.owner = THIS_MODULE, .owner = THIS_MODULE,
.name = "affs", .name = "affs",
.get_sb = affs_get_sb, .mount = affs_mount,
.kill_sb = kill_block_super, .kill_sb = kill_block_super,
.fs_flags = FS_REQUIRES_DEV, .fs_flags = FS_REQUIRES_DEV,
}; };
......
...@@ -913,18 +913,17 @@ befs_statfs(struct dentry *dentry, struct kstatfs *buf) ...@@ -913,18 +913,17 @@ befs_statfs(struct dentry *dentry, struct kstatfs *buf)
return 0; return 0;
} }
static int static struct dentry *
befs_get_sb(struct file_system_type *fs_type, int flags, const char *dev_name, befs_mount(struct file_system_type *fs_type, int flags, const char *dev_name,
void *data, struct vfsmount *mnt) void *data)
{ {
return get_sb_bdev(fs_type, flags, dev_name, data, befs_fill_super, return mount_bdev(fs_type, flags, dev_name, data, befs_fill_super);
mnt);
} }
static struct file_system_type befs_fs_type = { static struct file_system_type befs_fs_type = {
.owner = THIS_MODULE, .owner = THIS_MODULE,
.name = "befs", .name = "befs",
.get_sb = befs_get_sb, .mount = befs_mount,
.kill_sb = kill_block_super, .kill_sb = kill_block_super,
.fs_flags = FS_REQUIRES_DEV, .fs_flags = FS_REQUIRES_DEV,
}; };
......
...@@ -450,16 +450,16 @@ static int bfs_fill_super(struct super_block *s, void *data, int silent) ...@@ -450,16 +450,16 @@ static int bfs_fill_super(struct super_block *s, void *data, int silent)
return ret; return ret;
} }
static int bfs_get_sb(struct file_system_type *fs_type, static struct dentry *bfs_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_bdev(fs_type, flags, dev_name, data, bfs_fill_super, mnt); return mount_bdev(fs_type, flags, dev_name, data, bfs_fill_super);
} }
static struct file_system_type bfs_fs_type = { static struct file_system_type bfs_fs_type = {
.owner = THIS_MODULE, .owner = THIS_MODULE,
.name = "bfs", .name = "bfs",
.get_sb = bfs_get_sb, .mount = bfs_mount,
.kill_sb = kill_block_super, .kill_sb = kill_block_super,
.fs_flags = FS_REQUIRES_DEV, .fs_flags = FS_REQUIRES_DEV,
}; };
......
...@@ -533,17 +533,16 @@ static const struct super_operations cramfs_ops = { ...@@ -533,17 +533,16 @@ static const struct super_operations cramfs_ops = {
.statfs = cramfs_statfs, .statfs = cramfs_statfs,
}; };
static int cramfs_get_sb(struct file_system_type *fs_type, static struct dentry *cramfs_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_bdev(fs_type, flags, dev_name, data, cramfs_fill_super, return mount_bdev(fs_type, flags, dev_name, data, cramfs_fill_super);
mnt);
} }
static struct file_system_type cramfs_fs_type = { static struct file_system_type cramfs_fs_type = {
.owner = THIS_MODULE, .owner = THIS_MODULE,
.name = "cramfs", .name = "cramfs",
.get_sb = cramfs_get_sb, .mount = cramfs_mount,
.kill_sb = kill_block_super, .kill_sb = kill_block_super,
.fs_flags = FS_REQUIRES_DEV, .fs_flags = FS_REQUIRES_DEV,
}; };
......
...@@ -20,16 +20,16 @@ ...@@ -20,16 +20,16 @@
static int efs_statfs(struct dentry *dentry, struct kstatfs *buf); static int efs_statfs(struct dentry *dentry, struct kstatfs *buf);
static int efs_fill_super(struct super_block *s, void *d, int silent); static int efs_fill_super(struct super_block *s, void *d, int silent);
static int efs_get_sb(struct file_system_type *fs_type, static struct dentry *efs_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_bdev(fs_type, flags, dev_name, data, efs_fill_super, mnt); return mount_bdev(fs_type, flags, dev_name, data, efs_fill_super);
} }
static struct file_system_type efs_fs_type = { static struct file_system_type efs_fs_type = {
.owner = THIS_MODULE, .owner = THIS_MODULE,
.name = "efs", .name = "efs",
.get_sb = efs_get_sb, .mount = efs_mount,
.kill_sb = kill_block_super, .kill_sb = kill_block_super,
.fs_flags = FS_REQUIRES_DEV, .fs_flags = FS_REQUIRES_DEV,
}; };
......
...@@ -1356,10 +1356,10 @@ static int ext2_statfs (struct dentry * dentry, struct kstatfs * buf) ...@@ -1356,10 +1356,10 @@ static int ext2_statfs (struct dentry * dentry, struct kstatfs * buf)
return 0; return 0;
} }
static int ext2_get_sb(struct file_system_type *fs_type, static struct dentry *ext2_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_bdev(fs_type, flags, dev_name, data, ext2_fill_super, mnt); return mount_bdev(fs_type, flags, dev_name, data, ext2_fill_super);
} }
#ifdef CONFIG_QUOTA #ifdef CONFIG_QUOTA
...@@ -1473,7 +1473,7 @@ static ssize_t ext2_quota_write(struct super_block *sb, int type, ...@@ -1473,7 +1473,7 @@ static ssize_t ext2_quota_write(struct super_block *sb, int type,
static struct file_system_type ext2_fs_type = { static struct file_system_type ext2_fs_type = {
.owner = THIS_MODULE, .owner = THIS_MODULE,
.name = "ext2", .name = "ext2",
.get_sb = ext2_get_sb, .mount = ext2_mount,
.kill_sb = kill_block_super, .kill_sb = kill_block_super,
.fs_flags = FS_REQUIRES_DEV, .fs_flags = FS_REQUIRES_DEV,
}; };
......
...@@ -3020,16 +3020,16 @@ static ssize_t ext3_quota_write(struct super_block *sb, int type, ...@@ -3020,16 +3020,16 @@ static ssize_t ext3_quota_write(struct super_block *sb, int type,
#endif #endif
static int ext3_get_sb(struct file_system_type *fs_type, static struct dentry *ext3_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_bdev(fs_type, flags, dev_name, data, ext3_fill_super, mnt); return mount_bdev(fs_type, flags, dev_name, data, ext3_fill_super);
} }
static struct file_system_type ext3_fs_type = { static struct file_system_type ext3_fs_type = {
.owner = THIS_MODULE, .owner = THIS_MODULE,
.name = "ext3", .name = "ext3",
.get_sb = ext3_get_sb, .mount = ext3_mount,
.kill_sb = kill_block_super, .kill_sb = kill_block_super,
.fs_flags = FS_REQUIRES_DEV, .fs_flags = FS_REQUIRES_DEV,
}; };
......
...@@ -73,8 +73,8 @@ static int ext4_statfs(struct dentry *dentry, struct kstatfs *buf); ...@@ -73,8 +73,8 @@ static int ext4_statfs(struct dentry *dentry, struct kstatfs *buf);
static int ext4_unfreeze(struct super_block *sb); static int ext4_unfreeze(struct super_block *sb);
static void ext4_write_super(struct super_block *sb); static void ext4_write_super(struct super_block *sb);
static int ext4_freeze(struct super_block *sb); static int ext4_freeze(struct super_block *sb);
static int ext4_get_sb(struct file_system_type *fs_type, int flags, static struct dentry *ext4_mount(struct file_system_type *fs_type, int flags,
const char *dev_name, void *data, struct vfsmount *mnt); const char *dev_name, void *data);
static void ext4_destroy_lazyinit_thread(void); static void ext4_destroy_lazyinit_thread(void);
static void ext4_unregister_li_request(struct super_block *sb); static void ext4_unregister_li_request(struct super_block *sb);
...@@ -82,7 +82,7 @@ static void ext4_unregister_li_request(struct super_block *sb); ...@@ -82,7 +82,7 @@ static void ext4_unregister_li_request(struct super_block *sb);
static struct file_system_type ext3_fs_type = { static struct file_system_type ext3_fs_type = {
.owner = THIS_MODULE, .owner = THIS_MODULE,
.name = "ext3", .name = "ext3",
.get_sb = ext4_get_sb, .mount = ext4_mount,
.kill_sb = kill_block_super, .kill_sb = kill_block_super,
.fs_flags = FS_REQUIRES_DEV, .fs_flags = FS_REQUIRES_DEV,
}; };
...@@ -4667,17 +4667,17 @@ static ssize_t ext4_quota_write(struct super_block *sb, int type, ...@@ -4667,17 +4667,17 @@ static ssize_t ext4_quota_write(struct super_block *sb, int type,
#endif #endif
static int ext4_get_sb(struct file_system_type *fs_type, int flags, static struct dentry *ext4_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_bdev(fs_type, flags, dev_name, data, ext4_fill_super,mnt); return mount_bdev(fs_type, flags, dev_name, data, ext4_fill_super);
} }
#if !defined(CONFIG_EXT2_FS) && !defined(CONFIG_EXT2_FS_MODULE) && defined(CONFIG_EXT4_USE_FOR_EXT23) #if !defined(CONFIG_EXT2_FS) && !defined(CONFIG_EXT2_FS_MODULE) && defined(CONFIG_EXT4_USE_FOR_EXT23)
static struct file_system_type ext2_fs_type = { static struct file_system_type ext2_fs_type = {
.owner = THIS_MODULE, .owner = THIS_MODULE,
.name = "ext2", .name = "ext2",
.get_sb = ext4_get_sb, .mount = ext4_mount,
.kill_sb = kill_block_super, .kill_sb = kill_block_super,
.fs_flags = FS_REQUIRES_DEV, .fs_flags = FS_REQUIRES_DEV,
}; };
...@@ -4722,7 +4722,7 @@ static inline void unregister_as_ext3(void) { } ...@@ -4722,7 +4722,7 @@ static inline void unregister_as_ext3(void) { }
static struct file_system_type ext4_fs_type = { static struct file_system_type ext4_fs_type = {
.owner = THIS_MODULE, .owner = THIS_MODULE,
.name = "ext4", .name = "ext4",
.get_sb = ext4_get_sb, .mount = ext4_mount,
.kill_sb = kill_block_super, .kill_sb = kill_block_super,
.fs_flags = FS_REQUIRES_DEV, .fs_flags = FS_REQUIRES_DEV,
}; };
......
...@@ -675,18 +675,17 @@ static int msdos_fill_super(struct super_block *sb, void *data, int silent) ...@@ -675,18 +675,17 @@ static int msdos_fill_super(struct super_block *sb, void *data, int silent)
return 0; return 0;
} }
static int msdos_get_sb(struct file_system_type *fs_type, static struct dentry *msdos_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_bdev(fs_type, flags, dev_name, data, msdos_fill_super, return mount_bdev(fs_type, flags, dev_name, data, msdos_fill_super);
mnt);
} }
static struct file_system_type msdos_fs_type = { static struct file_system_type msdos_fs_type = {
.owner = THIS_MODULE, .owner = THIS_MODULE,
.name = "msdos", .name = "msdos",
.get_sb = msdos_get_sb, .mount = msdos_mount,
.kill_sb = kill_block_super, .kill_sb = kill_block_super,
.fs_flags = FS_REQUIRES_DEV, .fs_flags = FS_REQUIRES_DEV,
}; };
......
...@@ -1071,18 +1071,17 @@ static int vfat_fill_super(struct super_block *sb, void *data, int silent) ...@@ -1071,18 +1071,17 @@ static int vfat_fill_super(struct super_block *sb, void *data, int silent)
return 0; return 0;
} }
static int vfat_get_sb(struct file_system_type *fs_type, static struct dentry *vfat_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_bdev(fs_type, flags, dev_name, data, vfat_fill_super, return mount_bdev(fs_type, flags, dev_name, data, vfat_fill_super);
mnt);
} }
static struct file_system_type vfat_fs_type = { static struct file_system_type vfat_fs_type = {
.owner = THIS_MODULE, .owner = THIS_MODULE,
.name = "vfat", .name = "vfat",
.get_sb = vfat_get_sb, .mount = vfat_mount,
.kill_sb = kill_block_super, .kill_sb = kill_block_super,
.fs_flags = FS_REQUIRES_DEV, .fs_flags = FS_REQUIRES_DEV,
}; };
......
...@@ -246,17 +246,16 @@ static int vxfs_fill_super(struct super_block *sbp, void *dp, int silent) ...@@ -246,17 +246,16 @@ static int vxfs_fill_super(struct super_block *sbp, void *dp, int silent)
/* /*
* The usual module blurb. * The usual module blurb.
*/ */
static int vxfs_get_sb(struct file_system_type *fs_type, static struct dentry *vxfs_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_bdev(fs_type, flags, dev_name, data, vxfs_fill_super, return mount_bdev(fs_type, flags, dev_name, data, vxfs_fill_super);
mnt);
} }
static struct file_system_type vxfs_fs_type = { static struct file_system_type vxfs_fs_type = {
.owner = THIS_MODULE, .owner = THIS_MODULE,
.name = "vxfs", .name = "vxfs",
.get_sb = vxfs_get_sb, .mount = vxfs_mount,
.kill_sb = kill_block_super, .kill_sb = kill_block_super,
.fs_flags = FS_REQUIRES_DEV, .fs_flags = FS_REQUIRES_DEV,
}; };
......
...@@ -1070,12 +1070,11 @@ static struct file_system_type fuse_fs_type = { ...@@ -1070,12 +1070,11 @@ static struct file_system_type fuse_fs_type = {
}; };
#ifdef CONFIG_BLOCK #ifdef CONFIG_BLOCK
static int fuse_get_sb_blk(struct file_system_type *fs_type, static struct dentry *fuse_mount_blk(struct file_system_type *fs_type,
int flags, const char *dev_name, int flags, const char *dev_name,
void *raw_data, struct vfsmount *mnt) void *raw_data)
{ {
return get_sb_bdev(fs_type, flags, dev_name, raw_data, fuse_fill_super, return mount_bdev(fs_type, flags, dev_name, raw_data, fuse_fill_super);
mnt);
} }
static void fuse_kill_sb_blk(struct super_block *sb) static void fuse_kill_sb_blk(struct super_block *sb)
...@@ -1094,7 +1093,7 @@ static void fuse_kill_sb_blk(struct super_block *sb) ...@@ -1094,7 +1093,7 @@ static void fuse_kill_sb_blk(struct super_block *sb)
static struct file_system_type fuseblk_fs_type = { static struct file_system_type fuseblk_fs_type = {
.owner = THIS_MODULE, .owner = THIS_MODULE,
.name = "fuseblk", .name = "fuseblk",
.get_sb = fuse_get_sb_blk, .mount = fuse_mount_blk,
.kill_sb = fuse_kill_sb_blk, .kill_sb = fuse_kill_sb_blk,
.fs_flags = FS_REQUIRES_DEV | FS_HAS_SUBTYPE, .fs_flags = FS_REQUIRES_DEV | FS_HAS_SUBTYPE,
}; };
......
...@@ -441,17 +441,16 @@ static int hfs_fill_super(struct super_block *sb, void *data, int silent) ...@@ -441,17 +441,16 @@ static int hfs_fill_super(struct super_block *sb, void *data, int silent)
return res; return res;
} }
static int hfs_get_sb(struct file_system_type *fs_type, static struct dentry *hfs_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_bdev(fs_type, flags, dev_name, data, hfs_fill_super, mnt); return mount_bdev(fs_type, flags, dev_name, data, hfs_fill_super);
} }
static struct file_system_type hfs_fs_type = { static struct file_system_type hfs_fs_type = {
.owner = THIS_MODULE, .owner = THIS_MODULE,
.name = "hfs", .name = "hfs",
.get_sb = hfs_get_sb, .mount = hfs_mount,
.kill_sb = kill_block_super, .kill_sb = kill_block_super,
.fs_flags = FS_REQUIRES_DEV, .fs_flags = FS_REQUIRES_DEV,
}; };
......
...@@ -495,18 +495,16 @@ static void hfsplus_destroy_inode(struct inode *inode) ...@@ -495,18 +495,16 @@ static void hfsplus_destroy_inode(struct inode *inode)
#define HFSPLUS_INODE_SIZE sizeof(struct hfsplus_inode_info) #define HFSPLUS_INODE_SIZE sizeof(struct hfsplus_inode_info)
static int hfsplus_get_sb(struct file_system_type *fs_type, static struct dentry *hfsplus_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_bdev(fs_type, flags, dev_name, data, hfsplus_fill_super, return mount_bdev(fs_type, flags, dev_name, data, hfsplus_fill_super);
mnt);
} }
static struct file_system_type hfsplus_fs_type = { static struct file_system_type hfsplus_fs_type = {
.owner = THIS_MODULE, .owner = THIS_MODULE,
.name = "hfsplus", .name = "hfsplus",
.get_sb = hfsplus_get_sb, .mount = hfsplus_mount,
.kill_sb = kill_block_super, .kill_sb = kill_block_super,
.fs_flags = FS_REQUIRES_DEV, .fs_flags = FS_REQUIRES_DEV,
}; };
......
...@@ -686,17 +686,16 @@ bail2: brelse(bh0); ...@@ -686,17 +686,16 @@ bail2: brelse(bh0);
return -EINVAL; return -EINVAL;
} }
static int hpfs_get_sb(struct file_system_type *fs_type, static struct dentry *hpfs_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_bdev(fs_type, flags, dev_name, data, hpfs_fill_super, return mount_bdev(fs_type, flags, dev_name, data, hpfs_fill_super);
mnt);
} }
static struct file_system_type hpfs_fs_type = { static struct file_system_type hpfs_fs_type = {
.owner = THIS_MODULE, .owner = THIS_MODULE,
.name = "hpfs", .name = "hpfs",
.get_sb = hpfs_get_sb, .mount = hpfs_mount,
.kill_sb = kill_block_super, .kill_sb = kill_block_super,
.fs_flags = FS_REQUIRES_DEV, .fs_flags = FS_REQUIRES_DEV,
}; };
......
...@@ -1507,17 +1507,16 @@ struct inode *isofs_iget(struct super_block *sb, ...@@ -1507,17 +1507,16 @@ struct inode *isofs_iget(struct super_block *sb,
return inode; return inode;
} }
static int isofs_get_sb(struct file_system_type *fs_type, static struct dentry *isofs_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_bdev(fs_type, flags, dev_name, data, isofs_fill_super, return mount_bdev(fs_type, flags, dev_name, data, isofs_fill_super);
mnt);
} }
static struct file_system_type iso9660_fs_type = { static struct file_system_type iso9660_fs_type = {
.owner = THIS_MODULE, .owner = THIS_MODULE,
.name = "iso9660", .name = "iso9660",
.get_sb = isofs_get_sb, .mount = isofs_mount,
.kill_sb = kill_block_super, .kill_sb = kill_block_super,
.fs_flags = FS_REQUIRES_DEV, .fs_flags = FS_REQUIRES_DEV,
}; };
......
...@@ -583,11 +583,10 @@ static int jfs_unfreeze(struct super_block *sb) ...@@ -583,11 +583,10 @@ static int jfs_unfreeze(struct super_block *sb)
return 0; return 0;
} }
static int jfs_get_sb(struct file_system_type *fs_type, static struct dentry *jfs_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_bdev(fs_type, flags, dev_name, data, jfs_fill_super, return mount_bdev(fs_type, flags, dev_name, data, jfs_fill_super);
mnt);
} }
static int jfs_sync_fs(struct super_block *sb, int wait) static int jfs_sync_fs(struct super_block *sb, int wait)
...@@ -770,7 +769,7 @@ static const struct export_operations jfs_export_operations = { ...@@ -770,7 +769,7 @@ static const struct export_operations jfs_export_operations = {
static struct file_system_type jfs_fs_type = { static struct file_system_type jfs_fs_type = {
.owner = THIS_MODULE, .owner = THIS_MODULE,
.name = "jfs", .name = "jfs",
.get_sb = jfs_get_sb, .mount = jfs_do_mount,
.kill_sb = kill_block_super, .kill_sb = kill_block_super,
.fs_flags = FS_REQUIRES_DEV, .fs_flags = FS_REQUIRES_DEV,
}; };
......
...@@ -614,17 +614,16 @@ void minix_truncate(struct inode * inode) ...@@ -614,17 +614,16 @@ void minix_truncate(struct inode * inode)
V2_minix_truncate(inode); V2_minix_truncate(inode);
} }
static int minix_get_sb(struct file_system_type *fs_type, static struct dentry *minix_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_bdev(fs_type, flags, dev_name, data, minix_fill_super, return mount_bdev(fs_type, flags, dev_name, data, minix_fill_super);
mnt);
} }
static struct file_system_type minix_fs_type = { static struct file_system_type minix_fs_type = {
.owner = THIS_MODULE, .owner = THIS_MODULE,
.name = "minix", .name = "minix",
.get_sb = minix_get_sb, .mount = minix_mount,
.kill_sb = kill_block_super, .kill_sb = kill_block_super,
.fs_flags = FS_REQUIRES_DEV, .fs_flags = FS_REQUIRES_DEV,
}; };
......
...@@ -3059,17 +3059,16 @@ struct kmem_cache *ntfs_index_ctx_cache; ...@@ -3059,17 +3059,16 @@ struct kmem_cache *ntfs_index_ctx_cache;
/* Driver wide mutex. */ /* Driver wide mutex. */
DEFINE_MUTEX(ntfs_lock); DEFINE_MUTEX(ntfs_lock);
static int ntfs_get_sb(struct file_system_type *fs_type, static struct dentry *ntfs_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_bdev(fs_type, flags, dev_name, data, ntfs_fill_super, return mount_bdev(fs_type, flags, dev_name, data, ntfs_fill_super);
mnt);
} }
static struct file_system_type ntfs_fs_type = { static struct file_system_type ntfs_fs_type = {
.owner = THIS_MODULE, .owner = THIS_MODULE,
.name = "ntfs", .name = "ntfs",
.get_sb = ntfs_get_sb, .mount = ntfs_mount,
.kill_sb = kill_block_super, .kill_sb = kill_block_super,
.fs_flags = FS_REQUIRES_DEV, .fs_flags = FS_REQUIRES_DEV,
}; };
......
...@@ -1236,14 +1236,12 @@ static int ocfs2_fill_super(struct super_block *sb, void *data, int silent) ...@@ -1236,14 +1236,12 @@ static int ocfs2_fill_super(struct super_block *sb, void *data, int silent)
return status; return status;
} }
static int ocfs2_get_sb(struct file_system_type *fs_type, static struct dentry *ocfs2_mount(struct file_system_type *fs_type,
int flags, int flags,
const char *dev_name, const char *dev_name,
void *data, void *data)
struct vfsmount *mnt)
{ {
return get_sb_bdev(fs_type, flags, dev_name, data, ocfs2_fill_super, return mount_bdev(fs_type, flags, dev_name, data, ocfs2_fill_super);
mnt);
} }
static void ocfs2_kill_sb(struct super_block *sb) static void ocfs2_kill_sb(struct super_block *sb)
...@@ -1267,8 +1265,7 @@ static void ocfs2_kill_sb(struct super_block *sb) ...@@ -1267,8 +1265,7 @@ static void ocfs2_kill_sb(struct super_block *sb)
static struct file_system_type ocfs2_fs_type = { static struct file_system_type ocfs2_fs_type = {
.owner = THIS_MODULE, .owner = THIS_MODULE,
.name = "ocfs2", .name = "ocfs2",
.get_sb = ocfs2_get_sb, /* is this called when we mount .mount = ocfs2_mount,
* the fs? */
.kill_sb = ocfs2_kill_sb, .kill_sb = ocfs2_kill_sb,
.fs_flags = FS_REQUIRES_DEV|FS_RENAME_DOES_D_MOVE, .fs_flags = FS_REQUIRES_DEV|FS_RENAME_DOES_D_MOVE,
......
...@@ -557,17 +557,16 @@ static int omfs_fill_super(struct super_block *sb, void *data, int silent) ...@@ -557,17 +557,16 @@ static int omfs_fill_super(struct super_block *sb, void *data, int silent)
return ret; return ret;
} }
static int omfs_get_sb(struct file_system_type *fs_type, static struct dentry *omfs_mount(struct file_system_type *fs_type,
int flags, const char *dev_name, int flags, const char *dev_name, void *data)
void *data, struct vfsmount *m)
{ {
return get_sb_bdev(fs_type, flags, dev_name, data, omfs_fill_super, m); return mount_bdev(fs_type, flags, dev_name, data, omfs_fill_super);
} }
static struct file_system_type omfs_fs_type = { static struct file_system_type omfs_fs_type = {
.owner = THIS_MODULE, .owner = THIS_MODULE,
.name = "omfs", .name = "omfs",
.get_sb = omfs_get_sb, .mount = omfs_mount,
.kill_sb = kill_block_super, .kill_sb = kill_block_super,
.fs_flags = FS_REQUIRES_DEV, .fs_flags = FS_REQUIRES_DEV,
}; };
......
...@@ -454,17 +454,16 @@ static void destroy_inodecache(void) ...@@ -454,17 +454,16 @@ static void destroy_inodecache(void)
kmem_cache_destroy(qnx4_inode_cachep); kmem_cache_destroy(qnx4_inode_cachep);
} }
static int qnx4_get_sb(struct file_system_type *fs_type, static struct dentry *qnx4_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_bdev(fs_type, flags, dev_name, data, qnx4_fill_super, return mount_bdev(fs_type, flags, dev_name, data, qnx4_fill_super);
mnt);
} }
static struct file_system_type qnx4_fs_type = { static struct file_system_type qnx4_fs_type = {
.owner = THIS_MODULE, .owner = THIS_MODULE,
.name = "qnx4", .name = "qnx4",
.get_sb = qnx4_get_sb, .mount = qnx4_mount,
.kill_sb = kill_block_super, .kill_sb = kill_block_super,
.fs_flags = FS_REQUIRES_DEV, .fs_flags = FS_REQUIRES_DEV,
}; };
......
...@@ -2213,12 +2213,11 @@ static ssize_t reiserfs_quota_write(struct super_block *sb, int type, ...@@ -2213,12 +2213,11 @@ static ssize_t reiserfs_quota_write(struct super_block *sb, int type,
#endif #endif
static int get_super_block(struct file_system_type *fs_type, static struct dentry *get_super_block(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_bdev(fs_type, flags, dev_name, data, reiserfs_fill_super, return mount_bdev(fs_type, flags, dev_name, data, reiserfs_fill_super);
mnt);
} }
static int __init init_reiserfs_fs(void) static int __init init_reiserfs_fs(void)
...@@ -2253,7 +2252,7 @@ static void __exit exit_reiserfs_fs(void) ...@@ -2253,7 +2252,7 @@ static void __exit exit_reiserfs_fs(void)
struct file_system_type reiserfs_fs_type = { struct file_system_type reiserfs_fs_type = {
.owner = THIS_MODULE, .owner = THIS_MODULE,
.name = "reiserfs", .name = "reiserfs",
.get_sb = get_super_block, .mount = get_super_block,
.kill_sb = reiserfs_kill_sb, .kill_sb = reiserfs_kill_sb,
.fs_flags = FS_REQUIRES_DEV, .fs_flags = FS_REQUIRES_DEV,
}; };
......
...@@ -370,12 +370,10 @@ static void squashfs_put_super(struct super_block *sb) ...@@ -370,12 +370,10 @@ static void squashfs_put_super(struct super_block *sb)
} }
static int squashfs_get_sb(struct file_system_type *fs_type, int flags, static struct dentry *squashfs_mount(struct file_system_type *fs_type, int flags,
const char *dev_name, void *data, const char *dev_name, void *data)
struct vfsmount *mnt)
{ {
return get_sb_bdev(fs_type, flags, dev_name, data, squashfs_fill_super, return mount_bdev(fs_type, flags, dev_name, data, squashfs_fill_super);
mnt);
} }
...@@ -451,7 +449,7 @@ static void squashfs_destroy_inode(struct inode *inode) ...@@ -451,7 +449,7 @@ static void squashfs_destroy_inode(struct inode *inode)
static struct file_system_type squashfs_fs_type = { static struct file_system_type squashfs_fs_type = {
.owner = THIS_MODULE, .owner = THIS_MODULE,
.name = "squashfs", .name = "squashfs",
.get_sb = squashfs_get_sb, .mount = squashfs_mount,
.kill_sb = kill_block_super, .kill_sb = kill_block_super,
.fs_flags = FS_REQUIRES_DEV .fs_flags = FS_REQUIRES_DEV
}; };
......
...@@ -762,10 +762,9 @@ static int test_bdev_super(struct super_block *s, void *data) ...@@ -762,10 +762,9 @@ static int test_bdev_super(struct super_block *s, void *data)
return (void *)s->s_bdev == data; return (void *)s->s_bdev == data;
} }
int get_sb_bdev(struct file_system_type *fs_type, struct dentry *mount_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 block_device *bdev; struct block_device *bdev;
struct super_block *s; struct super_block *s;
...@@ -777,7 +776,7 @@ int get_sb_bdev(struct file_system_type *fs_type, ...@@ -777,7 +776,7 @@ int get_sb_bdev(struct file_system_type *fs_type,
bdev = open_bdev_exclusive(dev_name, mode, fs_type); bdev = open_bdev_exclusive(dev_name, mode, fs_type);
if (IS_ERR(bdev)) if (IS_ERR(bdev))
return PTR_ERR(bdev); return ERR_CAST(bdev);
/* /*
* once the super is inserted into the list by sget, s_umount * once the super is inserted into the list by sget, s_umount
...@@ -829,15 +828,30 @@ int get_sb_bdev(struct file_system_type *fs_type, ...@@ -829,15 +828,30 @@ int get_sb_bdev(struct file_system_type *fs_type,
bdev->bd_super = s; bdev->bd_super = s;
} }
simple_set_mnt(mnt, s); return dget(s->s_root);
return 0;
error_s: error_s:
error = PTR_ERR(s); error = PTR_ERR(s);
error_bdev: error_bdev:
close_bdev_exclusive(bdev, mode); close_bdev_exclusive(bdev, mode);
error: error:
return error; return ERR_PTR(error);
}
EXPORT_SYMBOL(mount_bdev);
int get_sb_bdev(struct file_system_type *fs_type,
int flags, const char *dev_name, void *data,
int (*fill_super)(struct super_block *, void *, int),
struct vfsmount *mnt)
{
struct dentry *root;
root = mount_bdev(fs_type, flags, dev_name, data, fill_super);
if (IS_ERR(root))
return PTR_ERR(root);
mnt->mnt_root = root;
mnt->mnt_sb = root->d_sb;
return 0;
} }
EXPORT_SYMBOL(get_sb_bdev); EXPORT_SYMBOL(get_sb_bdev);
......
...@@ -526,23 +526,22 @@ static int v7_fill_super(struct super_block *sb, void *data, int silent) ...@@ -526,23 +526,22 @@ static int v7_fill_super(struct super_block *sb, void *data, int silent)
/* Every kernel module contains stuff like this. */ /* Every kernel module contains stuff like this. */
static int sysv_get_sb(struct file_system_type *fs_type, static struct dentry *sysv_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_bdev(fs_type, flags, dev_name, data, sysv_fill_super, return mount_bdev(fs_type, flags, dev_name, data, sysv_fill_super);
mnt);
} }
static int v7_get_sb(struct file_system_type *fs_type, static struct dentry *v7_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_bdev(fs_type, flags, dev_name, data, v7_fill_super, mnt); return mount_bdev(fs_type, flags, dev_name, data, v7_fill_super);
} }
static struct file_system_type sysv_fs_type = { static struct file_system_type sysv_fs_type = {
.owner = THIS_MODULE, .owner = THIS_MODULE,
.name = "sysv", .name = "sysv",
.get_sb = sysv_get_sb, .mount = sysv_mount,
.kill_sb = kill_block_super, .kill_sb = kill_block_super,
.fs_flags = FS_REQUIRES_DEV, .fs_flags = FS_REQUIRES_DEV,
}; };
...@@ -550,7 +549,7 @@ static struct file_system_type sysv_fs_type = { ...@@ -550,7 +549,7 @@ static struct file_system_type sysv_fs_type = {
static struct file_system_type v7_fs_type = { static struct file_system_type v7_fs_type = {
.owner = THIS_MODULE, .owner = THIS_MODULE,
.name = "v7", .name = "v7",
.get_sb = v7_get_sb, .mount = v7_mount,
.kill_sb = kill_block_super, .kill_sb = kill_block_super,
.fs_flags = FS_REQUIRES_DEV, .fs_flags = FS_REQUIRES_DEV,
}; };
......
...@@ -107,17 +107,16 @@ struct logicalVolIntegrityDescImpUse *udf_sb_lvidiu(struct udf_sb_info *sbi) ...@@ -107,17 +107,16 @@ struct logicalVolIntegrityDescImpUse *udf_sb_lvidiu(struct udf_sb_info *sbi)
} }
/* UDF filesystem type */ /* UDF filesystem type */
static int udf_get_sb(struct file_system_type *fs_type, static struct dentry *udf_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_bdev(fs_type, flags, dev_name, data, udf_fill_super, mnt); return mount_bdev(fs_type, flags, dev_name, data, udf_fill_super);
} }
static struct file_system_type udf_fstype = { static struct file_system_type udf_fstype = {
.owner = THIS_MODULE, .owner = THIS_MODULE,
.name = "udf", .name = "udf",
.get_sb = udf_get_sb, .mount = udf_mount,
.kill_sb = kill_block_super, .kill_sb = kill_block_super,
.fs_flags = FS_REQUIRES_DEV, .fs_flags = FS_REQUIRES_DEV,
}; };
......
...@@ -1454,16 +1454,16 @@ static const struct super_operations ufs_super_ops = { ...@@ -1454,16 +1454,16 @@ static const struct super_operations ufs_super_ops = {
.show_options = ufs_show_options, .show_options = ufs_show_options,
}; };
static int ufs_get_sb(struct file_system_type *fs_type, static struct dentry *ufs_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_bdev(fs_type, flags, dev_name, data, ufs_fill_super, mnt); return mount_bdev(fs_type, flags, dev_name, data, ufs_fill_super);
} }
static struct file_system_type ufs_fs_type = { static struct file_system_type ufs_fs_type = {
.owner = THIS_MODULE, .owner = THIS_MODULE,
.name = "ufs", .name = "ufs",
.get_sb = ufs_get_sb, .mount = ufs_mount,
.kill_sb = kill_block_super, .kill_sb = kill_block_super,
.fs_flags = FS_REQUIRES_DEV, .fs_flags = FS_REQUIRES_DEV,
}; };
......
...@@ -1609,16 +1609,14 @@ xfs_fs_fill_super( ...@@ -1609,16 +1609,14 @@ xfs_fs_fill_super(
goto out_free_sb; goto out_free_sb;
} }
STATIC int STATIC struct dentry *
xfs_fs_get_sb( xfs_fs_mount(
struct file_system_type *fs_type, struct file_system_type *fs_type,
int flags, int flags,
const char *dev_name, const char *dev_name,
void *data, void *data)
struct vfsmount *mnt)
{ {
return get_sb_bdev(fs_type, flags, dev_name, data, xfs_fs_fill_super, return mount_bdev(fs_type, flags, dev_name, data, xfs_fs_fill_super);
mnt);
} }
static const struct super_operations xfs_super_operations = { static const struct super_operations xfs_super_operations = {
...@@ -1639,7 +1637,7 @@ static const struct super_operations xfs_super_operations = { ...@@ -1639,7 +1637,7 @@ static const struct super_operations xfs_super_operations = {
static struct file_system_type xfs_fs_type = { static struct file_system_type xfs_fs_type = {
.owner = THIS_MODULE, .owner = THIS_MODULE,
.name = "xfs", .name = "xfs",
.get_sb = xfs_fs_get_sb, .mount = xfs_fs_mount,
.kill_sb = kill_block_super, .kill_sb = kill_block_super,
.fs_flags = FS_REQUIRES_DEV, .fs_flags = FS_REQUIRES_DEV,
}; };
......
...@@ -1792,6 +1792,9 @@ struct file_system_type { ...@@ -1792,6 +1792,9 @@ struct file_system_type {
extern int get_sb_ns(struct file_system_type *fs_type, int flags, void *data, extern int get_sb_ns(struct file_system_type *fs_type, int flags, 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_bdev(struct file_system_type *fs_type,
int flags, const char *dev_name, void *data,
int (*fill_super)(struct super_block *, void *, int));
extern int get_sb_bdev(struct file_system_type *fs_type, 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),
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册