diff options
author | Qu Wenruo <wqu@suse.com> | 2022-03-11 15:38:41 +0800 |
---|---|---|
committer | David Sterba <dsterba@suse.com> | 2022-05-16 17:17:30 +0200 |
commit | 1194a82481d8f37892e0362b7e77d3627f51d017 (patch) | |
tree | c87592ced04a3f294c826737671903fff1313214 /fs/btrfs | |
parent | 48b36a602a335c184505346b5b37077840660634 (diff) | |
download | linux-1194a82481d8f37892e0362b7e77d3627f51d017.tar.gz linux-1194a82481d8f37892e0362b7e77d3627f51d017.tar.bz2 linux-1194a82481d8f37892e0362b7e77d3627f51d017.zip |
btrfs: calculate physical_end using dev_extent_len directly in scrub_stripe()
The variable @physical_end is the exclusive stripe end, currently it's
calculated using @physical + @dev_extent_len / map->stripe_len *
map->stripe_len.
And since at allocation time we ensured dev_extent_len is stripe_len
aligned, the result is the same as @physical + @dev_extent_len.
So this patch will just assign @physical and @physical_end early,
without using @nstripes.
This is especially helpful for any possible out: label user, as now we
only need to initialize @offset before going to out: label.
Since we're here, also make @physical_end constant.
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Qu Wenruo <wqu@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
Diffstat (limited to 'fs/btrfs')
-rw-r--r-- | fs/btrfs/scrub.c | 6 |
1 files changed, 2 insertions, 4 deletions
diff --git a/fs/btrfs/scrub.c b/fs/btrfs/scrub.c index 3985225f27be..530913dcc76f 100644 --- a/fs/btrfs/scrub.c +++ b/fs/btrfs/scrub.c @@ -3160,10 +3160,10 @@ static noinline_for_stack int scrub_stripe(struct scrub_ctx *sctx, int slot; u64 nstripes; struct extent_buffer *l; - u64 physical; + u64 physical = map->stripes[stripe_index].physical; u64 logical; u64 logic_end; - u64 physical_end; + const u64 physical_end = physical + dev_extent_len; u64 generation; int mirror_num; struct btrfs_key key; @@ -3182,7 +3182,6 @@ static noinline_for_stack int scrub_stripe(struct scrub_ctx *sctx, int extent_mirror_num; int stop_loop = 0; - physical = map->stripes[stripe_index].physical; offset = 0; nstripes = div64_u64(dev_extent_len, map->stripe_len); mirror_num = 1; @@ -3219,7 +3218,6 @@ static noinline_for_stack int scrub_stripe(struct scrub_ctx *sctx, path->reada = READA_FORWARD; logical = chunk_logical + offset; - physical_end = physical + nstripes * map->stripe_len; if (map->type & BTRFS_BLOCK_GROUP_RAID56_MASK) { get_raid56_logic_offset(physical_end, stripe_index, map, &logic_end, NULL); |