]> git.itanic.dy.fi Git - linux-stable/commitdiff
reiserfs: Convert to bdev_open_by_dev/path()
authorJan Kara <jack@suse.cz>
Wed, 27 Sep 2023 09:34:33 +0000 (11:34 +0200)
committerChristian Brauner <brauner@kernel.org>
Sat, 28 Oct 2023 11:29:21 +0000 (13:29 +0200)
Convert reiserfs to use bdev_open_by_dev/path() and pass the handle
around.

CC: reiserfs-devel@vger.kernel.org
Acked-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Christian Brauner <brauner@kernel.org>
Signed-off-by: Jan Kara <jack@suse.cz>
Link: https://lore.kernel.org/r/20230927093442.25915-27-jack@suse.cz
Signed-off-by: Christian Brauner <brauner@kernel.org>
fs/reiserfs/journal.c
fs/reiserfs/procfs.c
fs/reiserfs/reiserfs.h

index 015bfe4e452417fa8ef39b0ff727c5687cb9039f..171c912af50f6f42bf96a9936f77fde70bbd8770 100644 (file)
@@ -90,8 +90,7 @@ static int flush_commit_list(struct super_block *s,
 static int can_dirty(struct reiserfs_journal_cnode *cn);
 static int journal_join(struct reiserfs_transaction_handle *th,
                        struct super_block *sb);
-static void release_journal_dev(struct super_block *super,
-                              struct reiserfs_journal *journal);
+static void release_journal_dev(struct reiserfs_journal *journal);
 static void dirty_one_transaction(struct super_block *s,
                                 struct reiserfs_journal_list *jl);
 static void flush_async_commits(struct work_struct *work);
@@ -1893,7 +1892,7 @@ static void free_journal_ram(struct super_block *sb)
         * j_header_bh is on the journal dev, make sure
         * not to release the journal dev until we brelse j_header_bh
         */
-       release_journal_dev(sb, journal);
+       release_journal_dev(journal);
        vfree(journal);
 }
 
@@ -2387,7 +2386,7 @@ static int journal_read(struct super_block *sb)
 
        cur_dblock = SB_ONDISK_JOURNAL_1st_BLOCK(sb);
        reiserfs_info(sb, "checking transaction log (%pg)\n",
-                     journal->j_dev_bd);
+                     journal->j_bdev_handle->bdev);
        start = ktime_get_seconds();
 
        /*
@@ -2448,7 +2447,7 @@ static int journal_read(struct super_block *sb)
                 * device and journal device to be the same
                 */
                d_bh =
-                   reiserfs_breada(journal->j_dev_bd, cur_dblock,
+                   reiserfs_breada(journal->j_bdev_handle->bdev, cur_dblock,
                                    sb->s_blocksize,
                                    SB_ONDISK_JOURNAL_1st_BLOCK(sb) +
                                    SB_ONDISK_JOURNAL_SIZE(sb));
@@ -2587,17 +2586,11 @@ static void journal_list_init(struct super_block *sb)
        SB_JOURNAL(sb)->j_current_jl = alloc_journal_list(sb);
 }
 
