Btrfs: fix qgroup rescan worker initialization
authorFilipe Manana <fdmanana@suse.com>
Thu, 24 Nov 2016 02:09:04 +0000 (02:09 +0000)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 6 Jan 2017 09:40:10 +0000 (10:40 +0100)
commit1a5ec7dd17a98547618ea7b0ef3bbeb3837a7c49
tree62a436be168751b4980a20ed0cc0d7163bbe0b37
parenta1e0e0476afb2471f9cee0a995206b053a8241f8
Btrfs: fix qgroup rescan worker initialization

commit 8d9eddad19467b008e0c881bc3133d7da94b7ec1 upstream.

We were setting the qgroup_rescan_running flag to true only after the
rescan worker started (which is a task run by a queue). So if a user
space task starts a rescan and immediately after asks to wait for the
rescan worker to finish, this second call might happen before the rescan
worker task starts running, in which case the rescan wait ioctl returns
immediatley, not waiting for the rescan worker to finish.

This was making the fstest btrfs/022 fail very often.

Fixes: d2c609b834d6 (btrfs: properly track when rescan worker is running)
Signed-off-by: Filipe Manana <fdmanana@suse.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
fs/btrfs/qgroup.c