Re: [PATCH] xfs: don't account buffer cancellation during log recovery readahead

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, Aug 29, 2013 at 10:13:24AM -0500, Ben Myers wrote:
> On Tue, Aug 27, 2013 at 08:10:53AM +1000, Dave Chinner wrote:
> > From: Dave Chinner <dchinner@xxxxxxxxxx>
> > 
> > When doing readhaead in log recovery, we check to see if buffers are
> > cancelled before doing readahead. If we find a cancelled buffer,
> > however, we always decrement the reference count we have on it, and
> > that means that readahead is causing a double decrement of the
> > cancelled buffer reference count.
> > 
> > This results in log recovery *replaying cancelled buffers* as the
> > actual recovery pass does not find the cancelled buffer entry in the
> > commit phase of the second pass across a transaction. On debug
> > kernels, this results in an ASSERT failure like so:
> > 
> > XFS: Assertion failed: !(flags & XFS_BLF_CANCEL), file: fs/xfs/xfs_log_recover.c, line: 1815
> > 
> > xfstests generic/311 reproduces this ASSERT failure with 100%
> > reproducability.
> > 
> > Fix it by making readahead only peek at the buffer cancelled state
> > rather than the full accounting that xlog_check_buffer_cancelled()
> > does.
> > 
> > Signed-off-by: Dave Chinner <dchinner@xxxxxxxxxx>
> 
> Nice work Dave!
> Reviewed-by: Ben Myers <bpm@xxxxxxx>

Applied this one.

_______________________________________________
xfs mailing list
xfs@xxxxxxxxxxx
http://oss.sgi.com/mailman/listinfo/xfs




[Index of Archives]     [Linux XFS Devel]     [Linux Filesystem Development]     [Filesystem Testing]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux