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>
This commit is contained in:
parent
48b36a602a
commit
1194a82481
|
@ -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);
|
||||
|
|
Loading…
Reference in New Issue