All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jan Kara <jack@suse.cz>
To: Christian Brauner <brauner@kernel.org>
Cc: Jens Axboe <axboe@kernel.dk>, <linux-fsdevel@vger.kernel.org>,
	<linux-block@vger.kernel.org>,
	Christoph Hellwig <hch@infradead.org>, Jan Kara <jack@suse.cz>,
	linux-ext4@vger.kernel.org, Ted Tso <tytso@mit.edu>,
	Christoph Hellwig <hch@lst.de>
Subject: [PATCH 22/29] ext4: Convert to bdev_open_by_dev()
Date: Wed, 23 Aug 2023 12:48:33 +0200	[thread overview]
Message-ID: <20230823104857.11437-22-jack@suse.cz> (raw)
In-Reply-To: <20230818123232.2269-1-jack@suse.cz>

Convert ext4 to use bdev_open_by_dev() and pass the handle around.

CC: <linux-ext4@vger.kernel.org>
CC: Ted Tso <tytso@mit.edu>
Acked-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Jan Kara <jack@suse.cz>
---
 fs/ext4/ext4.h  |  2 +-
 fs/ext4/fsmap.c |  9 +++++----
 fs/ext4/super.c | 44 +++++++++++++++++++++++---------------------
 3 files changed, 29 insertions(+), 26 deletions(-)

