lkml.org 
[lkml]   [2017]   [Jan]   [10]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.9 189/206] xfs: Move AGI buffer type setting to xfs_read_agi
    Date
    4.9-stable review patch.  If anyone has any objections, please let me know.

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


    From: Eric Sandeen <sandeen@sandeen.net>

    commit 200237d6746faaeaf7f4ff4abbf13f3917cee60a upstream.

    We've missed properly setting the buffer type for
    an AGI transaction in 3 spots now, so just move it
    into xfs_read_agi() and set it if we are in a transaction
    to avoid the problem in the future.

    This is similar to how it is done in i.e. the dir3
    and attr3 read functions.

    Signed-off-by: Eric Sandeen <sandeen@redhat.com>
    Reviewed-by: Brian Foster <bfoster@redhat.com>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Dave Chinner <david@fromorbit.com>
    Cc: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ---
    fs/xfs/libxfs/xfs_ialloc.c | 4 ++--
    fs/xfs/xfs_inode.c | 2 --
    fs/xfs/xfs_log_recover.c | 1 -
    3 files changed, 2 insertions(+), 5 deletions(-)

    --- a/fs/xfs/libxfs/xfs_ialloc.c
    +++ b/fs/xfs/libxfs/xfs_ialloc.c
    @@ -2450,8 +2450,6 @@ xfs_ialloc_log_agi(
    ASSERT(agi->agi_magicnum == cpu_to_be32(XFS_AGI_MAGIC));
    #endif

    - xfs_trans_buf_set_type(tp, bp, XFS_BLFT_AGI_BUF);
    -
    /*
    * Compute byte offsets for the first and last fields in the first
    * region and log the agi buffer. This only logs up through
    @@ -2592,6 +2590,8 @@ xfs_read_agi(
    XFS_FSS_TO_BB(mp, 1), 0, bpp, &xfs_agi_buf_ops);
    if (error)
    return error;
    + if (tp)
    + xfs_trans_buf_set_type(tp, *bpp, XFS_BLFT_AGI_BUF);

    xfs_buf_set_ref(*bpp, XFS_AGI_REF);
    return 0;
    --- a/fs/xfs/xfs_inode.c
    +++ b/fs/xfs/xfs_inode.c
    @@ -2041,7 +2041,6 @@ xfs_iunlink(
    agi->agi_unlinked[bucket_index] = cpu_to_be32(agino);
    offset = offsetof(xfs_agi_t, agi_unlinked) +
    (sizeof(xfs_agino_t) * bucket_index);
    - xfs_trans_buf_set_type(tp, agibp, XFS_BLFT_AGI_BUF);
    xfs_trans_log_buf(tp, agibp, offset,
    (offset + sizeof(xfs_agino_t) - 1));
    return 0;
    @@ -2133,7 +2132,6 @@ xfs_iunlink_remove(
    agi->agi_unlinked[bucket_index] = cpu_to_be32(next_agino);
    offset = offsetof(xfs_agi_t, agi_unlinked) +
    (sizeof(xfs_agino_t) * bucket_index);
    - xfs_trans_buf_set_type(tp, agibp, XFS_BLFT_AGI_BUF);
    xfs_trans_log_buf(tp, agibp, offset,
    (offset + sizeof(xfs_agino_t) - 1));
    } else {
    --- a/fs/xfs/xfs_log_recover.c
    +++ b/fs/xfs/xfs_log_recover.c
    @@ -4929,7 +4929,6 @@ xlog_recover_clear_agi_bucket(
    agi->agi_unlinked[bucket] = cpu_to_be32(NULLAGINO);
    offset = offsetof(xfs_agi_t, agi_unlinked) +
    (sizeof(xfs_agino_t) * bucket);
    - xfs_trans_buf_set_type(tp, agibp, XFS_BLFT_AGI_BUF);
    xfs_trans_log_buf(tp, agibp, offset,
    (offset + sizeof(xfs_agino_t) - 1));


    \
     
     \ /
      Last update: 2017-01-10 15:00    [W:4.209 / U:0.416 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site