]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
btrfs: simplify getting and extracting previous transaction at clean_pinned_extents()
authorFilipe Manana <fdmanana@suse.com>
Thu, 1 May 2025 11:23:17 +0000 (12:23 +0100)
committerDavid Sterba <dsterba@suse.com>
Thu, 15 May 2025 12:30:54 +0000 (14:30 +0200)
Instead of detecting if there is a previous transaction by comparing the
current transaction's list prev member to the head of the transaction
list (fs_info->trans_list), use the list_is_first() helper which contains
that logic and the naming makes sense since a new transaction is always
added to the end of the list fs_info->trans_list with list_add_tail().

We are also extracting the previous transaction with list_last_entry()
against the transaction, which is correct but confusing because that
function is usually meant to be used against a pointer to the start of a
list and not a member of a list. It is easier to reason by either calling
list_first_entry() against the list fs_info->trans_list, since we can
never have more than two transactions in the list, or by calling
list_prev_entry() against the transaction. So change that to use the later
method.

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/block-group.c

index af01599ef5b1c022c751225e6c132d75ddc2aa50..aa9f89e2817b3c970ceec4377a858e760bb14b29 100644 (file)
@@ -1418,9 +1418,8 @@ static bool clean_pinned_extents(struct btrfs_trans_handle *trans,
        int ret;
 
        spin_lock(&fs_info->trans_lock);
-       if (trans->transaction->list.prev != &fs_info->trans_list) {
-               prev_trans = list_last_entry(&trans->transaction->list,
-                                            struct btrfs_transaction, list);
+       if (!list_is_first(&trans->transaction->list, &fs_info->trans_list)) {
+               prev_trans = list_prev_entry(trans->transaction, list);
                refcount_inc(&prev_trans->use_count);
        }
        spin_unlock(&fs_info->trans_lock);