]> git.ipfire.org Git - thirdparty/xfsprogs-dev.git/commitdiff
libxfs: refactor buffer item release code
authorDarrick J. Wong <darrick.wong@oracle.com>
Fri, 26 Apr 2019 21:50:10 +0000 (16:50 -0500)
committerEric Sandeen <sandeen@redhat.com>
Fri, 26 Apr 2019 21:50:10 +0000 (16:50 -0500)
Refactor the buffer item release code into a helper, which we will use
in subsequent patches to make the buffer log item lifetime match the
kernel equivalents.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Bill O'Donnell <billodo@redhat.com>
Reviewed-by: Eric Sandeen <sandeen@redhat.com>
Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
libxfs/trans.c

index 9de77c8baf3336e286cd3217c009551d87b38f60..121636b5d93329f62c71ac6992b16429ca6f21b9 100644 (file)
@@ -505,6 +505,16 @@ libxfs_trans_ordered_buf(
        return ret;
 }
 
+static void
+xfs_buf_item_put(
+       struct xfs_buf_log_item *bip)
+{
+       struct xfs_buf          *bp = bip->bli_buf;
+
+       bp->b_log_item = NULL;
+       kmem_zone_free(xfs_buf_item_zone, bip);
+}
+
 void
 libxfs_trans_brelse(
        xfs_trans_t             *tp,
@@ -846,7 +856,6 @@ buf_item_done(
 
        bp = bip->bli_buf;
        ASSERT(bp != NULL);
-       bp->b_log_item = NULL;                  /* remove log item */
        bp->b_transp = NULL;                    /* remove xact ptr */
 
        hold = (bip->bli_flags & XFS_BLI_HOLD);
@@ -857,12 +866,12 @@ buf_item_done(
 #endif
                libxfs_writebuf_int(bp, 0);
        }
+
+       bip->bli_flags &= ~XFS_BLI_HOLD;
+       xfs_buf_item_put(bip);
        if (hold)
-               bip->bli_flags &= ~XFS_BLI_HOLD;
-       else
-               libxfs_putbuf(bp);
-       /* release the buf item */
-       kmem_zone_free(xfs_buf_item_zone, bip);
+               return;
+       libxfs_putbuf(bp);
 }
 
 static void