[PATCH 4/3] xfs: set superblock buffer type correctly
Brian Foster
bfoster at redhat.com
Wed Jan 21 16:06:27 CST 2015
On Wed, Jan 21, 2015 at 01:34:44PM +1100, Dave Chinner wrote:
> From: Dave Chinner <dchinner at redhat.com>
>
> 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 at redhat.com>
> ---
Reviewed-by: Brian Foster <bfoster at redhat.com>
> 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 at oss.sgi.com
> http://oss.sgi.com/mailman/listinfo/xfs
More information about the xfs
mailing list