Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 31 Aug 2012 13:09:40 +0100
From:      Marcel Moolenaar <marcel@xcllnt.net>
To:        Boris Astardzhiev <boris.astardzhiev@gmail.com>
Cc:        freebsd-fs@freebsd.org, Grzegorz Bernacki <gber@freebsd.org>
Subject:   Re: NANDFS: out of space panic
Message-ID:  <96DC4416-6CA5-45B4-B790-068797FAA2C6@xcllnt.net>
In-Reply-To: <CAP=KkTz3%2B7UbfBcW9D_8VHv-Rw7BxNyG5xiVFxG4L-Zq1skwJw@mail.gmail.com>
References:  <CAP=KkTz3%2B7UbfBcW9D_8VHv-Rw7BxNyG5xiVFxG4L-Zq1skwJw@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help

On Aug 22, 2012, at 4:34 PM, Boris Astardzhiev =
<boris.astardzhiev@gmail.com> wrote:
> Now when I attempt to delete /mnt/file1234 I get a panic:
> root@smartcpe:/mnt # rm file1234
> panic: bmap_truncate_mapping: error 28 when truncate at level 1
>=20
> KDB: enter: panic
> [ thread pid 606 tid 100047 ]
> Stopped at kdb_enter+0x48: ldrb r15, [r15, r15, ror r15]!
> db>
>=20
> So how do I solve this? It is easily reproduced following this =
scenario
> every time.
> Up to this commit I've made the following minor changes so that


I ran into this as well. There are 2 aspects here:
1.  Currently errors pretty much result in panics by virtue
    of a compile-time option. This means that reasonable
    errors (i.e. errors that simply trigger recovery code
    or are being propagated upstream) also cause panics.
2.  There's a real bug. For me it gives the following panic
    (by virtue of me changing the behaviour of point 1):

nandfs_new_segment: cannot create segment error 1
create_segment: cannot create next segment
nandfs_add_blocks: error:1 when creating segment
nandfs_new_segment: cannot create segment error 1
create_segment: cannot create next segment
nandfs_add_blocks: error:1 when creating segment
nandfs_new_segment: cannot create segment error 1
create_segment: cannot create next segment
nandfs_add_blocks: error:1 when creating segment
nandfs_new_segment: cannot create segment error 1
create_segment: cannot create next segment
nandfs_add_blocks: error:1 when creating segment
nandfs_new_segment: cannot create segment error 1
create_segment: cannot create next segment
nandfs_add_blocks: error:1 when creating segment
nandfs_new_segment: cannot create segment error 1
create_segment: cannot create next segment
nandfs_add_blocks: error:1 when creating segment
nandfs_new_segment: cannot create segment error 1
create_segment: cannot create next segment
nandfs_add_blocks: error:1 when creating segment
nandfs_new_segment: cannot create segment error 1
create_segment: cannot create next segment
nandfs_add_blocks: error:1 when creating segment
nandfs_new_segment: cannot create segment error 1
create_segment: cannot create next segment
nandfs_add_blocks: error:1 when creating segment
nandfs_new_segment: cannot create segment error 1
create_segment: cannot create next segment
nandfs_add_blocks: error:1 when creating segment
nandfs_new_segment: cannot create segment error 1
create_segment: cannot create next segment
nandfs_add_blocks: error:1 when creating segment
nandfs_new_segment: cannot create segment error 1
create_segment: cannot create next segment
nandfs_add_blocks: error:1 when creating segment
nandfs_new_segment: cannot create segment error 1
create_segment: cannot create next segment
nandfs_add_blocks: error:1 when creating segment
nandfs_new_segment: cannot create segment error 1
create_segment: cannot create next segment
lock order reversal:
1st 0xd944e60c bufwait (bufwait) @ kern/vfs_bio.c:1905
2nd 0xc501cd18 devfs (devfs) @ fs/nandfs/nandfs_segment.c:769
KDB: stack backtrace:
db_trace_self_wrapper(c08fea97,746e656d,373a632e,a3936,0,...) at =
db_trace_self_wrapper+0x26
kdb_backtrace(c06cadeb,c09024bc,c0b03d88,301,c46c5a88,...) at =
kdb_backtrace+0x2a
_witness_debugger(c09024bc,c501cd18,c08f5fd8,c4921b80,c08e785b,...) at =
_witness_debugger+0x25
witness_checkorder(c501cd18,9,c08e7852,301,c501cd38,...) at =
witness_checkorder+0x86f
__lockmgr_args(c501cd18,80000,c501cd38,0,0,...) at __lockmgr_args+0x824
vop_stdlock(c46c5bbc,c08e76ed,c46c5b9c,c46c5b9c,c46c5bf8,...) at =
vop_stdlock+0x62
VOP_LOCK1_APV(c0961780,c46c5bbc,100000,c4ffc480,c4b15000,...) at =
VOP_LOCK1_APV+0xf3
nandfs_clean_segblocks(fee0,0,c46c5c6c,c46c5c6c,1,...) at =
nandfs_clean_segblocks+0x48
clean_seginfo(c0962360,c46c5c6c,317a,0,0,...) at clean_seginfo+0x49
nandfs_segment_constructor(c4b1ec00,0,5c,c08ed1d5,1f4,...) at =
nandfs_segment_constructor+0x5e5
nandfs_syncer(c4b1ec00,c46c5d08,c08f5110,3d8,c09b7520,...) at =
nandfs_syncer+0x8f
fork_exit(c05a63a0,c4b1ec00,c46c5d08) at fork_exit+0xb8
fork_trampoline() at fork_trampoline+0x8
--- trap 0, eip =3D 0, esp =3D 0xc46c5d40, ebp =3D 0 ---
panic: brelse: not dirty
cpuid =3D 0
KDB: enter: panic

I haven't had the time to look into it in detail.

Also: design documentation is missing right now, which
does mean that there's a pretty steep curve for anyone
who didn't write the file system to go in and fix any
bugs.

FYI,

--=20
Marcel Moolenaar
marcel@xcllnt.net





Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?96DC4416-6CA5-45B4-B790-068797FAA2C6>