Instead of dereferencing the delayed refs from the transaction multiple
times, store it early in the local variable and then always use the
variable.
Reviewed-by: Qu Wenruo <wqu@suse.com>
Signed-off-by: Filipe Manana <fdmanana@suse.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
 {
        struct btrfs_fs_info *fs_info = trans->fs_info;
        struct btrfs_qgroup_extent_record *record;
-       struct btrfs_delayed_ref_root *delayed_refs;
+       struct btrfs_delayed_ref_root *delayed_refs = &trans->transaction->delayed_refs;
        const unsigned long index = (bytenr >> fs_info->sectorsize_bits);
        int ret;
 
        if (!record)
                return -ENOMEM;
 
-       if (xa_reserve(&trans->transaction->delayed_refs.dirty_extents, index, GFP_NOFS)) {
+       if (xa_reserve(&delayed_refs->dirty_extents, index, GFP_NOFS)) {
                kfree(record);
                return -ENOMEM;
        }
 
-       delayed_refs = &trans->transaction->delayed_refs;
        record->num_bytes = num_bytes;
        record->old_roots = NULL;