mount_pseudo(): drop 'name' argument, switch to d_make_root()

Once upon a time we used to set ->d_name of e.g. pipefs root
so that d_path() on pipes would work.  These days it's
completely pointless - dentries of pipes are not even connected
to pipefs root.  However, mount_pseudo() had set the root
dentry name (passed as the second argument) and callers
kept inventing names to pass to it.  Including those that
didn't *have* any non-root dentries to start with...

All of that had been pointless for about 8 years now; it's
time to get rid of that cargo-culting...

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
Al Viro 2019-05-20 13:44:57 +01:00
Родитель 1a6e9e76b7
Коммит 1f58bb18f6
17 изменённых файлов: 22 добавлений и 36 удалений

Просмотреть файл

@ -602,7 +602,7 @@ static const struct dentry_operations pfmfs_dentry_operations;
static struct dentry * static struct dentry *
pfmfs_mount(struct file_system_type *fs_type, int flags, const char *dev_name, void *data) pfmfs_mount(struct file_system_type *fs_type, int flags, const char *dev_name, void *data)
{ {
return mount_pseudo(fs_type, "pfm:", NULL, &pfmfs_dentry_operations, return mount_pseudo(fs_type, NULL, &pfmfs_dentry_operations,
PFMFS_MAGIC); PFMFS_MAGIC);
} }

Просмотреть файл

