btrfs: simplify getting and extracting previous transaction during commit
authorFilipe Manana <fdmanana@suse.com>
Thu, 1 May 2025 11:14:41 +0000 (12:14 +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().

And instead of extracting the previous transaction with the more generic
list_entry() helper against the current transaction's list prev member,
use the more specific list_prev_entry() helper, which makes it clear what
we are doing and is shorter.

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/transaction.c

index cb99414de57ba21cfd1e996e42f3c3e1741dd6a1..1212b67a91aac9cf9b61a57aed43129fe025bf73 100644 (file)
@@ -2271,14 +2271,13 @@ int btrfs_commit_transaction(struct btrfs_trans_handle *trans)
        wake_up(&fs_info->transaction_blocked_wait);
        btrfs_trans_state_lockdep_release(fs_info, BTRFS_LOCKDEP_TRANS_COMMIT_PREP);
 
-       if (cur_trans->list.prev != &fs_info->trans_list) {
+       if (!list_is_first(&cur_trans->list, &fs_info->trans_list)) {
                enum btrfs_trans_state want_state = TRANS_STATE_COMPLETED;
 
                if (trans->in_fsync)
                        want_state = TRANS_STATE_SUPER_COMMITTED;
 
-               prev_trans = list_entry(cur_trans->list.prev,
-                                       struct btrfs_transaction, list);
+               prev_trans = list_prev_entry(cur_trans, list);
                if (prev_trans->state < want_state) {
                        refcount_inc(&prev_trans->use_count);
                        spin_unlock(&fs_info->trans_lock);