Commit 14ed830d authored by Junchao Sun's avatar Junchao Sun Committed by David Sterba

btrfs: qgroup: use goto style to handle errors in add_delayed_ref()

Clean up resources using goto to get rid of repeated code.
Reviewed-by: default avatarQu Wenruo <wqu@suse.com>
Signed-off-by: default avatarJunchao Sun <sunjunchao2870@gmail.com>
Reviewed-by: default avatarDavid Sterba <dsterba@suse.com>
Signed-off-by: default avatarDavid Sterba <dsterba@suse.com>
parent 81891974
...@@ -1005,18 +1005,13 @@ static int add_delayed_ref(struct btrfs_trans_handle *trans, ...@@ -1005,18 +1005,13 @@ static int add_delayed_ref(struct btrfs_trans_handle *trans,
return -ENOMEM; return -ENOMEM;
head_ref = kmem_cache_alloc(btrfs_delayed_ref_head_cachep, GFP_NOFS); head_ref = kmem_cache_alloc(btrfs_delayed_ref_head_cachep, GFP_NOFS);
if (!head_ref) { if (!head_ref)
kmem_cache_free(btrfs_delayed_ref_node_cachep, node); goto free_node;
return -ENOMEM;
}
if (btrfs_qgroup_full_accounting(fs_info) && !generic_ref->skip_qgroup) { if (btrfs_qgroup_full_accounting(fs_info) && !generic_ref->skip_qgroup) {
record = kzalloc(sizeof(*record), GFP_NOFS); record = kzalloc(sizeof(*record), GFP_NOFS);
if (!record) { if (!record)
kmem_cache_free(btrfs_delayed_ref_node_cachep, node); goto free_head_ref;
kmem_cache_free(btrfs_delayed_ref_head_cachep, head_ref);
return -ENOMEM;
}
} }
init_delayed_ref_common(fs_info, node, generic_ref); init_delayed_ref_common(fs_info, node, generic_ref);
...@@ -1052,6 +1047,12 @@ static int add_delayed_ref(struct btrfs_trans_handle *trans, ...@@ -1052,6 +1047,12 @@ static int add_delayed_ref(struct btrfs_trans_handle *trans,
if (qrecord_inserted) if (qrecord_inserted)
return btrfs_qgroup_trace_extent_post(trans, record); return btrfs_qgroup_trace_extent_post(trans, record);
return 0; return 0;
free_head_ref:
kmem_cache_free(btrfs_delayed_ref_head_cachep, head_ref);
free_node:
kmem_cache_free(btrfs_delayed_ref_node_cachep, node);
return -ENOMEM;
} }
/* /*
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment