From f9cacae3145a07c8a2b699f18824df0cf7778431 Mon Sep 17 00:00:00 2001 From: Nikolay Borisov Date: Fri, 9 Feb 2018 11:30:18 +0200 Subject: [PATCH] btrfs: Move error handling of btrfs_start_dirty_block_groups closer to call site Even though btrfs_start_dirty_block_groups is fairly in the beginning of btrfs_commit_transaction outside of the critical section defined by the transaction states it can only be run by a single comitter. In other words it defines its own critical section thanks to the BTRFS_TRANS_DIRTY_BG run flag and ro_block_group_mutex. However, its error handling is outside of this critical section which is a bit counter-intuitive. So move the error handling righ after the function is executed and let the sole runner of dirty block groups handle the return value. No functional changes. Signed-off-by: Nikolay Borisov Reviewed-by: David Sterba Signed-off-by: David Sterba --- fs/btrfs/transaction.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/fs/btrfs/transaction.c b/fs/btrfs/transaction.c index ca2d911..6654385 100644 --- a/fs/btrfs/transaction.c +++ b/fs/btrfs/transaction.c @@ -2013,12 +2013,13 @@ int btrfs_commit_transaction(struct btrfs_trans_handle *trans) run_it = 1; mutex_unlock(&fs_info->ro_block_group_mutex); - if (run_it) + if (run_it) { ret = btrfs_start_dirty_block_groups(trans); - } - if (ret) { - btrfs_end_transaction(trans); - return ret; + if (ret) { + btrfs_end_transaction(trans); + return ret; + } + } } spin_lock(&fs_info->trans_lock); -- 2.7.4