btrfs: factor out stripe length calculation into a helper
authorQu Wenruo <wqu@suse.com>
Fri, 8 Mar 2024 03:10:30 +0000 (13:40 +1030)
committerDavid Sterba <dsterba@suse.com>
Thu, 1 Aug 2024 15:15:05 +0000 (17:15 +0200)
Currently there are two locations which need to calculate the real
length of a stripe (which can be at the end of a chunk, and the chunk
size may not always be 64K aligned).

Factor them into a helper as we're going to have a third user soon.

Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
Signed-off-by: Qu Wenruo <wqu@suse.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/scrub.c

index 14a8d710001838501623672997ee07b1e956f298..439545710d76f5a5bcd05346c3b4113f6c4823c3 100644 (file)
@@ -1648,14 +1648,20 @@ static void scrub_reset_stripe(struct scrub_stripe *stripe)
        }
 }
 
+static u32 stripe_length(const struct scrub_stripe *stripe)
+{
+       ASSERT(stripe->bg);
+
+       return min(BTRFS_STRIPE_LEN,
+                  stripe->bg->start + stripe->bg->length - stripe->logical);
+}
+
 static void scrub_submit_extent_sector_read(struct scrub_ctx *sctx,
                                            struct scrub_stripe *stripe)
 {
        struct btrfs_fs_info *fs_info = stripe->bg->fs_info;
        struct btrfs_bio *bbio = NULL;
-       unsigned int nr_sectors = min(BTRFS_STRIPE_LEN, stripe->bg->start +
-                                     stripe->bg->length - stripe->logical) >>
-                                 fs_info->sectorsize_bits;
+       unsigned int nr_sectors = stripe_length(stripe) >> fs_info->sectorsize_bits;
        u64 stripe_len = BTRFS_STRIPE_LEN;
        int mirror = stripe->mirror_num;
        int i;
@@ -1729,9 +1735,7 @@ static void scrub_submit_initial_read(struct scrub_ctx *sctx,
 {
        struct btrfs_fs_info *fs_info = sctx->fs_info;
        struct btrfs_bio *bbio;
-       unsigned int nr_sectors = min(BTRFS_STRIPE_LEN, stripe->bg->start +
-                                     stripe->bg->length - stripe->logical) >>
-                                 fs_info->sectorsize_bits;
+       unsigned int nr_sectors = stripe_length(stripe) >> fs_info->sectorsize_bits;
        int mirror = stripe->mirror_num;
 
        ASSERT(stripe->bg);