lkml.org 
[lkml]   [2015]   [Mar]   [4]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 3.19 010/175] xfs: ensure buffer types are set correctly
    Date
    3.19-stable review patch.  If anyone has any objections, please let me know.

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

    From: Dave Chinner <dchinner@redhat.com>

    commit 0d612fb570b71ea2e49554a770cff4c489018b2c upstream.

    Jan Kara reported that log recovery was finding buffers with invalid
    types in them. This should not happen, and indicates a bug in the
    logging of buffers. To catch this, add asserts to the buffer
    formatting code to ensure that the buffer type is in range when the
    transaction is committed.

    We don't set a type on buffers being marked stale - they are not
    going to get replayed, the format item exists only for recovery to
    be able to prevent replay of the buffer, so the type does not
    matter. Hence that needs special casing here.

    Reported-by: Jan Kara <jack@suse.cz>
    Tested-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Dave Chinner <dchinner@redhat.com>
    Reviewed-by: Brian Foster <bfoster@redhat.com>
    Signed-off-by: Dave Chinner <david@fromorbit.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    ---
    fs/xfs/xfs_buf_item.c | 4 ++++
    1 file changed, 4 insertions(+)

    --- a/fs/xfs/xfs_buf_item.c
    +++ b/fs/xfs/xfs_buf_item.c
    @@ -319,6 +319,10 @@ xfs_buf_item_format(
    ASSERT(atomic_read(&bip->bli_refcount) > 0);
    ASSERT((bip->bli_flags & XFS_BLI_LOGGED) ||
    (bip->bli_flags & XFS_BLI_STALE));
    + 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));
    +

    /*
    * If it is an inode buffer, transfer the in-memory state to the



    \
     
     \ /
      Last update: 2015-03-04 07:41    [W:4.553 / U:0.148 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site