OSDN Git Service

btrfs: simplify error handling in __btrfs_write_out_cache()
authorJohannes Thumshirn <johannes.thumshirn@wdc.com>
Tue, 11 Feb 2020 15:10:22 +0000 (00:10 +0900)
committerDavid Sterba <dsterba@suse.com>
Mon, 23 Mar 2020 16:01:43 +0000 (17:01 +0100)
The error cleanup gotos in __btrfs_write_out_cache() needlessly jump
back making the code less readable then needed.  Flatten them out so no
back-jump is necessary and the read flow is uninterrupted.

Reviewed-by: Josef Bacik <josef@toxicpanda.com>
Signed-off-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/free-space-cache.c

index 460a6c1..3613da0 100644 (file)
@@ -1367,18 +1367,6 @@ static int __btrfs_write_out_cache(struct btrfs_root *root, struct inode *inode,
 
        return 0;
 
-out:
-       io_ctl->inode = NULL;
-       io_ctl_free(io_ctl);
-       if (ret) {
-               invalidate_inode_pages2(inode->i_mapping);
-               BTRFS_I(inode)->generation = 0;
-       }
-       btrfs_update_inode(trans, root, inode);
-       if (must_iput)
-               iput(inode);
-       return ret;
-
 out_nospc_locked:
        cleanup_bitmap_list(&bitmap_list);
        spin_unlock(&ctl->tree_lock);
@@ -1391,7 +1379,17 @@ out_unlock:
        if (block_group && (block_group->flags & BTRFS_BLOCK_GROUP_DATA))
                up_write(&block_group->data_rwsem);
 
-       goto out;
+out:
+       io_ctl->inode = NULL;
+       io_ctl_free(io_ctl);
+       if (ret) {
+               invalidate_inode_pages2(inode->i_mapping);
+               BTRFS_I(inode)->generation = 0;
+       }
+       btrfs_update_inode(trans, root, inode);
+       if (must_iput)
+               iput(inode);
+       return ret;
 }
 
 int btrfs_write_out_cache(struct btrfs_trans_handle *trans,