]> git.ipfire.org Git - thirdparty/linux.git/commit
btrfs: avoid start and commit empty transaction when flushing qgroups
authorFilipe Manana <fdmanana@suse.com>
Wed, 26 Jul 2023 15:57:13 +0000 (16:57 +0100)
committerDavid Sterba <dsterba@suse.com>
Mon, 21 Aug 2023 12:52:18 +0000 (14:52 +0200)
commit9c93c238c15ffd8d5622c51a475d5fb35f65ca07
treecc6ff5339d63755b2561b1c1aa79dc5efb076f18
parent6705b48a50d7cad55b763ae4c9544875a9727f80
btrfs: avoid start and commit empty transaction when flushing qgroups

When flushing qgroups, we try to join a running transaction, with
btrfs_join_transaction(), and then commit the transaction. However using
btrfs_join_transaction() will result in creating a new transaction in case
there isn't any running or if there's an existing one already committing.
This is pointless as we only need to attach to an existing one that is
not committing and in case there's an existing one committing, wait for
its commit to complete. Creating and committing an empty transaction is
wasteful, pointless IO and unnecessary rotation of the backup roots.

So use btrfs_attach_transaction_barrier() instead, to avoid creating and
committing empty transactions.

Signed-off-by: Filipe Manana <fdmanana@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/qgroup.c