xfs
[Top] [All Lists]

Bug in AGI buffer logging?

To: xfs@xxxxxxxxxxx
Subject: Bug in AGI buffer logging?
From: Jan Kara <jack@xxxxxxx>
Date: Tue, 20 Jan 2015 23:26:58 +0100
Delivered-to: xfs@xxxxxxxxxxx
User-agent: Mutt/1.5.21 (2010-09-15)
  Hello,

  so I was trying to track down occasional reports like:
[  +0.007156] XFS (md0): Mounting V5 Filesystem
[  +0.200782] XFS (md0): Starting recovery (logdev: internal)
[  +0.125313] XFS (md0): Unknown buffer type 0!
[  +0.042793] XFS (md0): _xfs_buf_ioapply: no ops on block 0xaea8802/0x1
[  +0.000145] ffff8800ffc53800: 58 41 47 49 00 00 00 01 00 00 00 02 00 ae
a8 80  XAGI............
[  +0.000179] ffff8800ffc53810: 00 00 13 00 00 00 00 76 00 00 00 01 00 00
00 0e  .......v........
[  +0.000179] ffff8800ffc53820: 00 01 f4 00 ff ff ff ff ff ff ff ff ff ff
ff ff  ................
[  +0.000178] ffff8800ffc53830: ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ff  ................
...

from our users with current kernels. What happens is that log contains AGI
buffer but blf_flags is 0 so we don't know how to set the buffer operations
during log recovery. After some experiments I've noticed that when we log
agi_unlinked buckets e.g. in xfs_iunlink_remove(), we don't set buffer
type. We just call
                xfs_trans_log_buf(tp, agibp, offset,
                                  (offset + sizeof(xfs_agino_t) - 1));

and thus buffer may be logged without blf_flags set appropriately. Am I
missing something or is that code really buggy? If it's really a bug I can
try to fix that but I'd think that it would require somewhat larger changes
so that similar bugs are avoided in future so I'm asking first before
investing significant amount of time into it.

                                                                Honza
-- 
Jan Kara <jack@xxxxxxx>
SUSE Labs, CR

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