btrfs: use list_for_each_entry_safe in free_reloc_roots
authorNikolay Borisov <nborisov@suse.com>
Fri, 21 Feb 2020 13:11:24 +0000 (15:11 +0200)
committerDavid Sterba <dsterba@suse.com>
Mon, 25 May 2020 09:25:23 +0000 (11:25 +0200)
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>
fs/btrfs/relocation.c

index 80b5835..5f8820c 100644 (file)
@@ -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);