xfs
[Top] [All Lists]

Re: Wrapped journal record corruption on read at recovery - patch attach

To: Andy Poling <andy@xxxxxxxxxxx>
Subject: Re: Wrapped journal record corruption on read at recovery - patch attached (was Re: XFS corruption with failover)
From: Christoph Hellwig <hch@xxxxxxxxxxxxx>
Date: Fri, 16 Oct 2009 02:00:17 -0400
Cc: Christoph Hellwig <hch@xxxxxxxxxxxxx>, John Quigley <jquigley@xxxxxxxxxxxxxx>, xfs@xxxxxxxxxxx
In-reply-to: <alpine.DEB.2.00.0910151858340.5504@andydesk>
References: <mailman.0.1255458988.141519.xfs@xxxxxxxxxxx> <alpine.DEB.2.00.0910131342440.11546@andydesk> <20091013233324.GA28942@xxxxxxxxxxxxx> <alpine.DEB.2.00.0910131853200.11546@andydesk> <20091014132030.GB15001@xxxxxxxxxxxxx> <alpine.DEB.2.00.0910141053150.5504@andydesk> <alpine.DEB.2.00.0910151858340.5504@andydesk>
User-agent: Mutt/1.5.19 (2009-01-05)
On Thu, Oct 15, 2009 at 07:36:33PM -0500, Andy Poling wrote:
> Looking at the improved code since 2.6.29, and assuming that the beginning of
> the log will always be aligned, I have come up with the attached patch against
> 2.6.31.4.  I think it's cleaner, and it passes my tests.
>
> The bufaddr variable is no longer needed.  I removed the xlog_align() after
> the second read for both headers and data since the second read will always be
> aligned (even if there was no first read) since it is always at the beginning
> of the log.
>
> It sets offset to the beginning of the buffer with XFS_BUF_PTR() before the
> first read, and then your improved xlog_bread() will update the offset if the
> first read had to be re-aligned.
>
> What do you think?

The patch looks good to me from a quick glance.  I still need to read
through the code in that area a bit more, and I really want to write a QA
testcase to reproduce it.

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