David Howells
2019-Mar-27 23:40 UTC
[RFC PATCH 00/68] VFS: Convert a bunch of filesystems to the new mount API
Hi Al,
Here's a set of patches that converts a bunch (but not yet all!) to the new
mount API. To this end, it makes the following changes:
(1) Provides a convenience member in struct fs_context that is OR'd into
sb->s_iflags by sget_fc().
(2) Provides a convenience helper function, vfs_init_pseudo_fs_context(),
for doing most of the work in mounting a pseudo filesystem.
(3) Provides a convenience helper function, vfs_get_block_super(), for
doing the work in setting up a block-based superblock.
(4) Improves the handling of fd-type parameters.
(5) Moves some of the subtype handling int fuse.
(6) Provides a convenience helper function, vfs_get_mtd_super(), for
doing the work in setting up an MTD device-based superblock.
(7) Kills off mount_pseudo(), mount_pseudo_xattr(), mount_ns(),
sget_userns(), mount_mtd(), mount_single().
(8) Converts a slew of filesystems to use the mount API.
(9) Fixes a bug in hypfs.
The patches can be found here also:
https://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-fs.git
on branch:
mount-api-viro
David
---
Andrew Price (1):
gfs2: Convert gfs2 to fs_context
David Howells (66):
vfs: Update mount API docs
vfs: Fix refcounting of filenames in fs_parser
vfs: Provide sb->s_iflags settings in fs_context struct
vfs: Provide a mount_pseudo-replacement for the new mount API
vfs: Convert aio to use the new mount API
vfs: Convert anon_inodes to use the new mount API
vfs: Convert bdev to use the new mount API
vfs: Convert nsfs to use the new mount API
vfs: Convert pipe to use the new mount API
vfs: Convert zsmalloc to use the new mount API
vfs: Convert sockfs to use the new mount API
vfs: Convert dax to use the new mount API
vfs: Convert drm to use the new mount API
vfs: Convert ia64 perfmon to use the new mount API
vfs: Convert cxl to use the new mount API
vfs: Convert ocxlflash to use the new mount API
vfs: Convert virtio_balloon to use the new mount API
vfs: Convert btrfs_test to use the new mount API
vfs: Kill off mount_pseudo() and mount_pseudo_xattr()
vfs: Use sget_fc() for pseudo-filesystems
vfs: Convert binderfs to use the new mount API
vfs: Convert nfsctl to use the new mount API
vfs: Convert rpc_pipefs to use the new mount API
vfs: Kill mount_ns()
vfs: Kill sget_userns()
vfs: Convert binfmt_misc to use the new mount API
vfs: Convert configfs to use the new mount API
vfs: Convert efivarfs to use the new mount API
vfs: Convert fusectl to use the new mount API
vfs: Convert qib_fs/ipathfs to use the new mount API
vfs: Convert ibmasmfs to use the new mount API
vfs: Convert oprofilefs to use the new mount API
vfs: Convert gadgetfs to use the new mount API
vfs: Convert xenfs to use the new mount API
vfs: Convert openpromfs to use the new mount API
vfs: Convert apparmorfs to use the new mount API
vfs: Convert securityfs to use the new mount API
vfs: Convert selinuxfs to use the new mount API
vfs: Convert smackfs to use the new mount API
vfs: Convert ramfs, shmem, tmpfs, devtmpfs, rootfs to use the new mount
API
vfs: Create fs_context-aware mount_bdev() replacement
vfs: Make fs_parse() handle fs_param_is_fd-type params better
vfs: Convert fuse to use the new mount API
vfs: Move the subtype parameter into fuse
mtd: Provide fs_context-aware mount_mtd() replacement
vfs: Convert romfs to use the new mount API
vfs: Convert cramfs to use the new mount API
vfs: Convert jffs2 to use the new mount API
mtd: Kill mount_mtd()
vfs: Convert squashfs to use the new mount API
vfs: Convert ceph to use the new mount API
vfs: Convert functionfs to use the new mount API
vfs: Add a single-or-reconfig keying to vfs_get_super()
vfs: Convert debugfs to use the new mount API
vfs: Convert tracefs to use the new mount API
vfs: Convert pstore to use the new mount API
hypfs: Fix error number left in struct pointer member
vfs: Convert hypfs to use the new mount API
vfs: Convert spufs to use the new mount API
vfs: Kill mount_single()
vfs: Convert coda to use the new mount API
vfs: Convert autofs to use the new mount API
vfs: Convert devpts to use the new mount API
vfs: Convert bpf to use the new mount API
vfs: Convert ubifs to use the new mount API
vfs: Convert orangefs to use the new mount API
Masahiro Yamada (1):
kbuild: skip sub-make for in-tree build with GNU Make 4.x
Documentation/filesystems/mount_api.txt | 367 ++++++++-------
Documentation/filesystems/vfs.txt | 4
Makefile | 31 +
arch/ia64/kernel/perfmon.c | 14 -
arch/powerpc/platforms/cell/spufs/inode.c | 207 +++++----
arch/s390/hypfs/inode.c | 137 +++---
drivers/android/binderfs.c | 173 ++++---
drivers/base/devtmpfs.c | 16 -
drivers/block/rbd.c | 363 ++++++++-------
drivers/dax/super.c | 13 -
drivers/gpu/drm/drm_drv.c | 14 -
drivers/infiniband/hw/qib/qib_fs.c | 26 +
drivers/misc/cxl/api.c | 10
drivers/misc/ibmasm/ibmasmfs.c | 21 +
drivers/mtd/mtdcore.h | 1
drivers/mtd/mtdsuper.c | 181 ++++----
drivers/oprofile/oprofilefs.c | 20 +
drivers/scsi/cxlflash/ocxl_hw.c | 21 -
drivers/usb/gadget/function/f_fs.c | 233 +++++-----
drivers/usb/gadget/legacy/inode.c | 21 +
drivers/virtio/virtio_balloon.c | 19 -
drivers/xen/xenfs/super.c | 21 +
fs/aio.c | 15 -
fs/anon_inodes.c | 12
fs/autofs/autofs_i.h | 13 -
fs/autofs/init.c | 9
fs/autofs/inode.c | 429 ++++++++++--------
fs/binfmt_misc.c | 20 +
fs/block_dev.c | 14 -
fs/btrfs/tests/btrfs-tests.c | 13 -
fs/ceph/cache.c | 9
fs/ceph/cache.h | 5
fs/ceph/super.c | 697 ++++++++++++++---------------
fs/ceph/super.h | 1
fs/coda/inode.c | 171 +++++--
fs/configfs/mount.c | 20 +
fs/cramfs/inode.c | 69 ++-
fs/debugfs/inode.c | 186 ++++----
fs/devpts/inode.c | 265 +++++------
fs/efivarfs/super.c | 20 +
fs/fs_context.c | 16 -
fs/fs_parser.c | 18 +
fs/fuse/control.c | 20 +
fs/fuse/inode.c | 291 +++++++-----
fs/gfs2/incore.h | 8
fs/gfs2/ops_fstype.c | 495 ++++++++++++++++-----
fs/gfs2/super.c | 335 --------------
fs/gfs2/super.h | 3
fs/jffs2/fs.c | 21 -
fs/jffs2/os-linux.h | 4
fs/jffs2/super.c | 172 +++----
fs/libfs.c | 91 +++-
fs/nfsd/nfsctl.c | 33 +
fs/nsfs.c | 13 -
fs/openpromfs/inode.c | 20 +
fs/orangefs/orangefs-kernel.h | 8
fs/orangefs/orangefs-mod.c | 3
fs/orangefs/super.c | 186 ++++----
fs/pipe.c | 12
fs/pstore/inode.c | 109 +++--
fs/ramfs/inode.c | 104 +++-
fs/romfs/super.c | 46 +-
fs/squashfs/super.c | 100 ++--
fs/super.c | 301 ++++++-------
fs/tracefs/inode.c | 180 +++----
fs/ubifs/super.c | 447 ++++++++-----------
include/linux/ceph/ceph_debug.h | 1
include/linux/ceph/libceph.h | 17 +
include/linux/fs.h | 24 -
include/linux/fs_context.h | 20 +
include/linux/mtd/super.h | 6
include/linux/ramfs.h | 6
include/linux/shmem_fs.h | 4
init/do_mounts.c | 12
kernel/bpf/inode.c | 92 ++--
mm/shmem.c | 396 +++++++++++-----
mm/zsmalloc.c | 19 -
net/ceph/ceph_common.c | 410 +++++++----------
net/socket.c | 14 -
net/sunrpc/rpc_pipe.c | 34 +
security/apparmor/apparmorfs.c | 20 +
security/inode.c | 21 +
security/selinux/selinuxfs.c | 20 +
security/smack/smackfs.c | 34 +
84 files changed, 4257 insertions(+), 3810 deletions(-)
David Howells
2019-Mar-27 23:42 UTC
[RFC PATCH 18/68] vfs: Convert virtio_balloon to use the new mount API
Convert the virtio_balloon filesystem to the new internal mount API as the old
one will be obsoleted and removed. This allows greater flexibility in
communication of mount parameters between userspace, the VFS and the
filesystem.
See Documentation/filesystems/mount_api.txt for more information.
Signed-off-by: David Howells <dhowells at redhat.com>
cc: "Michael S. Tsirkin" <mst at redhat.com>
cc: Jason Wang <jasowang at redhat.com>
cc: virtualization at lists.linux-foundation.org
---
drivers/virtio/virtio_balloon.c | 19 ++++++++++---------
1 file changed, 10 insertions(+), 9 deletions(-)
diff --git a/drivers/virtio/virtio_balloon.c b/drivers/virtio/virtio_balloon.c
index f19061b585a4..89d67c8aa719 100644
--- a/drivers/virtio/virtio_balloon.c
+++ b/drivers/virtio/virtio_balloon.c
@@ -757,21 +757,22 @@ static int virtballoon_migratepage(struct balloon_dev_info
*vb_dev_info,
return MIGRATEPAGE_SUCCESS;
}
+#include <linux/fs_context.h>
-static struct dentry *balloon_mount(struct file_system_type *fs_type,
- int flags, const char *dev_name, void *data)
-{
- static const struct dentry_operations ops = {
- .d_dname = simple_dname,
- };
+static const struct dentry_operations balloon_dops = {
+ .d_dname = simple_dname,
+};
- return mount_pseudo(fs_type, "balloon-kvm:", NULL, &ops,
- BALLOON_KVM_MAGIC);
+static int balloon_init_fs_context(struct fs_context *fc)
+{
+ return vfs_init_pseudo_fs_context(fc, "balloon-kvm:",
+ NULL, NULL,
+ &balloon_dops, BALLOON_KVM_MAGIC);
}
static struct file_system_type balloon_fs = {
.name = "balloon-kvm",
- .mount = balloon_mount,
+ .init_fs_context = balloon_init_fs_context,
.kill_sb = kill_anon_super,
};
Apparently Analagous Threads
- [PATCH 00/38] VFS: Convert trivial filesystems and more
- [PATCH 00/79] fs: new accessors for inode->i_ctime
- [PATCH 00/12] acl: remove remaining posix acl handlers
- [PATCH 15/18] virtiofs: Make virtio_fs object refcounted
- [PATCH v2 19/22] docs: fix broken documentation links