btrfs: simplify csum list release at btrfs_put_ordered_extent()
authorFilipe Manana <fdmanana@suse.com>
Thu, 1 May 2025 12:21:34 +0000 (13:21 +0100)
committerDavid Sterba <dsterba@suse.com>
Thu, 15 May 2025 12:30:55 +0000 (14:30 +0200)
Instead of extracting each element by grabbing the list's first member in
a local list_head variable, then extracting the csum with list_entry() and
iterating with a while loop checking for list emptyness, use the iteration
helper list_for_each_entry_safe(). This also removes the need to delete
elements from the list with list_del() since the ordered extent is freed
immediately after.

Reviewed-by: Qu Wenruo <wqu@suse.com>
Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
Signed-off-by: Filipe Manana <fdmanana@suse.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/ordered-data.c

index 6151d32704d2da30328e146047d8dcb6f8551ccd..ae49f87b27e865325afc5b161f870877700e110d 100644 (file)
@@ -607,23 +607,19 @@ out:
  */
 void btrfs_put_ordered_extent(struct btrfs_ordered_extent *entry)
 {
-       struct list_head *cur;
-       struct btrfs_ordered_sum *sum;
-
        trace_btrfs_ordered_extent_put(entry->inode, entry);
 
        if (refcount_dec_and_test(&entry->refs)) {
+               struct btrfs_ordered_sum *sum;
+               struct btrfs_ordered_sum *tmp;
+
                ASSERT(list_empty(&entry->root_extent_list));
                ASSERT(list_empty(&entry->log_list));
                ASSERT(RB_EMPTY_NODE(&entry->rb_node));
                if (entry->inode)
                        btrfs_add_delayed_iput(entry->inode);
-               while (!list_empty(&entry->list)) {
-                       cur = entry->list.next;
-                       sum = list_entry(cur, struct btrfs_ordered_sum, list);
-                       list_del(&sum->list);
+               list_for_each_entry_safe(sum, tmp, &entry->list, list)
                        kvfree(sum);
-               }
                kmem_cache_free(btrfs_ordered_extent_cache, entry);
        }
 }