xfs_repair refuses to run on cleanly mountable partition
Eric Sandeen
sandeen at sandeen.net
Mon Oct 7 10:36:59 CDT 2013
On 10/7/13 10:29 AM, Markus Trippelsdorf wrote:
> On 2013.10.07 at 10:21 -0500, Eric Sandeen wrote:
>> On 10/7/13 10:16 AM, Markus Trippelsdorf wrote:
>>> x4 ~ # xfs_repair -V
>>> xfs_repair version 3.2.0-alpha1
>>>
>>> x4 ~ # mount -o logbsize=256k /dev/sdc1 /mnt
>>> ...
>>> [ 6419.592649] XFS (sdc1): Mounting Filesystem
>>> [ 6419.642480] XFS (sdc1): Ending clean mount
>>>
>>> x4 ~ # xfs_info /dev/sdc1
>>> meta-data=/dev/sdc1 isize=256 agcount=4, agsize=61047552 blks
>>> = sectsz=4096 attr=2, projid32bit=0
>>> = crc=0
>>> data = bsize=4096 blocks=244190208, imaxpct=25
>>> = sunit=0 swidth=0 blks
>>> naming =version 2 bsize=4096 ascii-ci=0
>>> log =internal bsize=4096 blocks=119233, version=2
>>> = sectsz=4096 sunit=1 blks, lazy-count=1
>>> realtime =none extsz=4096 blocks=0, rtextents=0
>>>
>>> x4 ~ # umount /mnt
>>>
>>> x4 ~ # xfs_repair /dev/sdc1
>>> Phase 1 - find and verify superblock...
>>> Phase 2 - using internal log
>>> - zero log...
>>> ERROR: The filesystem has valuable metadata changes in a log which needs to
>>> be replayed. Mount the filesystem to replay the log, and unmount it before
>>> re-running xfs_repair. If you are unable to mount the filesystem, then use
>>> the -L option to destroy the log and attempt a repair.
>>> Note that destroying the log may cause corruption -- please attempt a mount
>>> of the filesystem before doing this.
>>
>> What kernel are you running? Does older xfs_repair behave differently?
>> (use xfs_repair -n if you test an old xfsprogs, to preserve this state
>> for debugging...)
>
> I'm running the latest git kernel 3.12.0-rc4.
> "xfs_repair -n" runs fine even with xfsprogs 3.2.0-alpha1...
>
>> Perhaps copying out or dumping the log w/ xfs_logprint would also help,
>> maybe start with:
>>
>> # xfs_logprint -t /dev/sdc1
> xfs_logprint:
> data device: 0x821
> log device: 0x821 daddr: 976760888 length: 953864
>
> log tail: 53376 head: 53376 state: <CLEAN>
Funky.
How about an xfs_repair -v (for verbose).
That'll emit:
if (verbose) {
do_warn(
_("zero_log: head block %" PRId64 " tail block %" PRId64 "\n"),
head_blk, tail_blk);
}
-Eric
More information about the xfs
mailing list