aboutsummaryrefslogtreecommitdiffstats
path: root/fs/btrfs/volumes.c
diff options
context:
space:
mode:
authorFilipe Manana <fdmanana@suse.com>2019-01-08 11:44:41 +0000
committerDavid Sterba <dsterba@suse.com>2019-01-09 14:52:36 +0100
commita6d8654d885d7d79a3fb82da64eaa489ca332a82 (patch)
treeb83db2ff93e52ee665492f8f32d6d97ac5a3c088 /fs/btrfs/volumes.c
parentBtrfs: fix race between reflink/dedupe and relocation (diff)
downloadlinux-dev-a6d8654d885d7d79a3fb82da64eaa489ca332a82.tar.xz
linux-dev-a6d8654d885d7d79a3fb82da64eaa489ca332a82.zip
Btrfs: fix deadlock when using free space tree due to block group creation
When modifying the free space tree we can end up COWing one of its extent buffers which in turn might result in allocating a new chunk, which in turn can result in flushing (finish creation) of pending block groups. If that happens we can deadlock because creating a pending block group needs to update the free space tree, and if any of the updates tries to modify the same extent buffer that we are COWing, we end up in a deadlock since we try to write lock twice the same extent buffer. So fix this by skipping pending block group creation if we are COWing an extent buffer from the free space tree. This is a case missed by commit 5ce555578e091 ("Btrfs: fix deadlock when writing out free space caches"). Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=202173 Fixes: 5ce555578e091 ("Btrfs: fix deadlock when writing out free space caches") CC: stable@vger.kernel.org # 4.18+ Signed-off-by: Filipe Manana <fdmanana@suse.com> Reviewed-by: David Sterba <dsterba@suse.com> Signed-off-by: David Sterba <dsterba@suse.com>
Diffstat (limited to '')
0 files changed, 0 insertions, 0 deletions