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