diff --git a/fs/ext4/ext4.h b/fs/ext4/ext4.h
index 1e2259d9967d..6856e80abf70 100644
--- a/fs/ext4/ext4.h
+++ b/fs/ext4/ext4.h
@@ -1541,7 +1541,7 @@ struct ext4_sb_info {
 	unsigned long s_commit_interval;
 	u32 s_max_batch_time;
 	u32 s_min_batch_time;
-	struct block_device *s_journal_bdev;
+	struct bdev_handle *s_journal_bdev_handle;
 #ifdef CONFIG_QUOTA
 	/* Names of quota files with journalled quota */
 	char __rcu *s_qf_names[EXT4_MAXQUOTAS];
diff --git a/fs/ext4/fsmap.c b/fs/ext4/fsmap.c
index cdf9bfe10137..11e6f33677a2 100644
--- a/fs/ext4/fsmap.c
+++ b/fs/ext4/fsmap.c
@@ -576,8 +576,9 @@ static bool ext4_getfsmap_is_valid_device(struct super_block *sb,
 	if (fm->fmr_device == 0 || fm->fmr_device == UINT_MAX ||
 	    fm->fmr_device == new_encode_dev(sb->s_bdev->bd_dev))
 		return true;
-	if (EXT4_SB(sb)->s_journal_bdev &&
-	    fm->fmr_device == new_encode_dev(EXT4_SB(sb)->s_journal_bdev->bd_dev))
+	if (EXT4_SB(sb)->s_journal_bdev_handle &&
+	    fm->fmr_device ==
+	    new_encode_dev(EXT4_SB(sb)->s_journal_bdev_handle->bdev->bd_dev))
 		return true;
 	return false;
 }
@@ -647,9 +648,9 @@ int ext4_getfsmap(struct super_block *sb, struct ext4_fsmap_head *head,
 	memset(handlers, 0, sizeof(handlers));
 	handlers[0].gfd_dev = new_encode_dev(sb->s_bdev->bd_dev);
 	handlers[0].gfd_fn = ext4_getfsmap_datadev;
-	if (EXT4_SB(sb)->s_journal_bdev) {
+	if (EXT4_SB(sb)->s_journal_bdev_handle) {
 		handlers[1].gfd_dev = new_encode_dev(
-				EXT4_SB(sb)->s_journal_bdev->bd_dev);
+			EXT4_SB(sb)->s_journal_bdev_handle->bdev->bd_dev);
 		handlers[1].gfd_fn = ext4_getfsmap_logdev;
 	}
 
diff --git a/fs/ext4/super.c b/fs/ext4/super.c
index 73547d2334fd..c2f5f73ab9fc 100644
--- a/fs/ext4/super.c
+++ b/fs/ext4/super.c
@@ -1100,20 +1100,20 @@ void ext4_update_dynamic_rev(struct super_block *sb)
 /*
  * Open the external journal device
  */
-static struct block_device *ext4_blkdev_get(dev_t dev, struct super_block *sb)
+static struct bdev_handle *ext4_blkdev_get(dev_t dev, struct super_block *sb)
 {
-	struct block_device *bdev;
+	struct bdev_handle *handle;
 
-	bdev = blkdev_get_by_dev(dev, BLK_OPEN_READ | BLK_OPEN_WRITE, sb,
-				 &fs_holder_ops);
-	if (IS_ERR(bdev))
+	handle = bdev_open_by_dev(dev, BLK_OPEN_READ | BLK_OPEN_WRITE, sb,
+				  &fs_holder_ops);
+	if (IS_ERR(handle))
 		goto fail;
-	return bdev;
+	return handle;
 
 fail:
 	ext4_msg(sb, KERN_ERR,
 		 "failed to open journal device unknown-block(%u,%u) %ld",
-		 MAJOR(dev), MINOR(dev), PTR_ERR(bdev));
+		 MAJOR(dev), MINOR(dev), PTR_ERR(handle));
 	return NULL;
 }
 
@@ -1311,14 +1311,14 @@ static void ext4_put_super(struct super_block *sb)
 
 	sync_blockdev(sb->s_bdev);
 	invalidate_bdev(sb->s_bdev);
-	if (sbi->s_journal_bdev) {
+	if (sbi->s_journal_bdev_handle) {
 		/*
 		 * Invalidate the journal device's buffers.  We don't want them
 		 * floating about in memory - the physical journal device may
 		 * hotswapped, and it breaks the `ro-after' testing code.
 		 */
-		sync_blockdev(sbi->s_journal_bdev);
-		invalidate_bdev(sbi->s_journal_bdev);
+		sync_blockdev(sbi->s_journal_bdev_handle->bdev);
+		invalidate_bdev(sbi->s_journal_bdev_handle->bdev);
 	}
 
 	ext4_xattr_destroy_cache(sbi->s_ea_inode_cache);
@@ -4205,7 +4205,7 @@ int ext4_calculate_overhead(struct super_block *sb)
 	 * Add the internal journal blocks whether the journal has been
 	 * loaded or not
 	 */
-	if (sbi->s_journal && !sbi->s_journal_bdev)
+	if (sbi->s_journal && !sbi->s_journal_bdev_handle)
 		overhead += EXT4_NUM_B2C(sbi, sbi->s_journal->j_total_len);
 	else if (ext4_has_feature_journal(sb) && !sbi->s_journal && j_inum) {
 		/* j_inum for internal journal is non-zero */
@@ -5642,9 +5642,9 @@ failed_mount9: __maybe_unused
 #endif
 	fscrypt_free_dummy_policy(&sbi->s_dummy_enc_policy);
 	brelse(sbi->s_sbh);
-	if (sbi->s_journal_bdev) {
-		invalidate_bdev(sbi->s_journal_bdev);
-		blkdev_put(sbi->s_journal_bdev, sb);
+	if (sbi->s_journal_bdev_handle) {
+		invalidate_bdev(sbi->s_journal_bdev_handle->bdev);
+		bdev_release(sbi->s_journal_bdev_handle);
 	}
 out_fail:
 	invalidate_bdev(sb->s_bdev);
@@ -5829,17 +5829,19 @@ static journal_t *ext4_get_dev_journal(struct super_block *sb,
 	unsigned long offset;
 	struct ext4_super_block *es;
 	struct block_device *bdev;
+	struct bdev_handle *bdev_handle;
 
 	if (WARN_ON_ONCE(!ext4_has_feature_journal(sb)))
 		return NULL;
 
 	/* see get_tree_bdev why this is needed and safe */
 	up_write(&sb->s_umount);
-	bdev = ext4_blkdev_get(j_dev, sb);
+	bdev_handle = ext4_blkdev_get(j_dev, sb);
 	down_write(&sb->s_umount);
-	if (bdev == NULL)
+	if (!bdev_handle)
 		return NULL;
 
+	bdev = bdev_handle->bdev;
 	blocksize = sb->s_blocksize;
 	hblock = bdev_logical_block_size(bdev);
 	if (blocksize < hblock) {
@@ -5903,14 +5905,14 @@ static journal_t *ext4_get_dev_journal(struct super_block *sb,
 			be32_to_cpu(journal->j_superblock->s_nr_users));
 		goto out_journal;
 	}
-	EXT4_SB(sb)->s_journal_bdev = bdev;
+	EXT4_SB(sb)->s_journal_bdev_handle = bdev_handle;
 	ext4_init_journal_params(sb, journal);
 	return journal;
 
 out_journal:
 	jbd2_journal_destroy(journal);
 out_bdev:
-	blkdev_put(bdev, sb);
+	bdev_release(bdev_handle);
 	return NULL;
 }
 
@@ -7258,12 +7260,12 @@ static inline int ext3_feature_set_ok(struct super_block *sb)
 static void ext4_kill_sb(struct super_block *sb)
 {
 	struct ext4_sb_info *sbi = EXT4_SB(sb);
-	struct block_device *journal_bdev = sbi ? sbi->s_journal_bdev : NULL;
+	struct bdev_handle *handle = sbi ? sbi->s_journal_bdev_handle : NULL;
 
 	kill_block_super(sb);
 
-	if (journal_bdev)
-		blkdev_put(journal_bdev, sb);
+	if (handle)
+		bdev_release(handle);
 }
 
 static struct file_system_type ext4_fs_type = {
-- 
2.35.3


  parent reply	other threads:[~2023-08-23 10:50 UTC|newest]

Thread overview: 166+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-08-23 10:48 [PATCH v3 0/29] block: Make blkdev_get_by_*() return handle Jan Kara
2023-09-27  9:34 ` [dm-devel] [PATCH v4 " Jan Kara
2023-09-27  9:34 ` Jan Kara
2023-09-27  9:34 ` Jan Kara
2023-09-27  9:34 ` [f2fs-dev] " Jan Kara
2023-09-27  9:34 ` Jan Kara
2023-08-23 10:48 ` [PATCH v3 " Jan Kara
2023-08-23 10:48 ` [dm-devel] " Jan Kara
2023-08-23 10:48 ` Jan Kara
2023-08-23 10:48 ` Jan Kara
2023-08-23 10:48 ` [f2fs-dev] " Jan Kara
2023-08-23 10:48 ` [PATCH 01/29] block: Provide bdev_open_* functions Jan Kara
2023-08-25 11:44   ` Christian Brauner
2023-08-23 10:48 ` [PATCH 02/29] block: Use bdev_open_by_dev() in blkdev_open() Jan Kara
2023-08-25  2:28   ` Al Viro
2023-08-25  9:45     ` Jan Kara
2023-08-25 13:29       ` Christian Brauner
2023-08-28 16:46         ` Jan Kara
2023-08-29 11:03           ` Christian Brauner
2023-08-23 10:48 ` [PATCH 03/29] block: Use bdev_open_by_dev() in disk_scan_partitions() and blkdev_bszset() Jan Kara
2023-08-25 11:45   ` Christian Brauner
2023-08-23 10:48 ` [PATCH 04/29] drdb: Convert to use bdev_open_by_path() Jan Kara
2023-08-25 11:47   ` Christian Brauner
2023-08-23 10:48 ` [PATCH 05/29] pktcdvd: Convert to bdev_open_by_dev() Jan Kara
2023-08-25 11:53   ` Christian Brauner
2023-08-23 10:48 ` [PATCH 06/29] rnbd-srv: Convert to use bdev_open_by_path() Jan Kara
2023-08-25 11:55   ` Christian Brauner
2023-08-23 10:48 ` [PATCH 07/29] xen/blkback: Convert to bdev_open_by_dev() Jan Kara
2023-08-25 11:56   ` Christian Brauner
2023-08-23 10:48 ` [PATCH 08/29] zram: Convert to use bdev_open_by_dev() Jan Kara
2023-08-25 11:57   ` Christian Brauner
2023-08-23 10:48 ` [PATCH 09/29] bcache: Convert to bdev_open_by_path() Jan Kara
2023-08-25 12:06   ` Christian Brauner
2023-08-23 10:48 ` [PATCH 10/29] dm: Convert to bdev_open_by_dev() Jan Kara
2023-08-23 10:48   ` [dm-devel] " Jan Kara
2023-08-25 12:08   ` Christian Brauner
2023-08-25 12:08     ` [dm-devel] " Christian Brauner
2023-08-23 10:48 ` [PATCH 11/29] md: " Jan Kara
2023-08-25 12:09   ` Christian Brauner
2023-08-23 10:48 ` [PATCH 12/29] mtd: block2mtd: Convert to bdev_open_by_dev/path() Jan Kara
2023-08-23 10:48   ` Jan Kara
2023-08-25 12:11   ` Christian Brauner
2023-08-25 12:11     ` Christian Brauner
2023-08-23 10:48 ` [PATCH 13/29] nvmet: Convert to bdev_open_by_path() Jan Kara
2023-08-23 19:36   ` Chaitanya Kulkarni
2023-08-25 12:12   ` Christian Brauner
2023-08-23 10:48 ` [PATCH 14/29] s390/dasd: " Jan Kara
2023-08-25 12:14   ` Christian Brauner
2023-09-27 21:43   ` Stefan Haberland
2023-10-02 11:24     ` Jan Kara
2023-08-23 10:48 ` [PATCH 15/29] scsi: target: " Jan Kara
2023-08-25 12:15   ` Christian Brauner
2023-08-23 10:48 ` [PATCH 16/29] PM: hibernate: Convert to bdev_open_by_dev() Jan Kara
2023-08-25 12:17   ` Christian Brauner
2023-08-23 10:48 ` [PATCH 17/29] PM: hibernate: Drop unused snapshot_test argument Jan Kara
2023-08-25 12:18   ` Christian Brauner
2023-08-23 10:48 ` [PATCH 18/29] mm/swap: Convert to use bdev_open_by_dev() Jan Kara
2023-08-25 12:19   ` Christian Brauner
2023-08-23 10:48 ` [PATCH 19/29] fs: Convert to bdev_open_by_dev() Jan Kara
2023-08-25 12:20   ` Christian Brauner
2023-08-23 10:48 ` [PATCH 20/29] btrfs: Convert to bdev_open_by_path() Jan Kara
2023-08-25 12:26   ` Christian Brauner
2023-08-23 10:48 ` [PATCH 21/29] erofs: Convert to use bdev_open_by_path() Jan Kara
2023-08-23 10:48   ` Jan Kara
2023-08-25 12:27   ` Christian Brauner
2023-08-25 12:27     ` Christian Brauner
2023-08-23 10:48 ` Jan Kara [this message]
2023-08-25 12:29   ` [PATCH 22/29] ext4: Convert to bdev_open_by_dev() Christian Brauner
2023-08-23 10:48 ` [f2fs-dev] [PATCH 23/29] f2fs: Convert to bdev_open_by_dev/path() Jan Kara
2023-08-23 10:48   ` Jan Kara
2023-08-25 12:30   ` [f2fs-dev] " Christian Brauner
2023-08-25 12:30     ` Christian Brauner
2023-08-28 12:57   ` [f2fs-dev] " Chao Yu
2023-08-28 12:57     ` Chao Yu
2023-08-28 16:35     ` [f2fs-dev] " Jan Kara
2023-08-28 16:35       ` Jan Kara
2023-08-23 10:48 ` [PATCH 24/29] jfs: Convert to bdev_open_by_dev() Jan Kara
2023-08-25 12:31   ` Christian Brauner
2023-08-23 10:48 ` [PATCH 25/29] nfs/blocklayout: Convert to use bdev_open_by_dev/path() Jan Kara
2023-08-25 12:33   ` Christian Brauner
2023-08-23 10:48 ` [PATCH 26/29] ocfs2: Convert to use bdev_open_by_dev() Jan Kara
2023-08-25 12:34   ` Christian Brauner
2023-08-23 10:48 ` [PATCH 27/29] reiserfs: Convert to bdev_open_by_dev/path() Jan Kara
2023-08-23 10:48   ` Jan Kara
2023-08-25 12:35   ` Christian Brauner
2023-08-23 10:48 ` [PATCH 28/29] xfs: Convert to bdev_open_by_path() Jan Kara
2023-08-23 22:11   ` Dave Chinner
2023-08-24 10:28     ` Jan Kara
2023-08-24 20:29       ` Jan Kara
2023-08-24 23:06         ` Dave Chinner
2023-08-25 12:38         ` Christian Brauner
2023-08-23 10:48 ` [PATCH 29/29] block: Remove blkdev_get_by_*() functions Jan Kara
2023-08-25 12:42   ` Christian Brauner
2023-08-25 13:32 ` [PATCH v3 0/29] block: Make blkdev_get_by_*() return handle Christian Brauner
2023-08-25 13:32   ` Christian Brauner
2023-08-25 13:32   ` Christian Brauner
2023-08-25 13:32   ` [dm-devel] " Christian Brauner
2023-08-25 13:32   ` Christian Brauner
2023-08-25 13:32   ` [f2fs-dev] " Christian Brauner
2023-08-28 17:07   ` Jan Kara
2023-08-28 17:07     ` Jan Kara
2023-08-28 17:07     ` [dm-devel] " Jan Kara
2023-08-28 17:07     ` Jan Kara
2023-08-28 17:07     ` Jan Kara
2023-08-28 17:07     ` [f2fs-dev] " Jan Kara
2023-08-29 11:02     ` Christian Brauner
2023-08-29 11:02       ` Christian Brauner
2023-08-29 11:02       ` [dm-devel] " Christian Brauner
2023-08-29 11:02       ` Christian Brauner
2023-08-29 11:02       ` Christian Brauner
2023-08-29 11:02       ` [f2fs-dev] " Christian Brauner
2023-09-27  9:34 ` [PATCH 01/29] block: Provide bdev_open_* functions Jan Kara
2023-09-27  9:34 ` [PATCH 02/29] block: Use bdev_open_by_dev() in blkdev_open() Jan Kara
2023-09-27  9:34 ` [PATCH 03/29] block: Use bdev_open_by_dev() in disk_scan_partitions() and blkdev_bszset() Jan Kara
2023-09-27  9:34 ` [PATCH 04/29] drdb: Convert to use bdev_open_by_path() Jan Kara
2023-09-27  9:34 ` [PATCH 05/29] pktcdvd: Convert to bdev_open_by_dev() Jan Kara
2023-09-27  9:34 ` [PATCH 06/29] rnbd-srv: Convert to use bdev_open_by_path() Jan Kara
2023-09-27  9:34 ` [PATCH 07/29] xen/blkback: Convert to bdev_open_by_dev() Jan Kara
2023-09-27  9:34 ` [PATCH 08/29] zram: Convert to use bdev_open_by_dev() Jan Kara
2023-09-27  9:34 ` [PATCH 09/29] bcache: Convert to bdev_open_by_path() Jan Kara
2023-09-27  9:34 ` [PATCH 10/29] dm: Convert to bdev_open_by_dev() Jan Kara
2023-09-27  9:34   ` [dm-devel] " Jan Kara
2023-09-27  9:34 ` [PATCH 11/29] md: " Jan Kara
2023-09-27  9:34 ` [PATCH 12/29] mtd: block2mtd: Convert to bdev_open_by_dev/path() Jan Kara
2023-09-27  9:34   ` Jan Kara
2023-09-27  9:34 ` [PATCH 13/29] nvmet: Convert to bdev_open_by_path() Jan Kara
2023-09-27  9:34 ` [PATCH 14/29] s390/dasd: " Jan Kara
2023-09-27  9:34 ` [PATCH 15/29] scsi: target: " Jan Kara
2023-09-27 15:36   ` Martin K. Petersen
2023-09-27  9:34 ` [PATCH 16/29] PM: hibernate: Convert to bdev_open_by_dev() Jan Kara
2023-09-27  9:34 ` [PATCH 17/29] PM: hibernate: Drop unused snapshot_test argument Jan Kara
2023-09-27  9:34 ` [PATCH 18/29] mm/swap: Convert to use bdev_open_by_dev() Jan Kara
2023-09-27  9:34 ` [PATCH 19/29] fs: Convert to bdev_open_by_dev() Jan Kara
2023-09-27  9:34 ` [PATCH 20/29] btrfs: Convert to bdev_open_by_path() Jan Kara
2023-09-27  9:34 ` [PATCH 21/29] erofs: Convert to use bdev_open_by_path() Jan Kara
2023-09-27  9:34   ` Jan Kara
2023-09-27  9:34 ` [PATCH 22/29] ext4: Convert to bdev_open_by_dev() Jan Kara
2023-09-27  9:34 ` [PATCH 23/29] f2fs: Convert to bdev_open_by_dev/path() Jan Kara
2023-09-27  9:34   ` [f2fs-dev] " Jan Kara
2023-09-27  9:34 ` [PATCH 24/29] jfs: Convert to bdev_open_by_dev() Jan Kara
2023-09-27  9:34 ` [PATCH 25/29] nfs/blocklayout: Convert to use bdev_open_by_dev/path() Jan Kara
2023-09-27  9:34 ` [PATCH 26/29] ocfs2: Convert to use bdev_open_by_dev() Jan Kara
2023-09-27  9:34 ` [PATCH 27/29] reiserfs: Convert to bdev_open_by_dev/path() Jan Kara
2023-09-27  9:34   ` Jan Kara
2023-09-27  9:34 ` [PATCH 28/29] xfs: Convert to bdev_open_by_path() Jan Kara
2023-09-27 15:40   ` Darrick J. Wong
2023-09-27  9:34 ` [PATCH 29/29] block: Remove blkdev_get_by_*() functions Jan Kara
2023-09-27 14:19 ` [PATCH v4 0/29] block: Make blkdev_get_by_*() return handle Jens Axboe
2023-09-27 14:19   ` Jens Axboe
2023-09-27 14:19   ` Jens Axboe
2023-09-27 14:19   ` [dm-devel] " Jens Axboe
2023-09-27 14:19   ` Jens Axboe
2023-09-27 14:19   ` [f2fs-dev] " Jens Axboe
2023-09-27 16:21 ` Christian Brauner
2023-09-27 16:21   ` Christian Brauner
2023-09-27 16:21   ` Christian Brauner
2023-09-27 16:21   ` [dm-devel] " Christian Brauner
2023-09-27 16:21   ` Christian Brauner
2023-09-27 16:21   ` [f2fs-dev] " Christian Brauner
2023-10-02  7:57   ` Jan Kara
2023-10-02  7:57     ` Jan Kara
2023-10-02  7:57     ` [dm-devel] " Jan Kara
2023-10-02  7:57     ` Jan Kara
2023-10-02  7:57     ` Jan Kara
2023-10-02  7:57     ` [f2fs-dev] " Jan Kara
  -- strict thread matches above, loose matches on Subject: below --
2023-08-11 11:04 [PATCH v2 " Jan Kara
2023-08-11 11:04 ` [PATCH 22/29] ext4: Convert to bdev_open_by_dev() Jan Kara

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20230823104857.11437-22-jack@suse.cz \
    --to=jack@suse.cz \
    --cc=axboe@kernel.dk \
    --cc=brauner@kernel.org \
    --cc=hch@infradead.org \
    --cc=hch@lst.de \
    --cc=linux-block@vger.kernel.org \
    --cc=linux-ext4@vger.kernel.org \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=tytso@mit.edu \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.