use xfs_trans_ijoin in xfs_trans_iget
authorChristoph Hellwig <hch@lst.de>
Wed, 3 Dec 2008 11:20:35 +0000 (12:20 +0100)
committerNiv Sardi <xaiki@sgi.com>
Thu, 4 Dec 2008 04:39:23 +0000 (15:39 +1100)
Use xfs_trans_ijoin in xfs_trans_iget in case we need to join an inode into
a transaction instead of opencoding it.  Based on a discussion with and an
incomplete patch from Niv Sardi.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Dave Chinner <david@fromorbit.com>
Signed-off-by: Niv Sardi <xaiki@sgi.com>
fs/xfs/xfs_trans_inode.c

index 2a1c0f0..23d276a 100644 (file)
@@ -85,7 +85,6 @@ xfs_trans_iget(
 {
        int                     error;
        xfs_inode_t             *ip;
-       xfs_inode_log_item_t    *iip;
 
        /*
         * If the transaction pointer is NULL, just call the normal
@@ -138,34 +137,7 @@ xfs_trans_iget(
        }
        ASSERT(ip != NULL);
 
-       /*
-        * Get a log_item_desc to point at the new item.
-        */
-       if (ip->i_itemp == NULL)
-               xfs_inode_item_init(ip, mp);
-       iip = ip->i_itemp;
-       (void) xfs_trans_add_item(tp, (xfs_log_item_t *)(iip));
-
-       xfs_trans_inode_broot_debug(ip);
-
-       /*
-        * If the IO lock has been acquired, mark that in
-        * the inode log item so we'll know to unlock it
-        * when the transaction commits.
-        */
-       ASSERT(iip->ili_flags == 0);
-       if (lock_flags & XFS_IOLOCK_EXCL) {
-               iip->ili_flags |= XFS_ILI_IOLOCKED_EXCL;
-       } else if (lock_flags & XFS_IOLOCK_SHARED) {
-               iip->ili_flags |= XFS_ILI_IOLOCKED_SHARED;
-       }
-
-       /*
-        * Initialize i_transp so we can find it with xfs_inode_incore()
-        * above.
-        */
-       ip->i_transp = tp;
-
+       xfs_trans_ijoin(tp, ip, lock_flags);
        *ipp = ip;
        return 0;
 }