Subject: kern/29513: FFS+Softdep crash with unfsck-able file-corruption
To: None <kern-bug-people@netbsd.org, gnats-admin@netbsd.org,>
From: None <joff@embeddedARM.com>
List: netbsd-bugs
Date: 02/23/2005 18:50:00
>Number:         29513
>Category:       kern
>Synopsis:       FFS+Softdep crash with unfsck-able file-corruption
>Confidential:   no
>Severity:       critical
>Priority:       high
>Responsible:    kern-bug-people
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Wed Feb 23 18:50:00 +0000 2005
>Originator:     Jesse Off
>Release:        2.99.16
>Organization:
Technologic Systems
>Environment:
2.99.16 evbarm TS7200
>Description:
Was extracting a large tar file that was overwriting some existing files and creating new ones when the filesystem ran out of space.  Many messages were printed about disk-full then the kernel panic'ed in inodedep_lookup.  Rebooted, fsck complained about a lot of errors but now when booting up it seems the filesystem is irrevocably damaged and the kernel always panics in bootup in the following way:

/: bad dir ino 30336 at offset 0: mangled entry
panic: bad dir
Stopped in pid 8.1 (sh) at      0xc0389bb0:     mov     r15, r14

Here's output from the original crash during tar xfzv man.tgz -C /

uid 0, pid 380, command tar, on /: file system full
uid 0, pid 380, command tar, on /: file system full
uid 0, pid 380, command tar, on /: file system full
uid 0, pid 380, command tar, on /: file system full
uid 0, pid 380, command tar, on /: file system full
uid 0, pid 380, command tar, on /: file system full
uid 0, pid 380, command tar, on /: file system full
uid 0, pid 380, command tar, on /: file system full
uid 0, pid 380, command tar, on /: file system full
uid 0, pid 380, command tar, on /: file system full
uid 0, pid 380, command tar, on /: file system full
uid 0, pid 380, command tar, on /: file system full
Fatal kernel mode data abort: 'Alignment Fault 3'
trapframe: 0xc2cc16c8
FSR=00000003, FAR=7073088f, spsr=20000013
r0 =c04dafac, r1 =00000439, r2 =00000001, r3 =202d2d20
r4 =70730873, r5 =00000b93, r6 =00000002, r7 =c114d000
r8 =c2eacb30, r9 =00000000, r10=c110f0e4, r11=c2cc1748
r12=c110e000, ssp=c2cc1714, slr=000007ff, pc =c02bf4a0

db> bt
netbsd:inodedep_lookup+0x10
        scp=0xc02bf460 rlv=0xc02c6778 (netbsd:flush_inodedep_deps+0x5c)
        rsp=0xc2cc174c rfp=0xc2cc17a8
        r10=0xc114d000 r9=0x00000b93
        r8=0xc2eacb30 r7=0xc0422dd4 r6=0x00000002 r5=0xc2eacb30
        r4=0x00000000
netbsd:flush_inodedep_deps+0x10
        scp=0xc02c672c rlv=0xc02c61d8 (0xc02c61d8)
        rsp=0xc2cc17ac rfp=0xc2cc1818
        r10=0xc2cc1980 r9=0xc2cc1980
        r8=0xc2eacb30 r7=0x00000000 r6=0x00000000 r5=0xc2eacb30
        r4=0x00000000
0xc02c618c
        scp=0xc02c618c rlv=0xc02cce70 (netbsd:ffs_full_fsync+0x118)
        rsp=0xc2cc181c rfp=0xc2cc18a0
        r10=0x00000004 r9=0xc2cc1980
        r8=0x00000000 r7=0x00000000 r6=0x00000000 r5=0xc2eacb30
        r4=0x00000000
netbsd:ffs_full_fsync+0x10
        scp=0xc02ccd68 rlv=0xc02cca40 (netbsd:ffs_fsync+0x64)
        rsp=0xc2cc18a4 rfp=0xc2cc1970
        r10=0xc2cc1980 r9=0x00000000
        r8=0x00000001 r7=0x00000000 r6=0xc2cc1990 r5=0xc2eacb30
        r4=0x00000000
netbsd:ffs_fsync+0x10
        scp=0xc02cc9ec rlv=0xc03433b0 (0xc03433b0)
        rsp=0xc2cc1974 rfp=0xc2cc19e8
        r10=0x00000000 r9=0x00000000
        r8=0x00000001 r7=0x00000000 r6=0x00000000 r5=0xc2eacb30
        r4=0x00000000
0xc03432fc
        scp=0xc03432fc rlv=0xc03446f4 (0xc03446f4)
        rsp=0xc2cc19ec rfp=0xc2cc1a60
        r10=0xc2442cc0 r9=0xc2cc1b1c
        r8=0xc2442cc0 r7=0x00000000 r6=0x00000000 r5=0xc2eacb30
        r4=0x00000008
