mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-11-24 13:40:53 +07:00
btrfs: relocation: Check cancel request after each extent found
When relocating data block groups with tons of small extents, or large metadata block groups, there can be over 200,000 extents. We will iterate all extents of such block group in relocate_block_group(), where iteration itself can be kinda time-consuming. So when user want to cancel the balance, the extent iteration loop can be another target. This patch will add the cancelling check in the extent iteration loop of relocate_block_group() to make balance cancelling faster. 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>
This commit is contained in:
parent
7f913c7cfe
commit
f31ea0888c
@ -4232,6 +4232,10 @@ static noinline_for_stack int relocate_block_group(struct reloc_control *rc)
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (btrfs_should_cancel_balance(fs_info)) {
|
||||
err = -ECANCELED;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (trans && progress && err == -ENOSPC) {
|
||||
ret = btrfs_force_chunk_alloc(trans, rc->block_group->flags);
|
||||
|
Loading…
Reference in New Issue
Block a user