btrfs: use list_for_each_entry_safe in free_reloc_roots
The function always works on a local copy of the reloc root list, which cannot be modified outside of it so using list_for_each_entry is fine. Additionally the macro handles empty lists so drop list_empty checks of callers. No semantic changes. Reviewed-by: Qu Wenruo <wqu@suse.com> Signed-off-by: Nikolay Borisov <nborisov@suse.com> Reviewed-by: David Sterba <dsterba@suse.com> Signed-off-by: David Sterba <dsterba@suse.com>
This commit is contained in:
Родитель
7c09c03091
Коммит
a7571232b2
|
@ -1884,13 +1884,10 @@ again:
|
|||
static noinline_for_stack
|
||||
void free_reloc_roots(struct list_head *list)
|
||||
{
|
||||
struct btrfs_root *reloc_root;
|
||||
struct btrfs_root *reloc_root, *tmp;
|
||||
|
||||
while (!list_empty(list)) {
|
||||
reloc_root = list_entry(list->next, struct btrfs_root,
|
||||
root_list);
|
||||
list_for_each_entry_safe(reloc_root, tmp, list, root_list)
|
||||
__del_reloc_root(reloc_root);
|
||||
}
|
||||
}
|
||||
|
||||
static noinline_for_stack
|
||||
|
@ -1949,15 +1946,13 @@ again:
|
|||
out:
|
||||
if (ret) {
|
||||
btrfs_handle_fs_error(fs_info, ret, NULL);
|
||||
if (!list_empty(&reloc_roots))
|
||||
free_reloc_roots(&reloc_roots);
|
||||
free_reloc_roots(&reloc_roots);
|
||||
|
||||
/* new reloc root may be added */
|
||||
mutex_lock(&fs_info->reloc_mutex);
|
||||
list_splice_init(&rc->reloc_roots, &reloc_roots);
|
||||
mutex_unlock(&fs_info->reloc_mutex);
|
||||
if (!list_empty(&reloc_roots))
|
||||
free_reloc_roots(&reloc_roots);
|
||||
free_reloc_roots(&reloc_roots);
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -3869,8 +3864,7 @@ out_unset:
|
|||
unset_reloc_control(rc);
|
||||
free_reloc_control(rc);
|
||||
out:
|
||||
if (!list_empty(&reloc_roots))
|
||||
free_reloc_roots(&reloc_roots);
|
||||
free_reloc_roots(&reloc_roots);
|
||||
|
||||
btrfs_free_path(path);
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче