Hi Vyacheslav
On Wed, Mar 13, 2013 at 12:25:01PM +0400, Vyacheslav Dubeyko wrote:
> ...
> Sorry, I don't clearly understand. Have you READ-ONLY FS issue only? Or
> have you kernel panic? Could you confirm what situation you have?
I did indeed forget to say what happens next! Future mounts would
always print "NILFS warning: mounting fs with errors", so I'd always
throw away that partition and restore from (tar-based) backups. I've
pasted a little more detail on what the "ntest" filesystem looks like
below. Looking at it, it looks as though the recovery might have
removed all the errors (by rewinding far enough), but would that
reliably be the case on a filesystem full of data? Even if the GC were
running at the time?
> ...
> The "flush kernel thread" issue is complex issue. The nature of this
> issue begins from architectural solution of b-trees and DAT file. After
> unsuccessful trying to elaborate simple fix I concluded that a clear
> solution can be extents support implementation or adding special
> metadata structure for GC operations. So, I think over about starting
> implementation of it. But currently I hesitate about what can be a
> better for start of implementation.
Oh dear. I do hope that you find a simple solution! Where is the best
place to find out more about the flush kernel thread issue? (Is there
an issue tracker?)
Hope that you do manage to reproduce the "broken bmap" issue easily
enough. I shall have another go at reproducing the
nilfs_btree_propagate issue reliably.
Thanks,
Anthony
[ 811.211974] segctord starting. Construction interval = 5 seconds, CP
frequency < 30 seconds
[ 816.448465] nilfs_direct_assign: invalid pointer: 0
[ 816.448487] NILFS error (device dm-3): nilfs_bmap_assign: broken bmap (inode
number=21)
[ 816.448494]
[ 816.466784] Remounting filesystem read-only
Then unmount (umount doesn't return: have to cancel it with Ctrl-C):
[ 856.917108] nilfs_direct_assign: invalid pointer: 0
[ 856.917123] NILFS error (device dm-3): nilfs_bmap_assign: broken bmap (inode
number=21)
[ 856.917128]
[ 856.917294] nilfs_direct_assign: invalid pointer: 0
[ 856.917305] NILFS error (device dm-3): nilfs_bmap_assign: broken bmap (inode
number=21)
[ 856.917309]
[ 856.917473] nilfs_direct_assign: invalid pointer: 0
[ 856.917483] NILFS error (device dm-3): nilfs_bmap_assign: broken bmap (inode
number=21)
[ 856.917488]
[ 856.917660] nilfs_direct_assign: invalid pointer: 0
[ 856.917670] NILFS error (device dm-3): nilfs_bmap_assign: broken bmap (inode
number=21)
[ 856.917674]
[ 856.917689] NILFS warning (device dm-3): nilfs_segctor_destroy: dirty
file(s) after the final construction
[ 856.917694]
Then mount once again:
[ 974.586969] NILFS warning: mounting unchecked fs
[ 975.088956] NILFS: recovery complete.
[ 975.089763] segctord starting. Construction interval = 5 seconds, CP
frequency < 30 seconds
[ 975.090152] NILFS warning: mounting fs with errors
> lscp /dev/mapper/unencrypted-ntest
CNO DATE TIME MODE FLG NBLKINC ICNT
1 2013-03-13 11:20:59 cp - 12 2
> lssu /dev/mapper/unencrypted-ntest
SEGNUM DATE TIME STAT NBLOCKS
0 2013-03-13 11:20:59 ad- 12
1 ---------- --:--:-- ad- 0
> sudo /sbin/nilfs-tune -l /dev/mapper/unencrypted-ntest
nilfs-tune 2.1.3
Filesystem volume name: (none)
Filesystem UUID: 942d2231-5ea5-4430-96e3-4913917efddb
Filesystem magic number: 0x3434
Filesystem revision #: 2.0
Filesystem features: (none)
Filesystem state: valid,error
Filesystem OS type: Linux
Block size: 1024
Filesystem created: Wed Mar 13 11:20:59 2013
Last mount time: Wed Mar 13 11:23:44 2013
Last write time: Wed Mar 13 11:27:33 2013
Mount count: 2
Maximum mount count: 50
Reserve blocks uid: 0 (user root)
Reserve blocks gid: 0 (group root)
First inode: 11
Inode size: 128
DAT entry size: 32
Checkpoint size: 192
Segment usage size: 16
Number of segments: 255
Device size: 2147483648
First data block: 4
# of blocks per segment: 8192
Reserved segments %: 5
Last checkpoint #: 1
Last block address: 4
Last sequence #: 0
Free blocks count: 2072576
Commit interval: 0
# of blks to create seg: 0
CRC seed: 0x8a46fd5b
CRC check sum: 0xd431caf2
CRC check data size: 0x00000118
> sudo dumpseg /dev/mapper/unencrypted-ntest 0
segment: segnum = 0
sequence number = 0, next segnum = 1
partial segment: blocknr = 4, nblocks = 12
creation time = 2013-03-13 11:20:59
nfinfo = 5
finfo
ino = 2, cno = 1, nblocks = 1, ndatblk = 1
vblocknr = 1, blkoff = 0, blocknr = 5
finfo
ino = 6, cno = 1, nblocks = 4, ndatblk = 4
vblocknr = 2, blkoff = 0, blocknr = 6
vblocknr = 3, blkoff = 1, blocknr = 7
vblocknr = 4, blkoff = 2, blocknr = 8
vblocknr = 5, blkoff = 3, blocknr = 9
finfo
ino = 4, cno = 1, nblocks = 1, ndatblk = 1
vblocknr = 6, blkoff = 0, blocknr = 10
finfo
ino = 5, cno = 1, nblocks = 1, ndatblk = 1
vblocknr = 7, blkoff = 0, blocknr = 11
finfo
ino = 3, cno = 1, nblocks = 3, ndatblk = 3
blkoff = 0, blocknr = 12
blkoff = 1, blocknr = 13
blkoff = 2, blocknr = 14
--
To unsubscribe from this list: send the line "unsubscribe linux-nilfs" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html