@ -440,7 +440,7 @@ static const struct super_operations dax_sops = {
static struct dentry *dax_mount(struct file_system_type *fs_type, static struct dentry *dax_mount(struct file_system_type *fs_type,
int flags, const char *dev_name, void *data) int flags, const char *dev_name, void *data)
{ {
return mount_pseudo(fs_type, "dax:", &dax_sops, NULL, DAXFS_MAGIC); return mount_pseudo(fs_type, &dax_sops, NULL, DAXFS_MAGIC);
} }
static struct file_system_type dax_fs_type = { static struct file_system_type dax_fs_type = {

Просмотреть файл

@ -535,11 +535,7 @@ static struct vfsmount *drm_fs_mnt;
static struct dentry *drm_fs_mount(struct file_system_type *fs_type, int flags, static struct dentry *drm_fs_mount(struct file_system_type *fs_type, int flags,
const char *dev_name, void *data) const char *dev_name, void *data)
{ {
return mount_pseudo(fs_type, return mount_pseudo(fs_type, NULL, NULL, 0x010203ff);
"drm:",
NULL,
NULL,
0x010203ff);
} }
static struct file_system_type drm_fs_type = { static struct file_system_type drm_fs_type = {

Просмотреть файл

@ -40,8 +40,7 @@ static struct vfsmount *cxl_vfs_mount;
static struct dentry *cxl_fs_mount(struct file_system_type *fs_type, int flags, static struct dentry *cxl_fs_mount(struct file_system_type *fs_type, int flags,
const char *dev_name, void *data) const char *dev_name, void *data)
{ {
return mount_pseudo(fs_type, "cxl:", NULL, NULL, return mount_pseudo(fs_type, NULL, NULL, CXL_PSEUDO_FS_MAGIC);
CXL_PSEUDO_FS_MAGIC);
} }
static struct file_system_type cxl_fs_type = { static struct file_system_type cxl_fs_type = {

Просмотреть файл

@ -48,8 +48,7 @@ static struct dentry *ocxlflash_fs_mount(struct file_system_type *fs_type,
int flags, const char *dev_name, int flags, const char *dev_name,
void *data) void *data)
{ {
return mount_pseudo(fs_type, "ocxlflash:", NULL, NULL, return mount_pseudo(fs_type, NULL, NULL, OCXLFLASH_FS_MAGIC);
OCXLFLASH_FS_MAGIC);
} }
static struct file_system_type ocxlflash_fs_type = { static struct file_system_type ocxlflash_fs_type = {

Просмотреть файл

@ -761,8 +761,7 @@ static int virtballoon_migratepage(struct balloon_dev_info *vb_dev_info,
static struct dentry *balloon_mount(struct file_system_type *fs_type, static struct dentry *balloon_mount(struct file_system_type *fs_type,
int flags, const char *dev_name, void *data) int flags, const char *dev_name, void *data)
{ {
return mount_pseudo(fs_type, "balloon-kvm:", NULL, NULL, return mount_pseudo(fs_type, NULL, NULL, BALLOON_KVM_MAGIC);
BALLOON_KVM_MAGIC);
} }
static struct file_system_type balloon_fs = { static struct file_system_type balloon_fs = {

Просмотреть файл

@ -252,8 +252,7 @@ static struct file *aio_private_file(struct kioctx *ctx, loff_t nr_pages)
static struct dentry *aio_mount(struct file_system_type *fs_type, static struct dentry *aio_mount(struct file_system_type *fs_type,
int flags, const char *dev_name, void *data) int flags, const char *dev_name, void *data)
{ {
struct dentry *root = mount_pseudo(fs_type, "aio:", NULL, NULL, struct dentry *root = mount_pseudo(fs_type, NULL, NULL, AIO_RING_MAGIC);
AIO_RING_MAGIC);
if (!IS_ERR(root)) if (!IS_ERR(root))
root->d_sb->s_iflags |= SB_I_NOEXEC; root->d_sb->s_iflags |= SB_I_NOEXEC;

Просмотреть файл

@ -41,8 +41,8 @@ static const struct dentry_operations anon_inodefs_dentry_operations = {
static struct dentry *anon_inodefs_mount(struct file_system_type *fs_type, static struct dentry *anon_inodefs_mount(struct file_system_type *fs_type,
int flags, const char *dev_name, void *data) int flags, const char *dev_name, void *data)
{ {
return mount_pseudo(fs_type, "anon_inode:", NULL, return mount_pseudo(fs_type, NULL, &anon_inodefs_dentry_operations,
&anon_inodefs_dentry_operations, ANON_INODE_FS_MAGIC); ANON_INODE_FS_MAGIC);
} }
static struct file_system_type anon_inode_fs_type = { static struct file_system_type anon_inode_fs_type = {

Просмотреть файл

@ -837,7 +837,7 @@ static struct dentry *bd_mount(struct file_system_type *fs_type,
int flags, const char *dev_name, void *data) int flags, const char *dev_name, void *data)
{ {
struct dentry *dent; struct dentry *dent;
dent = mount_pseudo(fs_type, "bdev:", &bdev_sops, NULL, BDEVFS_MAGIC); dent = mount_pseudo(fs_type, &bdev_sops, NULL, BDEVFS_MAGIC);
if (!IS_ERR(dent)) if (!IS_ERR(dent))
dent->d_sb->s_iflags |= SB_I_CGROUPWB; dent->d_sb->s_iflags |= SB_I_CGROUPWB;
return dent; return dent;

Просмотреть файл

@ -36,7 +36,7 @@ static struct dentry *btrfs_test_mount(struct file_system_type *fs_type,
int flags, const char *dev_name, int flags, const char *dev_name,
void *data) void *data)
{ {
return mount_pseudo(fs_type, "btrfs_test:", &btrfs_test_super_ops, return mount_pseudo(fs_type, &btrfs_test_super_ops,
NULL, BTRFS_TEST_MAGIC); NULL, BTRFS_TEST_MAGIC);
} }

Просмотреть файл

@ -239,14 +239,12 @@ static const struct super_operations simple_super_operations = {
* Common helper for pseudo-filesystems (sockfs, pipefs, bdev - stuff that * Common helper for pseudo-filesystems (sockfs, pipefs, bdev - stuff that
* will never be mountable) * will never be mountable)
*/ */
struct dentry *mount_pseudo_xattr(struct file_system_type *fs_type, char *name, struct dentry *mount_pseudo_xattr(struct file_system_type *fs_type,
const struct super_operations *ops, const struct xattr_handler **xattr, const struct super_operations *ops, const struct xattr_handler **xattr,
const struct dentry_operations *dops, unsigned long magic) const struct dentry_operations *dops, unsigned long magic)
{ {
struct super_block *s; struct super_block *s;
struct dentry *dentry;
struct inode *root; struct inode *root;
struct qstr d_name = QSTR_INIT(name, strlen(name));
s = sget_userns(fs_type, NULL, set_anon_super, SB_KERNMOUNT|SB_NOUSER, s = sget_userns(fs_type, NULL, set_anon_super, SB_KERNMOUNT|SB_NOUSER,
&init_user_ns, NULL); &init_user_ns, NULL);
@ -271,13 +269,9 @@ struct dentry *mount_pseudo_xattr(struct file_system_type *fs_type, char *name,
root->i_ino = 1; root->i_ino = 1;
root->i_mode = S_IFDIR | S_IRUSR | S_IWUSR; root->i_mode = S_IFDIR | S_IRUSR | S_IWUSR;
root->i_atime = root->i_mtime = root->i_ctime = current_time(root); root->i_atime = root->i_mtime = root->i_ctime = current_time(root);
dentry = __d_alloc(s, &d_name); s->s_root = d_make_root(root);
if (!dentry) { if (!s->s_root)
iput(root);
goto Enomem; goto Enomem;
}
d_instantiate(dentry, root);
s->s_root = dentry;
s->s_d_op = dops; s->s_d_op = dops;
s->s_flags |= SB_ACTIVE; s->s_flags |= SB_ACTIVE;
return dget(s->s_root); return dget(s->s_root);

Просмотреть файл

@ -261,7 +261,7 @@ static const struct super_operations nsfs_ops = {
static struct dentry *nsfs_mount(struct file_system_type *fs_type, static struct dentry *nsfs_mount(struct file_system_type *fs_type,
int flags, const char *dev_name, void *data) int flags, const char *dev_name, void *data)
{ {
return mount_pseudo(fs_type, "nsfs:", &nsfs_ops, return mount_pseudo(fs_type, &nsfs_ops,
&ns_dentry_operations, NSFS_MAGIC); &ns_dentry_operations, NSFS_MAGIC);
} }
static struct file_system_type nsfs = { static struct file_system_type nsfs = {

Просмотреть файл

@ -1185,7 +1185,7 @@ static const struct super_operations pipefs_ops = {
static struct dentry *pipefs_mount(struct file_system_type *fs_type, static struct dentry *pipefs_mount(struct file_system_type *fs_type,
int flags, const char *dev_name, void *data) int flags, const char *dev_name, void *data)
{ {
return mount_pseudo(fs_type, "pipe:", &pipefs_ops, return mount_pseudo(fs_type, &pipefs_ops,
&pipefs_dentry_operations, PIPEFS_MAGIC); &pipefs_dentry_operations, PIPEFS_MAGIC);
} }

Просмотреть файл

@ -2257,18 +2257,18 @@ struct super_block *sget(struct file_system_type *type,
int (*test)(struct super_block *,void *), int (*test)(struct super_block *,void *),
int (*set)(struct super_block *,void *), int (*set)(struct super_block *,void *),
int flags, void *data); int flags, void *data);
extern struct dentry *mount_pseudo_xattr(struct file_system_type *, char *, extern struct dentry *mount_pseudo_xattr(struct file_system_type *,
const struct super_operations *ops, const struct super_operations *ops,
const struct xattr_handler **xattr, const struct xattr_handler **xattr,
const struct dentry_operations *dops, const struct dentry_operations *dops,
unsigned long); unsigned long);
static inline struct dentry * static inline struct dentry *
mount_pseudo(struct file_system_type *fs_type, char *name, mount_pseudo(struct file_system_type *fs_type,
const struct super_operations *ops, const struct super_operations *ops,
const struct dentry_operations *dops, unsigned long magic) const struct dentry_operations *dops, unsigned long magic)
{ {
return mount_pseudo_xattr(fs_type, name, ops, NULL, dops, magic); return mount_pseudo_xattr(fs_type, ops, NULL, dops, magic);
} }
/* Alas, no aliases. Too much hassle with bringing module.h everywhere */ /* Alas, no aliases. Too much hassle with bringing module.h everywhere */

Просмотреть файл

@ -242,7 +242,7 @@ static inline void free_handle(unsigned long handle)
static struct dentry *z3fold_do_mount(struct file_system_type *fs_type, static struct dentry *z3fold_do_mount(struct file_system_type *fs_type,
int flags, const char *dev_name, void *data) int flags, const char *dev_name, void *data)
{ {
return mount_pseudo(fs_type, "z3fold:", NULL, NULL, 0x33); return mount_pseudo(fs_type, NULL, NULL, 0x33);
} }
static struct file_system_type z3fold_fs = { static struct file_system_type z3fold_fs = {

Просмотреть файл

@ -1817,7 +1817,7 @@ static void lock_zspage(struct zspage *zspage)
static struct dentry *zs_mount(struct file_system_type *fs_type, static struct dentry *zs_mount(struct file_system_type *fs_type,
int flags, const char *dev_name, void *data) int flags, const char *dev_name, void *data)
{ {
return mount_pseudo(fs_type, "zsmalloc:", NULL, NULL, ZSMALLOC_MAGIC); return mount_pseudo(fs_type, NULL, NULL, ZSMALLOC_MAGIC);
} }
static struct file_system_type zsmalloc_fs = { static struct file_system_type zsmalloc_fs = {

Просмотреть файл

@ -362,7 +362,7 @@ static const struct xattr_handler *sockfs_xattr_handlers[] = {
static struct dentry *sockfs_mount(struct file_system_type *fs_type, static struct dentry *sockfs_mount(struct file_system_type *fs_type,
int flags, const char *dev_name, void *data) int flags, const char *dev_name, void *data)
{ {
return mount_pseudo_xattr(fs_type, "socket:", &sockfs_ops, return mount_pseudo_xattr(fs_type, &sockfs_ops,
sockfs_xattr_handlers, sockfs_xattr_handlers,
&sockfs_dentry_operations, SOCKFS_MAGIC); &sockfs_dentry_operations, SOCKFS_MAGIC);
} }