[PATCH 03/21] btrfs: zoned: sink zone check into btrfs_repair_one_zone
From: Johannes Thumshirn <hidden>
Date: 2021-11-24 09:31:00
Subsystem:
btrfs file system, filesystems (vfs and infrastructure), the rest · Maintainers:
Chris Mason, David Sterba, Alexander Viro, Christian Brauner, Linus Torvalds
Sink zone check into btrfs_repair_one_zone() so we don't need to do it in all callers. Also as btrfs_repair_one_zone() doesn't return a sensible error, just make it a void function. Signed-off-by: Johannes Thumshirn <redacted> --- fs/btrfs/extent_io.c | 3 +-- fs/btrfs/scrub.c | 4 ++-- fs/btrfs/volumes.c | 13 ++++++++----- fs/btrfs/volumes.h | 2 +- 4 files changed, 12 insertions(+), 10 deletions(-)
diff --git a/fs/btrfs/extent_io.c b/fs/btrfs/extent_io.c
index 1654c611d2002..96c2e40887772 100644
--- a/fs/btrfs/extent_io.c
+++ b/fs/btrfs/extent_io.c@@ -2314,8 +2314,7 @@ static int repair_io_failure(struct btrfs_fs_info *fs_info, u64 ino, u64 start, ASSERT(!(fs_info->sb->s_flags & SB_RDONLY)); BUG_ON(!mirror_num); - if (btrfs_is_zoned(fs_info)) - return btrfs_repair_one_zone(fs_info, logical); + btrfs_repair_one_zone(fs_info, logical); bio = btrfs_bio_alloc(1); bio->bi_iter.bi_size = 0;
diff --git a/fs/btrfs/scrub.c b/fs/btrfs/scrub.c
index d175c5ab11349..30bb304bb5e9a 100644
--- a/fs/btrfs/scrub.c
+++ b/fs/btrfs/scrub.c@@ -852,8 +852,8 @@ static int scrub_handle_errored_block(struct scrub_block *sblock_to_check) have_csum = sblock_to_check->pagev[0]->have_csum; dev = sblock_to_check->pagev[0]->dev; - if (btrfs_is_zoned(fs_info) && !sctx->is_dev_replace) - return btrfs_repair_one_zone(fs_info, logical); + if (!sctx->is_dev_replace) + btrfs_repair_one_zone(fs_info, logical); /* * We must use GFP_NOFS because the scrub task might be waiting for a
diff --git a/fs/btrfs/volumes.c b/fs/btrfs/volumes.c
index ae1a4f2a8af64..d0615256dacc3 100644
--- a/fs/btrfs/volumes.c
+++ b/fs/btrfs/volumes.c@@ -8329,23 +8329,26 @@ static int relocating_repair_kthread(void *data) return ret; } -int btrfs_repair_one_zone(struct btrfs_fs_info *fs_info, u64 logical) +void btrfs_repair_one_zone(struct btrfs_fs_info *fs_info, u64 logical) { struct btrfs_block_group *cache; + if (!btrfs_is_zoned(fs_info)) + return; + /* Do not attempt to repair in degraded state */ if (btrfs_test_opt(fs_info, DEGRADED)) - return 0; + return; cache = btrfs_lookup_block_group(fs_info, logical); if (!cache) - return 0; + return; spin_lock(&cache->lock); if (cache->relocating_repair) { spin_unlock(&cache->lock); btrfs_put_block_group(cache); - return 0; + return; } cache->relocating_repair = 1; spin_unlock(&cache->lock);
@@ -8353,5 +8356,5 @@ int btrfs_repair_one_zone(struct btrfs_fs_info *fs_info, u64 logical) kthread_run(relocating_repair_kthread, cache, "btrfs-relocating-repair"); - return 0; + return; }
diff --git a/fs/btrfs/volumes.h b/fs/btrfs/volumes.h
index 3b81306807493..ab30cf4236fa3 100644
--- a/fs/btrfs/volumes.h
+++ b/fs/btrfs/volumes.h@@ -637,6 +637,6 @@ enum btrfs_raid_types __attribute_const__ btrfs_bg_flags_to_raid_index(u64 flags int btrfs_bg_type_to_factor(u64 flags); const char *btrfs_bg_type_to_raid_name(u64 flags); int btrfs_verify_dev_extents(struct btrfs_fs_info *fs_info); -int btrfs_repair_one_zone(struct btrfs_fs_info *fs_info, u64 logical); +void btrfs_repair_one_zone(struct btrfs_fs_info *fs_info, u64 logical); #endif
--
2.31.1