0xc03444a0
        scp=0xc03444a0 rlv=0xc0344a30 (0xc0344a30)
        rsp=0xc2cc1a64 rfp=0xc2cc1a80
        r8=0xc2442cc0 r7=0xc04936d4
        r6=0xc04936d4 r5=0x00000000 r4=0xc2eacb30
0xc03449f0
        scp=0xc03449f0 rlv=0xc034292c (netbsd:getcleanvnode+0x11c)
        rsp=0xc2cc1a84 rfp=0xc2cc1ab0
        r5=0xc03f37c8 r4=0xc2eacb30
netbsd:getcleanvnode+0x10
        scp=0xc0342820 rlv=0xc0342f40 (netbsd:getnewvnode+0xe8)
        rsp=0xc2cc1ab4 rfp=0xc2cc1ae8
        r8=0x00000000 r7=0x00000000
        r6=0xc04df0b4 r5=0xc114e000 r4=0x00000000
netbsd:getnewvnode+0x10
        scp=0xc0342e68 rlv=0xc02cabd0 (0xc02cabd0)
        rsp=0xc2cc1aec rfp=0xc2cc1b48
        r10=0xc114e000 r9=0x00000da3
        r8=0xc2cc1bb0 r7=0xc2d36900 r6=0x07080010 r5=0x00001000
        r4=0x00000000
0xc02cab7c
        scp=0xc02cab7c rlv=0xc02d01e0 (0xc02d01e0)
        rsp=0xc2cc1b4c rfp=0xc2cc1c90
        r10=0xc114e000 r9=0xc2d34ddc
        r8=0x00000c00 r7=0xc2d36900 r6=0x07080010 r5=0x00000000
        r4=0x00000000
0xc02cf7a0
        scp=0xc02cf7a0 rlv=0xc034202c (netbsd:lookup+0x274)
        rsp=0xc2cc1c94 rfp=0xc2cc1d10
        r10=0xc03f31d8 r9=0xc2cc1ccc
        r8=0xc2cc1e3c r7=0xc2cc1e2c r6=0xc2cc1e50 r5=0xc2d34ddc
        r4=0x00000000
netbsd:lookup+0x10
        scp=0xc0341dc8 rlv=0xc0341a28 (0xc0341a28)
        rsp=0xc2cc1d14 rfp=0xc2cc1d98
        r10=0x00000000 r9=0x00039f2c
        r8=0xc2eac938 r7=0xc2cc1e50 r6=0x00000000 r5=0xc2cc1e2c
        r4=0xc244b0a8
0xc0341900
        scp=0xc0341900 rlv=0xc034ca6c (netbsd:rename_files+0xd4)
        rsp=0xc2cc1d9c rfp=0xc2cc1ee0
        r10=0x00000000 r9=0x00039f2c
        r8=0xc2eac938 r7=0x00038664 r6=0xc2442cc0 r5=0x00000000
        r4=0x0003d300
netbsd:rename_files+0x10
        scp=0xc034c9a8 rlv=0xc038e008 (0xc038e008)
        rsp=0xc2cc1ee4 rfp=0xc2cc1f60
        r10=0x00000004 r8=0xc244a3e0
        r7=0xc0423834 r6=0xc2cc1fb4 r5=0x00000002 r4=0xefa00080
0xc038dec8
        scp=0xc038dec8 rlv=0xc038de44 (0xc038de44)
        rsp=0xc2cc1f64 rfp=0xc2cc1fb0
        r10=0x00039f28 r9=0x00039f2c
        r8=0x00000001 r7=0xc04df820 r6=0xc2442cc0 r5=0x00000000
        r4=0xc244a3e0
0xc038ddd0
        scp=0xc038ddd0 rlv=0xc03910c8 (netbsd:swi_entry+0x28)
        rsp=0xc2cc1fb4 rfp=0xbfffea9c
        r8=0x00039ee4 r7=0x000361fc
        r6=0x00038664 r5=0x00038660 r4=0x0003d300
db>

db> show registers
spsr        0x20000013
r0          0xc04dafac  inodedep_hashtbl
r1          0x439
r2          0x1
r3          0x202d2d20
r4          0x70730873
r5          0xb93
r6          0x2
r7          0xc114d000
r8          0xc2eacb30
r9          0
r10         0xc110f0e4
r11         0xc2cc1748
r12         0xc110e000
usr_sp      0xbfffea80
usr_lr      0x11444
svc_sp      0xc2cc1714
svc_lr      0x7ff
pc          0xc02bf4a0  inodedep_lookup+0x50
und_sp      0xc2cc0ff0
abt_sp      0xc01ea000
irq_sp      0xc01f2000
netbsd:inodedep_lookup+0x50:    ldr     r3, [r4, #0x01c]

>How-To-Repeat:

>Fix: