btrfs: only run delayed refs once before committing
authorJosef Bacik <josef@toxicpanda.com>
Fri, 18 Dec 2020 19:24:22 +0000 (14:24 -0500)
committerDavid Sterba <dsterba@suse.com>
Mon, 8 Feb 2021 21:58:56 +0000 (22:58 +0100)
commitad368f3394b796fd7faa46da8d326c98718f21d7
tree746b747f1af12723741a3fdf907a5cfb31c0c1dc
parent61a56a992fcfc694a54de77d896350b9d0588e86
btrfs: only run delayed refs once before committing

We try to pre-flush the delayed refs when committing, because we want to
do as little work as possible in the critical section of the transaction
commit.

However doing this twice can lead to very long transaction commit delays
as other threads are allowed to continue to generate more delayed refs,
which potentially delays the commit by multiple minutes in very extreme
cases.

So simply stick to one pre-flush, and then continue the rest of the
transaction commit.

Reviewed-by: Nikolay Borisov <nborisov@suse.com>
Signed-off-by: Josef Bacik <josef@toxicpanda.com>
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/transaction.c