]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
bfs: convert bfs to use the new mount api
authorPavel Reichl <preichl@redhat.com>
Thu, 20 Mar 2025 20:42:24 +0000 (21:42 +0100)
committerChristian Brauner <brauner@kernel.org>
Mon, 7 Apr 2025 07:36:20 +0000 (09:36 +0200)
Convert the bfs filesystem to use the new mount API.

Tested using mount and simple writes & reads on ro/rw bfs devices.

Signed-off-by: Pavel Reichl <preichl@redhat.com>
Link: https://lore.kernel.org/r/20250320204224.181403-1-preichl@redhat.com
Reviewed-by: Carlos Maiolino <cmaiolino@redhat.com>
Signed-off-by: Christian Brauner <brauner@kernel.org>
fs/bfs/inode.c

index db81570c963751c68a3b5c1fe6fdf978b1838148..1d41ce477df58be4919cdd7b016dfc8144278572 100644 (file)
@@ -17,6 +17,7 @@
 #include <linux/writeback.h>
 #include <linux/uio.h>
 #include <linux/uaccess.h>
+#include <linux/fs_context.h>
 #include "bfs.h"
 
 MODULE_AUTHOR("Tigran Aivazian <aivazian.tigran@gmail.com>");
@@ -305,7 +306,7 @@ void bfs_dump_imap(const char *prefix, struct super_block *s)
 #endif
 }
 
-static int bfs_fill_super(struct super_block *s, void *data, int silent)
+static int bfs_fill_super(struct super_block *s, struct fs_context *fc)
 {
        struct buffer_head *bh, *sbh;
        struct bfs_super_block *bfs_sb;
@@ -314,6 +315,7 @@ static int bfs_fill_super(struct super_block *s, void *data, int silent)
        struct bfs_sb_info *info;
        int ret = -EINVAL;
        unsigned long i_sblock, i_eblock, i_eoff, s_size;
+       int silent = fc->sb_flags & SB_SILENT;
 
        info = kzalloc(sizeof(*info), GFP_KERNEL);
        if (!info)
@@ -446,18 +448,28 @@ out:
        return ret;
 }
 
-static struct dentry *bfs_mount(struct file_system_type *fs_type,
-       int flags, const char *dev_name, void *data)
+static int bfs_get_tree(struct fs_context *fc)
 {
-       return mount_bdev(fs_type, flags, dev_name, data, bfs_fill_super);
+       return get_tree_bdev(fc, bfs_fill_super);
+}
+
+static const struct fs_context_operations bfs_context_ops = {
+       .get_tree = bfs_get_tree,
+};
+
+static int bfs_init_fs_context(struct fs_context *fc)
+{
+       fc->ops = &bfs_context_ops;
+
+       return 0;
 }
 
 static struct file_system_type bfs_fs_type = {
-       .owner          = THIS_MODULE,
-       .name           = "bfs",
-       .mount          = bfs_mount,
-       .kill_sb        = kill_block_super,
-       .fs_flags       = FS_REQUIRES_DEV,
+       .owner                  = THIS_MODULE,
+       .name                   = "bfs",
+       .init_fs_context        = bfs_init_fs_context,
+       .kill_sb                = kill_block_super,
+       .fs_flags               = FS_REQUIRES_DEV,
 };
 MODULE_ALIAS_FS("bfs");