mirror of
https://github.com/torvalds/linux.git
synced 2026-05-28 00:53:34 +02:00
btrfs: qgroup: set quota enabled bit if quota disable fails flushing reservations
Before waiting for the rescan worker to finish and flushing reservations,
we clear the BTRFS_FS_QUOTA_ENABLED flag from fs_info. If we fail flushing
reservations we leave with the flag not set which is not correct since
quotas are still enabled - we must set back the flag on error paths, such
as when we fail to start a transaction, except for error paths that abort
a transaction. The reservation flushing happens very early before we do
any operation that actually disables quotas and before we start a
transaction, so set back BTRFS_FS_QUOTA_ENABLED if it fails.
Fixes: af0e2aab3b ("btrfs: qgroup: flush reservations during quota disable")
CC: stable@vger.kernel.org # 6.12+
Reviewed-by: Qu Wenruo <wqu@suse.com>
Signed-off-by: Filipe Manana <fdmanana@suse.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
This commit is contained in:
parent
736bd9d2e3
commit
e41c75ca31
|
|
@ -1334,11 +1334,14 @@ int btrfs_quota_disable(struct btrfs_fs_info *fs_info)
|
|||
|
||||
/*
|
||||
* We have nothing held here and no trans handle, just return the error
|
||||
* if there is one.
|
||||
* if there is one and set back the quota enabled bit since we didn't
|
||||
* actually disable quotas.
|
||||
*/
|
||||
ret = flush_reservations(fs_info);
|
||||
if (ret)
|
||||
if (ret) {
|
||||
set_bit(BTRFS_FS_QUOTA_ENABLED, &fs_info->flags);
|
||||
return ret;
|
||||
}
|
||||
|
||||
/*
|
||||
* 1 For the root item
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user