]> git.karo-electronics.de Git - mv-sheeva.git/blobdiff - fs/xfs/xfs_trans_extfree.c
Merge tag 'v2.6.38' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6
[mv-sheeva.git] / fs / xfs / xfs_trans_extfree.c
index f783d5e9fa70f30b87650a5dfe0fd09bbd80ba02..f7590f5badea86f137468f8d370af4d136de2a13 100644 (file)
@@ -69,12 +69,16 @@ xfs_trans_log_efi_extent(xfs_trans_t                *tp,
        tp->t_flags |= XFS_TRANS_DIRTY;
        efip->efi_item.li_desc->lid_flags |= XFS_LID_DIRTY;
 
-       next_extent = efip->efi_next_extent;
+       /*
+        * atomic_inc_return gives us the value after the increment;
+        * we want to use it as an array index so we need to subtract 1 from
+        * it.
+        */
+       next_extent = atomic_inc_return(&efip->efi_next_extent) - 1;
        ASSERT(next_extent < efip->efi_format.efi_nextents);
        extp = &(efip->efi_format.efi_extents[next_extent]);
        extp->ext_start = start_block;
        extp->ext_len = ext_len;
-       efip->efi_next_extent++;
 }