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

Re: bad log entries after remount with XFS over MD in 2.6



hi Andi,

On Thu, Aug 21, 2003 at 09:44:32PM +0200, Andi Kleen wrote:
> 
> I have an XFS over a MD-0 (RAID-0) device stripped over two SCSI disks.
> 
> The problem is that after a reboot the mount often fails with
> "bad clientid". This happens both when the file system was cleanly
> unmounted (even explicitely before shutdown) or when the machine
> crashed.
> 
> I can remount again when I run xfs_repair -L first, but that always
> takes a long time. Also it tends to find some old files and reconnect
> them to lost+found.

FWIW, you can use xfs_db to just write a fresh log, might be
quicker for you in this situation.  Use the "uuid rewrite"
command.  Oh, actually I might have added the dirty log check
in there too (ala xfs_repair) - you might need to hack it a
bit (maybe add a -L to the uuid command) - I can't remember
off the top of my head.

> The log dump starts with an umount record, but XFS seems to read beyond
> that and find bogus log entries and then fail on them.
> Why does it not stop on the first?

Cos the first may not be the last.  ;)

(mount; unmount; mount; unmount; mount; ...)

Recovery doesn't really look inside the payload of each log record
until it has a good idea of exactly where the log head and tail are.

Other than this I have no hints.  I don't see this behaviour on
non-MD devices just as a data point.  From your logprint it looks
like the log writes are the problem (as opposed to the log reads
that recovery does).  We do funky stuff there - write different
size chunks at arbitrary 512 byte offsets... has caused problems
for busted drivers in the past, maybe something along those lines
again.

>...
> 
> ============================================================================
> cycle: 1	version: 1		lsn: 1,55	tail_lsn: 1,39
> length of Log Record: 16956	prev offset: 41		num ops: 183
> uuid: f272d169-808f-4627-9fa9-873b504e76b5   format: little endian linux
> **********************************************************************
> * ERROR: data block=55                                                *
> **********************************************************************
> Bad Log
> 

-- 
Nathan