xfs: ordered buffer log items are never formatted
authorBrian Foster <bfoster@redhat.com>
Tue, 29 Aug 2017 17:08:37 +0000 (10:08 -0700)
committerDarrick J. Wong <darrick.wong@oracle.com>
Fri, 1 Sep 2017 17:55:30 +0000 (10:55 -0700)
Ordered buffers pass through the logging infrastructure without ever
being written to the log. The way this works is that the ordered
buffer status is transferred to the log vector at commit time via
the ->iop_size() callback. In xlog_cil_insert_format_items(),
ordered log vectors bypass ->iop_format() processing altogether.

Therefore it is unnecessary for xfs_buf_item_format() to handle
ordered buffers. Remove the unnecessary logic and assert that an
ordered buffer never reaches this point.

Signed-off-by: Brian Foster <bfoster@redhat.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
fs/xfs/xfs_buf_item.c
fs/xfs/xfs_trace.h

index ff076d11804a37c4178d4440844c4237fb5d34b1..ef2c1375f092041a937d1c2753fc124cea9e6244 100644 (file)
@@ -323,6 +323,8 @@ xfs_buf_item_format(
        ASSERT((bip->bli_flags & XFS_BLI_STALE) ||
               (xfs_blft_from_flags(&bip->__bli_format) > XFS_BLFT_UNKNOWN_BUF
                && xfs_blft_from_flags(&bip->__bli_format) < XFS_BLFT_MAX_BUF));
+       ASSERT(!(bip->bli_flags & XFS_BLI_ORDERED) ||
+              (bip->bli_flags & XFS_BLI_STALE));
 
 
        /*
@@ -347,16 +349,6 @@ xfs_buf_item_format(
                bip->bli_flags &= ~XFS_BLI_INODE_BUF;
        }
 
-       if ((bip->bli_flags & (XFS_BLI_ORDERED|XFS_BLI_STALE)) ==
-                                                       XFS_BLI_ORDERED) {
-               /*
-                * The buffer has been logged just to order it.  It is not being
-                * included in the transaction commit, so don't format it.
-                */
-               trace_xfs_buf_item_format_ordered(bip);
-               return;
-       }
-
        for (i = 0; i < bip->bli_format_count; i++) {
                xfs_buf_item_format_segment(bip, lv, &vecp, offset,
                                            &bip->bli_formats[i]);
index 68810477ef2c2737879ce466154a1af7e9c92eaf..e839ab4db483bdf159819f8515efe9697223faee 100644 (file)
@@ -517,7 +517,6 @@ DEFINE_BUF_ITEM_EVENT(xfs_buf_item_size);
 DEFINE_BUF_ITEM_EVENT(xfs_buf_item_size_ordered);
 DEFINE_BUF_ITEM_EVENT(xfs_buf_item_size_stale);
 DEFINE_BUF_ITEM_EVENT(xfs_buf_item_format);
-DEFINE_BUF_ITEM_EVENT(xfs_buf_item_format_ordered);
 DEFINE_BUF_ITEM_EVENT(xfs_buf_item_format_stale);
 DEFINE_BUF_ITEM_EVENT(xfs_buf_item_ordered);
 DEFINE_BUF_ITEM_EVENT(xfs_buf_item_pin);