btrfs: voluntarily relinquish cpu when doing a full fsync
Doing a full fsync may require processing many leaves of metadata, which can take some time and result in a task monopolizing a cpu for too long. So add a cond_resched() after processing a leaf when doing a full fsync, while not holding any locks on any tree (a subvolume or a log tree). Signed-off-by: Filipe Manana <fdmanana@suse.com> Signed-off-by: David Sterba <dsterba@suse.com>
This commit is contained in:
parent
5b7ce5e287
commit
96acb3753e
|
@ -5712,6 +5712,13 @@ next_key:
|
|||
} else {
|
||||
break;
|
||||
}
|
||||
|
||||
/*
|
||||
* We may process many leaves full of items for our inode, so
|
||||
* avoid monopolizing a cpu for too long by rescheduling while
|
||||
* not holding locks on any tree.
|
||||
*/
|
||||
cond_resched();
|
||||
}
|
||||
if (ins_nr) {
|
||||
ret = copy_items(trans, inode, dst_path, path, ins_start_slot,
|
||||
|
|
Loading…
Reference in New Issue