]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
bcachefs: port block device access to file
authorChristian Brauner <brauner@kernel.org>
Tue, 23 Jan 2024 13:26:35 +0000 (14:26 +0100)
committerChristian Brauner <brauner@kernel.org>
Sun, 25 Feb 2024 11:05:25 +0000 (12:05 +0100)
Link: https://lore.kernel.org/r/20240123-vfs-bdev-file-v2-18-adbd023e19cc@kernel.org
Reviewed-by: Jan Kara <jack@suse.cz>
Signed-off-by: Christian Brauner <brauner@kernel.org>
fs/bcachefs/super-io.c
fs/bcachefs/super_types.h

index d60c7d27a0477cb0de116675671d5c888d8f1c86..ce8cf2d91f844454ada2502ea3b9d718aa3b3ab2 100644 (file)
@@ -142,8 +142,8 @@ void bch2_sb_field_delete(struct bch_sb_handle *sb,
 void bch2_free_super(struct bch_sb_handle *sb)
 {
        kfree(sb->bio);
-       if (!IS_ERR_OR_NULL(sb->bdev_handle))
-               bdev_release(sb->bdev_handle);
+       if (!IS_ERR_OR_NULL(sb->s_bdev_file))
+               fput(sb->s_bdev_file);
        kfree(sb->holder);
        kfree(sb->sb_name);
 
@@ -704,22 +704,22 @@ retry:
        if (!opt_get(*opts, nochanges))
                sb->mode |= BLK_OPEN_WRITE;
 
-       sb->bdev_handle = bdev_open_by_path(path, sb->mode, sb->holder, &bch2_sb_handle_bdev_ops);
-       if (IS_ERR(sb->bdev_handle) &&
-           PTR_ERR(sb->bdev_handle) == -EACCES &&
+       sb->s_bdev_file = bdev_file_open_by_path(path, sb->mode, sb->holder, &bch2_sb_handle_bdev_ops);
+       if (IS_ERR(sb->s_bdev_file) &&
+           PTR_ERR(sb->s_bdev_file) == -EACCES &&
            opt_get(*opts, read_only)) {
                sb->mode &= ~BLK_OPEN_WRITE;
 
-               sb->bdev_handle = bdev_open_by_path(path, sb->mode, sb->holder, &bch2_sb_handle_bdev_ops);
-               if (!IS_ERR(sb->bdev_handle))
+               sb->s_bdev_file = bdev_file_open_by_path(path, sb->mode, sb->holder, &bch2_sb_handle_bdev_ops);
+               if (!IS_ERR(sb->s_bdev_file))
                        opt_set(*opts, nochanges, true);
        }
 
-       if (IS_ERR(sb->bdev_handle)) {
-               ret = PTR_ERR(sb->bdev_handle);
+       if (IS_ERR(sb->s_bdev_file)) {
+               ret = PTR_ERR(sb->s_bdev_file);
                goto out;
        }
-       sb->bdev = sb->bdev_handle->bdev;
+       sb->bdev = file_bdev(sb->s_bdev_file);
 
        ret = bch2_sb_realloc(sb, 0);
        if (ret) {
index 0e5a14fc8e7fbfde622ec68dfae45f69ad83bd87..ec784d975f6655a378207692644975e53271ddca 100644 (file)
@@ -4,7 +4,7 @@
 
 struct bch_sb_handle {
        struct bch_sb           *sb;
-       struct bdev_handle      *bdev_handle;
+       struct file             *s_bdev_file;
        struct block_device     *bdev;
        char                    *sb_name;
        struct bio              *bio;