xfs
[Top] [All Lists]

Re: [PATCH 4/3] xfs: set superblock buffer type correctly

To: Dave Chinner <david@xxxxxxxxxxxxx>
Subject: Re: [PATCH 4/3] xfs: set superblock buffer type correctly
From: Brian Foster <bfoster@xxxxxxxxxx>
Date: Wed, 21 Jan 2015 17:06:27 -0500
Cc: xfs@xxxxxxxxxxx, jack@xxxxxxx
Delivered-to: xfs@xxxxxxxxxxx
In-reply-to: <20150121023444.GI16552@dastard>
References: <1421800780-26008-1-git-send-email-david@xxxxxxxxxxxxx> <20150121023444.GI16552@dastard>
User-agent: Mutt/1.5.23 (2014-03-12)
On Wed, Jan 21, 2015 at 01:34:44PM +1100, Dave Chinner wrote:
> From: Dave Chinner <dchinner@xxxxxxxxxx>
> 
> When the superblock is modified in a transaction, the commonly
> modified fields are not actually copied to the superblock buffer to
> avoid the buffer lock becoming a serialisation point. However, there
> are some other operations that modify the superblock fields within
> the transaction that don't directly log to the superblock but rely
> on the changes to be applied during the transaction commit (to
> minimise the buffer lock hold time).
> 
> When we do this, we fail to mark the buffer log item as being a
> superblock buffer and that can lead to the buffer not being marked
> with the corect type in the log and hence causing recovery issues.
> Fix it by setting the type correctly, similar to xfs_mod_sb()...
> 
> Signed-off-by: Dave Chinner <dchinner@xxxxxxxxxx>
> ---

Reviewed-by: Brian Foster <bfoster@xxxxxxxxxx>

>  fs/xfs/xfs_trans.c | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/fs/xfs/xfs_trans.c b/fs/xfs/xfs_trans.c
> index fa3135b..eb90cd5 100644
> --- a/fs/xfs/xfs_trans.c
> +++ b/fs/xfs/xfs_trans.c
> @@ -472,6 +472,7 @@ xfs_trans_apply_sb_deltas(
>               whole = 1;
>       }
>  
> +     xfs_trans_buf_set_type(tp, bp, XFS_BLFT_SB_BUF);
>       if (whole)
>               /*
>                * Log the whole thing, the fields are noncontiguous.
> 
> _______________________________________________
> xfs mailing list
> xfs@xxxxxxxxxxx
> http://oss.sgi.com/mailman/listinfo/xfs

<Prev in Thread] Current Thread [Next in Thread>