Bug 874322

Summary: [6.4] XFS log recovery failure leads to loss of data
Product: Red Hat Enterprise Linux 6 Reporter: Dave Chinner <dchinner>
Component: kernelAssignee: Dave Chinner <dchinner>
Status: CLOSED ERRATA QA Contact: Boris Ranto <branto>
Severity: high Docs Contact:
Priority: urgent    
Version: 6.4CC: bfoster, branto, cmaiolin, dchinner, dhoward, eguan, esandeen, jcpunk, jwest, lczerner, msvoboda, npajkovs, rwheeler, zab
Target Milestone: rcKeywords: ZStream
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Previously, XFS could, under certain circumstances, incorrectly read metadata from the journal during XFS log recovery. As a consequence, XFS log recovery terminated with an error message and prevented the file system from being mounted. This problem could result in a loss of data if the user forcibly "zeroed" the log to allow the file system to be mounted. This update ensures that metadata is read correctly from the log so that journal recovery completes successfully and the file system mounts as expected.
Story Points: ---
Clone Of: Environment:
Last Closed: 2013-02-21 06:55:53 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On:    
Bug Blocks: 876498, 876499, 881827    

Description Dave Chinner 2012-11-07 22:18:34 UTC
Description of problem:

An log recovery problem was discovered upstream recently. Details in this thread here:

http://oss.sgi.com/archives/xfs/2012-10/msg00537.html

TL,DR: log recovery can fail due to incorrectly handling a log write that is wrapped around the end of the log, filesystem unmountable, repair can result in loss of metadata and user data.

The fix is here:

http://oss.sgi.com/archives/xfs/2012-11/msg00019.html

"Commit 4439647 ("xfs: reset buffer pointers before freeing them") in
3.0-rc1 introduced a regression when recovering log buffers that
wrapped around the end of log. The second part of the log buffer at
the start of the physical log was being read into the header buffer
rather than the data buffer, and hence recovery was seeing garbage
in the data buffer when it got to the region of the log buffer that
was incorrectly read."

Version-Release number of selected component (if applicable):

RHEL 6.4 has this log recovery bug in it.

How reproducible:

100%.

Steps to Reproduce:

http://oss.sgi.com/archives/xfs/2012-10/msg00568.html

I'm currently working a new xfstests unit test to exercise recovery of wrapped log writes.
  
Actual results:

Unmountable filesystem, repair tossing away unrecovered metadata causing data loss.

Expected results:

Filesystem recovers the journal and mounts successfully.

Comment 2 RHEL Program Management 2012-11-07 22:41:02 UTC
This request was evaluated by Red Hat Product Management for
inclusion in a Red Hat Enterprise Linux release.  Product
Management has requested further review of this request by
Red Hat Engineering, for potential inclusion in a Red Hat
Enterprise Linux release for currently deployed products.
This request is not yet committed for inclusion in a release.

Comment 9 Jarod Wilson 2012-11-19 15:09:01 UTC
Patch(es) available on kernel-2.6.32-342.el6

Comment 14 errata-xmlrpc 2013-02-21 06:55:53 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory, and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

http://rhn.redhat.com/errata/RHSA-2013-0496.html