]> Git Repo - linux.git/commit
btrfs: reschedule when updating chunk maps at the end of a device replace
authorFilipe Manana <[email protected]>
Thu, 25 Jul 2024 09:46:01 +0000 (10:46 +0100)
committerDavid Sterba <[email protected]>
Tue, 10 Sep 2024 14:51:17 +0000 (16:51 +0200)
commitb79f1c2caadc5c6251241977c7987fefdeadc2d9
tree807dafa61ed77a8eed611a769536e6be55953b59
parent5fe191244955f334e35bc4ebaadf3300f22b6b41
btrfs: reschedule when updating chunk maps at the end of a device replace

At the end of a device replace we must go over all the chunk maps and
update their stripes to point to the target device instead of the source
device. We iterate over the chunk maps while holding a write lock and
we never reschedule, which can result in monopolizing a CPU for too long
and blocking readers for too long (it's a rw lock, non-blocking).

So improve on this by rescheduling if necessary. This is safe because at
this point we are holding the chunk mutex, which means no new chunks can
be allocated and therefore we don't risk missing a new chunk map that
covers a range behind the last one we processed before rescheduling.

Signed-off-by: Filipe Manana <[email protected]>
Reviewed-by: David Sterba <[email protected]>
Signed-off-by: David Sterba <[email protected]>
fs/btrfs/dev-replace.c
This page took 0.049596 seconds and 4 git commands to generate.