-static void release_journal_dev(struct super_block *super,
-                              struct reiserfs_journal *journal)
+static void release_journal_dev(struct reiserfs_journal *journal)
 {
-       if (journal->j_dev_bd != NULL) {
-               void *holder = NULL;
-
-               if (journal->j_dev_bd->bd_dev != super->s_dev)
-                       holder = journal;
-
-               blkdev_put(journal->j_dev_bd, holder);
-               journal->j_dev_bd = NULL;
+       if (journal->j_bdev_handle) {
+               bdev_release(journal->j_bdev_handle);
+               journal->j_bdev_handle = NULL;
        }
 }
 
@@ -2612,7 +2605,7 @@ static int journal_init_dev(struct super_block *super,
 
        result = 0;
 
-       journal->j_dev_bd = NULL;
+       journal->j_bdev_handle = NULL;
        jdev = SB_ONDISK_JOURNAL_DEVICE(super) ?
            new_decode_dev(SB_ONDISK_JOURNAL_DEVICE(super)) : super->s_dev;
 
@@ -2623,36 +2616,37 @@ static int journal_init_dev(struct super_block *super,
        if ((!jdev_name || !jdev_name[0])) {
                if (jdev == super->s_dev)
                        holder = NULL;
-               journal->j_dev_bd = blkdev_get_by_dev(jdev, blkdev_mode, holder,
-                                                     NULL);
-               if (IS_ERR(journal->j_dev_bd)) {
-                       result = PTR_ERR(journal->j_dev_bd);
-                       journal->j_dev_bd = NULL;
+               journal->j_bdev_handle = bdev_open_by_dev(jdev, blkdev_mode,
+                                                         holder, NULL);
+               if (IS_ERR(journal->j_bdev_handle)) {
+                       result = PTR_ERR(journal->j_bdev_handle);
+                       journal->j_bdev_handle = NULL;
                        reiserfs_warning(super, "sh-458",
                                         "cannot init journal device unknown-block(%u,%u): %i",
                                         MAJOR(jdev), MINOR(jdev), result);
                        return result;
                } else if (jdev != super->s_dev)
-                       set_blocksize(journal->j_dev_bd, super->s_blocksize);
+                       set_blocksize(journal->j_bdev_handle->bdev,
+                                     super->s_blocksize);
 
                return 0;
        }
 
-       journal->j_dev_bd = blkdev_get_by_path(jdev_name, blkdev_mode, holder,
-                                              NULL);
-       if (IS_ERR(journal->j_dev_bd)) {
-               result = PTR_ERR(journal->j_dev_bd);
-               journal->j_dev_bd = NULL;
+       journal->j_bdev_handle = bdev_open_by_path(jdev_name, blkdev_mode,
+                                                  holder, NULL);
+       if (IS_ERR(journal->j_bdev_handle)) {
+               result = PTR_ERR(journal->j_bdev_handle);
+               journal->j_bdev_handle = NULL;
                reiserfs_warning(super, "sh-457",
                                 "journal_init_dev: Cannot open '%s': %i",
                                 jdev_name, result);
                return result;
        }
 
-       set_blocksize(journal->j_dev_bd, super->s_blocksize);
+       set_blocksize(journal->j_bdev_handle->bdev, super->s_blocksize);
        reiserfs_info(super,
                      "journal_init_dev: journal device: %pg\n",
-                     journal->j_dev_bd);
+                     journal->j_bdev_handle->bdev);
        return 0;
 }
 
@@ -2810,7 +2804,7 @@ int journal_init(struct super_block *sb, const char *j_dev_name,
                                 "journal header magic %x (device %pg) does "
                                 "not match to magic found in super block %x",
                                 jh->jh_journal.jp_journal_magic,
-                                journal->j_dev_bd,
+                                journal->j_bdev_handle->bdev,
                                 sb_jp_journal_magic(rs));
                brelse(bhjh);
                goto free_and_return;
@@ -2834,7 +2828,7 @@ int journal_init(struct super_block *sb, const char *j_dev_name,
        reiserfs_info(sb, "journal params: device %pg, size %u, "
                      "journal first block %u, max trans len %u, max batch %u, "
                      "max commit age %u, max trans age %u\n",
-                     journal->j_dev_bd,
+                     journal->j_bdev_handle->bdev,
                      SB_ONDISK_JOURNAL_SIZE(sb),
                      SB_ONDISK_JOURNAL_1st_BLOCK(sb),
                      journal->j_trans_max,
index 3dba8acf4e832a7592e9a364566db452b6b373eb..83cb9402e0f9c54dacd9fc64751b6e0ecca11421 100644 (file)
@@ -354,7 +354,7 @@ static int show_journal(struct seq_file *m, void *unused)
                   "prepare: \t%12lu\n"
                   "prepare_retry: \t%12lu\n",
                   DJP(jp_journal_1st_block),
-                  SB_JOURNAL(sb)->j_dev_bd,
+                  SB_JOURNAL(sb)->j_bdev_handle->bdev,
                   DJP(jp_journal_dev),
                   DJP(jp_journal_size),
                   DJP(jp_journal_trans_max),
index 7d12b8c5b2fa8c73929f7c9bd79d5085e7b1835f..8ad41271c25614d6dd7a4cafa261805a90778981 100644 (file)
@@ -299,7 +299,7 @@ struct reiserfs_journal {
        /* oldest journal block.  start here for traverse */
        struct reiserfs_journal_cnode *j_first;
 
-       struct block_device *j_dev_bd;
+       struct bdev_handle *j_bdev_handle;
 
        /* first block on s_dev of reserved area journal */
        int j_1st_reserved_block;
@@ -2809,9 +2809,12 @@ struct reiserfs_journal_header {
 #define journal_hash(t,sb,block) ((t)[_jhashfn((sb),(block)) & JBH_HASH_MASK])
 
 /* We need these to make journal.c code more readable */
-#define journal_find_get_block(s, block) __find_get_block(SB_JOURNAL(s)->j_dev_bd, block, s->s_blocksize)
-#define journal_getblk(s, block) __getblk(SB_JOURNAL(s)->j_dev_bd, block, s->s_blocksize)
-#define journal_bread(s, block) __bread(SB_JOURNAL(s)->j_dev_bd, block, s->s_blocksize)
+#define journal_find_get_block(s, block) __find_get_block(\
+               SB_JOURNAL(s)->j_bdev_handle->bdev, block, s->s_blocksize)
+#define journal_getblk(s, block) __getblk(SB_JOURNAL(s)->j_bdev_handle->bdev,\
+               block, s->s_blocksize)
+#define journal_bread(s, block) __bread(SB_JOURNAL(s)->j_bdev_handle->bdev,\
+               block, s->s_blocksize)
 
 enum reiserfs_bh_state_bits {
        BH_JDirty = BH_PrivateStart,    /* buffer is in current transaction */