|
@@ -4332,17 +4332,17 @@ ocfs2_figure_merge_contig_type(struct ocfs2_extent_tree *et,
|
|
} else if (path->p_tree_depth > 0) {
|
|
} else if (path->p_tree_depth > 0) {
|
|
status = ocfs2_find_cpos_for_left_leaf(sb, path, &left_cpos);
|
|
status = ocfs2_find_cpos_for_left_leaf(sb, path, &left_cpos);
|
|
if (status)
|
|
if (status)
|
|
- goto out;
|
|
|
|
|
|
+ goto exit;
|
|
|
|
|
|
if (left_cpos != 0) {
|
|
if (left_cpos != 0) {
|
|
left_path = ocfs2_new_path_from_path(path);
|
|
left_path = ocfs2_new_path_from_path(path);
|
|
if (!left_path)
|
|
if (!left_path)
|
|
- goto out;
|
|
|
|
|
|
+ goto exit;
|
|
|
|
|
|
status = ocfs2_find_path(et->et_ci, left_path,
|
|
status = ocfs2_find_path(et->et_ci, left_path,
|
|
left_cpos);
|
|
left_cpos);
|
|
if (status)
|
|
if (status)
|
|
- goto out;
|
|
|
|
|
|
+ goto free_left_path;
|
|
|
|
|
|
new_el = path_leaf_el(left_path);
|
|
new_el = path_leaf_el(left_path);
|
|
|
|
|
|
@@ -4359,7 +4359,7 @@ ocfs2_figure_merge_contig_type(struct ocfs2_extent_tree *et,
|
|
le16_to_cpu(new_el->l_next_free_rec),
|
|
le16_to_cpu(new_el->l_next_free_rec),
|
|
le16_to_cpu(new_el->l_count));
|
|
le16_to_cpu(new_el->l_count));
|
|
status = -EINVAL;
|
|
status = -EINVAL;
|
|
- goto out;
|
|
|
|
|
|
+ goto free_left_path;
|
|
}
|
|
}
|
|
rec = &new_el->l_recs[
|
|
rec = &new_el->l_recs[
|
|
le16_to_cpu(new_el->l_next_free_rec) - 1];
|
|
le16_to_cpu(new_el->l_next_free_rec) - 1];
|
|
@@ -4386,18 +4386,18 @@ ocfs2_figure_merge_contig_type(struct ocfs2_extent_tree *et,
|
|
path->p_tree_depth > 0) {
|
|
path->p_tree_depth > 0) {
|
|
status = ocfs2_find_cpos_for_right_leaf(sb, path, &right_cpos);
|
|
status = ocfs2_find_cpos_for_right_leaf(sb, path, &right_cpos);
|
|
if (status)
|
|
if (status)
|
|
- goto out;
|
|
|
|
|
|
+ goto free_left_path;
|
|
|
|
|
|
if (right_cpos == 0)
|
|
if (right_cpos == 0)
|
|
- goto out;
|
|
|
|
|
|
+ goto free_left_path;
|
|
|
|
|
|
right_path = ocfs2_new_path_from_path(path);
|
|
right_path = ocfs2_new_path_from_path(path);
|
|
if (!right_path)
|
|
if (!right_path)
|
|
- goto out;
|
|
|
|
|
|
+ goto free_left_path;
|
|
|
|
|
|
status = ocfs2_find_path(et->et_ci, right_path, right_cpos);
|
|
status = ocfs2_find_path(et->et_ci, right_path, right_cpos);
|
|
if (status)
|
|
if (status)
|
|
- goto out;
|
|
|
|
|
|
+ goto free_right_path;
|
|
|
|
|
|
new_el = path_leaf_el(right_path);
|
|
new_el = path_leaf_el(right_path);
|
|
rec = &new_el->l_recs[0];
|
|
rec = &new_el->l_recs[0];
|
|
@@ -4411,7 +4411,7 @@ ocfs2_figure_merge_contig_type(struct ocfs2_extent_tree *et,
|
|
(unsigned long long)le64_to_cpu(eb->h_blkno),
|
|
(unsigned long long)le64_to_cpu(eb->h_blkno),
|
|
le16_to_cpu(new_el->l_next_free_rec));
|
|
le16_to_cpu(new_el->l_next_free_rec));
|
|
status = -EINVAL;
|
|
status = -EINVAL;
|
|
- goto out;
|
|
|
|
|
|
+ goto free_right_path;
|
|
}
|
|
}
|
|
rec = &new_el->l_recs[1];
|
|
rec = &new_el->l_recs[1];
|
|
}
|
|
}
|
|
@@ -4428,9 +4428,11 @@ ocfs2_figure_merge_contig_type(struct ocfs2_extent_tree *et,
|
|
ret = contig_type;
|
|
ret = contig_type;
|
|
}
|
|
}
|
|
|
|
|
|
-out:
|
|
|
|
- ocfs2_free_path(left_path);
|
|
|
|
|
|
+free_right_path:
|
|
ocfs2_free_path(right_path);
|
|
ocfs2_free_path(right_path);
|
|
|
|
+free_left_path:
|
|
|
|
+ ocfs2_free_path(left_path);
|
|
|
|
+exit:
|
|
return ret;
|
|
return ret;
|
|
}
|
|
}
|
|
|
|
|