Re: [PATCH 20/40] btrfs: cleanup btrfs_submit_metadata_bio

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 





On 2022/3/22 23:55, Christoph Hellwig wrote:
Remove the unused bio_flags argument and clean up the code flow to be
straight forward.

That flag is a legacy when we use a function pointer for both data and
metadata bio submission.

After commit 953651eb308f ("btrfs: factor out helper adding a page to
bio") and commit 1b36294a6cd5 ("btrfs: call submit_bio_hook directly for
metadata pages") we get rid of the hook, and no longer needs the extra
@bio_flags.

Reviewed-by: Qu Wenruo <wqu@xxxxxxxx>

Thanks,
Qu

Signed-off-by: Christoph Hellwig <hch@xxxxxx>
---
  fs/btrfs/disk-io.c   | 42 ++++++++++++++++--------------------------
  fs/btrfs/disk-io.h   |  2 +-
  fs/btrfs/extent_io.c |  2 +-
  3 files changed, 18 insertions(+), 28 deletions(-)

diff --git a/fs/btrfs/disk-io.c b/fs/btrfs/disk-io.c
index dc497e17dcd06..f43c9ab86e617 100644
--- a/fs/btrfs/disk-io.c
+++ b/fs/btrfs/disk-io.c
@@ -890,6 +890,10 @@ static blk_status_t btree_submit_bio_start(struct inode *inode, struct bio *bio,
  	return btree_csum_one_bio(bio);
  }

+/*
+ * Check if metadata writes should be submitted by async threads so that
+ * checksumming can happen in parallel across all CPUs.
+ */
  static bool should_async_write(struct btrfs_fs_info *fs_info,
  			     struct btrfs_inode *bi)
  {
@@ -903,41 +907,27 @@ static bool should_async_write(struct btrfs_fs_info *fs_info,
  }

  blk_status_t btrfs_submit_metadata_bio(struct inode *inode, struct bio *bio,
-				       int mirror_num, unsigned long bio_flags)
+				       int mirror_num)
  {
  	struct btrfs_fs_info *fs_info = btrfs_sb(inode->i_sb);
  	blk_status_t ret;

-	if (btrfs_op(bio) != BTRFS_MAP_WRITE) {
-		/*
-		 * called for a read, do the setup so that checksum validation
-		 * can happen in the async kernel threads
-		 */
-		ret = btrfs_bio_wq_end_io(fs_info, bio,
-					  BTRFS_WQ_ENDIO_METADATA);
-		if (ret)
-			goto out_w_error;
-		ret = btrfs_map_bio(fs_info, bio, mirror_num);
-	} else if (!should_async_write(fs_info, BTRFS_I(inode))) {
+	if (btrfs_op(bio) == BTRFS_MAP_WRITE) {
+		if (should_async_write(fs_info, BTRFS_I(inode)))
+			return btrfs_wq_submit_bio(inode, bio, mirror_num, 0, 0,
+						   btree_submit_bio_start);
  		ret = btree_csum_one_bio(bio);
  		if (ret)
-			goto out_w_error;
-		ret = btrfs_map_bio(fs_info, bio, mirror_num);
+			return ret;
  	} else {
-		/*
-		 * kthread helpers are used to submit writes so that
-		 * checksumming can happen in parallel across all CPUs
-		 */
-		ret = btrfs_wq_submit_bio(inode, bio, mirror_num, 0,
-					  0, btree_submit_bio_start);
+		/* checksum validation should happen in async threads: */
+		ret = btrfs_bio_wq_end_io(fs_info, bio,
+					  BTRFS_WQ_ENDIO_METADATA);
+		if (ret)
+			return ret;
  	}

-	if (ret)
-		goto out_w_error;
-	return 0;
-
-out_w_error:
-	return ret;
+	return btrfs_map_bio(fs_info, bio, mirror_num);
  }

  #ifdef CONFIG_MIGRATION
diff --git a/fs/btrfs/disk-io.h b/fs/btrfs/disk-io.h
index 2364a30cd9e32..afe3bb96616c9 100644
--- a/fs/btrfs/disk-io.h
+++ b/fs/btrfs/disk-io.h
@@ -87,7 +87,7 @@ int btrfs_validate_metadata_buffer(struct btrfs_bio *bbio,
  				   struct page *page, u64 start, u64 end,
  				   int mirror);
  blk_status_t btrfs_submit_metadata_bio(struct inode *inode, struct bio *bio,
-				       int mirror_num, unsigned long bio_flags);
+				       int mirror_num);
  #ifdef CONFIG_BTRFS_FS_RUN_SANITY_TESTS
  struct btrfs_root *btrfs_alloc_dummy_root(struct btrfs_fs_info *fs_info);
  #endif
diff --git a/fs/btrfs/extent_io.c b/fs/btrfs/extent_io.c
index 238252f86d5ad..58ef0f4fca361 100644
--- a/fs/btrfs/extent_io.c
+++ b/fs/btrfs/extent_io.c
@@ -179,7 +179,7 @@ int __must_check submit_one_bio(struct bio *bio, int mirror_num,
  					    bio_flags);
  	else
  		ret = btrfs_submit_metadata_bio(tree->private_data, bio,
-						mirror_num, bio_flags);
+						mirror_num);

  	if (ret) {
  		bio->bi_status = ret;




[Index of Archives]     [Linux Ext4 Filesystem]     [Union Filesystem]     [Filesystem Testing]     [Ceph Users]     [Ecryptfs]     [NTFS 3]     [AutoFS]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux Cachefs]     [Reiser Filesystem]     [Linux RAID]     [NTFS 3]     [Samba]     [Device Mapper]     [CEPH Development]

  Powered by Linux