From: Nikolay Borisov Date: Fri, 9 Feb 2018 09:30:18 +0000 (+0200) Subject: btrfs: Move error handling of btrfs_start_dirty_block_groups closer to call site X-Git-Tag: v5.15~8810^2~149 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=f9cacae3145a07c8a2b699f18824df0cf7778431;p=platform%2Fkernel%2Flinux-starfive.git 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 --- 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);