btrfs: check worker before need_preemptive_reclaim
need_preemptive_reclaim() does some calculations, which aren't heavy, but if we're already running preemptive reclaim there's no reason to do them at all, so re-order the checks so that we don't do the calculation if we're already doing reclaim. Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com> Signed-off-by: Josef Bacik <josef@toxicpanda.com> Reviewed-by: David Sterba <dsterba@suse.com> Signed-off-by: David Sterba <dsterba@suse.com>
This commit is contained in:
parent
94358c35d8
commit
ed738ba7f9
@ -1588,8 +1588,8 @@ static int __reserve_bytes(struct btrfs_fs_info *fs_info,
|
|||||||
* the async reclaim as we will panic.
|
* the async reclaim as we will panic.
|
||||||
*/
|
*/
|
||||||
if (!test_bit(BTRFS_FS_LOG_RECOVERING, &fs_info->flags) &&
|
if (!test_bit(BTRFS_FS_LOG_RECOVERING, &fs_info->flags) &&
|
||||||
need_preemptive_reclaim(fs_info, space_info) &&
|
!work_busy(&fs_info->preempt_reclaim_work) &&
|
||||||
!work_busy(&fs_info->preempt_reclaim_work)) {
|
need_preemptive_reclaim(fs_info, space_info)) {
|
||||||
trace_btrfs_trigger_flush(fs_info, space_info->flags,
|
trace_btrfs_trigger_flush(fs_info, space_info->flags,
|
||||||
orig_bytes, flush, "preempt");
|
orig_bytes, flush, "preempt");
|
||||||
queue_work(system_unbound_wq,
|
queue_work(system_unbound_wq,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user