lkml.org 
[lkml]   [2017]   [Sep]   [18]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.9 66/78] xfs: ordered buffer log items are never formatted
    Date
    4.9-stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Brian Foster <bfoster@redhat.com>

    commit e9385cc6fb7edf23702de33a2dc82965d92d9392 upstream.

    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>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ---
    fs/xfs/xfs_buf_item.c | 12 ++----------
    fs/xfs/xfs_trace.h | 1 -
    2 files changed, 2 insertions(+), 11 deletions(-)

    --- a/fs/xfs/xfs_buf_item.c
    +++ b/fs/xfs/xfs_buf_item.c
    @@ -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]);
    --- a/fs/xfs/xfs_trace.h
    +++ b/fs/xfs/xfs_trace.h
    @@ -520,7 +520,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);

    \
     
     \ /
      Last update: 2017-09-18 11:21    [W:4.239 / U:0.132 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site