Re: [Yaffs] yaffs2 and power fail problems

Top Page
Attachments:
Message as email
+ (text/plain)
Delete this message
Reply to this message
Author: Blair Barnett
Date:  
To: Charles Manning
CC: yaffs
Subject: Re: [Yaffs] yaffs2 and power fail problems
This is THE problem we're having. Unfortunately, of course, it is a
highly intermittant problem.

When this happens again, how can I go about locating the page to give
you a binary dump?

The line number in the yaffs code as far as I can tell is 323:
for(i = 0; i < dev->blocksInCheckpoint && dev->checkpointBlockLi
st[i] >= 0; i++){

Here's the output from objdump:


c0084438 <yaffs_CheckpointClose>:
yaffs_CheckpointClose():       
/opt/cni/bbarnett-kernel-3247/kernel/linux-2.4.27-r2/fs/yaffs2/yaffs_checkptrw.c
:316
c0084438:       e1a0c00d        mov     ip, sp
c008443c:       e92dd810        stmdb   sp!, {r4, fp, ip, lr, pc}
c0084440:       e24cb004        sub     fp, ip, #4      ; 0x4
c0084444:       e1a04000        mov     r4, r0
/opt/cni/bbarnett-kernel-3247/kernel/linux-2.4.27-r2/fs/yaffs2/yaffs_checkptrw.c
:318
c0084448:       e59030d0        ldr     r3, [r0, #208]
c008444c:       e3530000        cmp     r3, #0  ; 0x0
c0084450:       0a00001e        beq     c00844d0 
<yaffs_CheckpointClose+0x98>
/opt/cni/bbarnett-kernel-3247/kernel/linux-2.4.27-r2/fs/yaffs2/yaffs_checkptrw.c
:319
c0084454:       e59030c8        ldr     r3, [r0, #200]
c0084458:       e3530000        cmp     r3, #0  ; 0x0  
c008445c:       1a000019        bne     c00844c8 
<yaffs_CheckpointClose+0x90>
/opt/cni/bbarnett-kernel-3247/kernel/linux-2.4.27-r2/fs/yaffs2/yaffs_checkptrw.c
:335
c0084460:       e59410d4        ldr     r1, [r4, #212]
c0084464:       e5943010        ldr     r3, [r4, #16]
c0084468:       e0020193        mul     r2, r3, r1
c008446c:       e5943d30        ldr     r3, [r4, #3376]
c0084470:       e0623003        rsb     r3, r2, r3
c0084474:       e5843d30        str     r3, [r4, #3376]
/opt/cni/bbarnett-kernel-3247/kernel/linux-2.4.27-r2/fs/yaffs2/yaffs_checkptrw.c
:336
c0084478:       e59430fc        ldr     r3, [r4, #252]
c008447c:       e0613003        rsb     r3, r1, r3
c0084480:       e58430fc        str     r3, [r4, #252]
/opt/cni/bbarnett-kernel-3247/kernel/linux-2.4.27-r2/fs/yaffs2/yaffs_checkptrw.c
:339
c0084484:       e59f30c0        ldr     r3, [pc, #192]  ; c008454c 
<yaffs_Checkp
ointClose+0x114>
c0084488:       e5933000        ldr     r3, [r3]
c008448c:       e3130902        tst     r3, #32768      ; 0x8000
c0084490:       1a000008        bne     c00844b8 
<yaffs_CheckpointClose+0x80>
/opt/cni/bbarnett-kernel-3247/kernel/linux-2.4.27-r2/fs/yaffs2/yaffs_checkptrw.c
:342
c0084494:       e59400cc        ldr     r0, [r4, #204]
c0084498:       e3500000        cmp     r0, #0  ; 0x0
c008449c:       1a000000        bne     c00844a4 
<yaffs_CheckpointClose+0x6c>
/opt/cni/bbarnett-kernel-3247/kernel/linux-2.4.27-r2/fs/yaffs2/yaffs_checkptrw.c
:351
c00844a0:       e91ba810        ldmdb   fp, {r4, fp, sp, pc}
/opt/cni/bbarnett-kernel-3247/kernel/linux-2.4.27-r2/fs/yaffs2/yaffs_checkptrw.c
:344
c00844a4:       ebfef0db        bl      c0040818 <kfree>
/opt/cni/bbarnett-kernel-3247/kernel/linux-2.4.27-r2/fs/yaffs2/yaffs_checkptrw.c
:345
c00844a8:       e3a03000        mov     r3, #0  ; 0x0  
c00844ac:       e58430cc        str     r3, [r4, #204]
/opt/cni/bbarnett-kernel-3247/kernel/linux-2.4.27-r2/fs/yaffs2/yaffs_checkptrw.c
:346
c00844b0:       e3a00001        mov     r0, #1  ; 0x1
c00844b4:       eafffff9        b       c00844a0 
<yaffs_CheckpointClose+0x68>
c00844b8:       e59410c4        ldr     r1, [r4, #196]
c00844bc:       e59f008c        ldr     r0, [pc, #140]  ; c0084550 
<yaffs_Checkp
ointClose+0x118>
c00844c0:       ebfe8aa8        bl      c0026f68 <printk>
c00844c4:       eafffff2        b       c0084494 
<yaffs_CheckpointClose+0x5c>
/opt/cni/bbarnett-kernel-3247/kernel/linux-2.4.27-r2/fs/yaffs2/yaffs_checkptrw.c
:320c00844c8:       ebffff1e        bl      c0084148 
<yaffs_CheckpointFlushBuffer>
c00844cc:       eaffffe3        b       c0084460 
<yaffs_CheckpointClose+0x28>
/opt/cni/bbarnett-kernel-3247/kernel/linux-2.4.27-r2/fs/yaffs2/yaffs_checkptrw.c
:323
c00844d0:       e1a0c003        mov     ip, r3
c00844d4:       e590e0d4        ldr     lr, [r0, #212]
c00844d8:       e153000e        cmp     r3, lr
c00844dc:       a59000e4        ldrge   r0, [r0, #228]
c00844e0:       aa000015        bge     c008453c 
<yaffs_CheckpointClose+0x104>
c00844e4:       e59000e4        ldr     r0, [r0, #228]
c00844e8:       e7903103        ldr     r3, [r0, r3, lsl #2]
c00844ec:       e3530000        cmp     r3, #0  ; 0x0
c00844f0:       ba000011        blt     c008453c 
<yaffs_CheckpointClose+0x104>
c00844f4:       e1a02003        mov     r2, r3
/opt/cni/bbarnett-kernel-3247/kernel/linux-2.4.27-r2/fs/yaffs2/yaffs_checkptrw.c
:324
c00844f8:       e59430ec        ldr     r3, [r4, #236]
c00844fc:       e0831182        add     r1, r3, r2, lsl #3
/opt/cni/bbarnett-kernel-3247/kernel/linux-2.4.27-r2/fs/yaffs2/yaffs_checkptrw.c
:325
c0084500:       e5d12003        ldrb    r2, [r1, #3]
c0084504:       e202300f        and     r3, r2, #15     ; 0xf
c0084508:       e3530003        cmp     r3, #3  ; 0x3
/opt/cni/bbarnett-kernel-3247/kernel/linux-2.4.27-r2/fs/yaffs2/yaffs_checkptrw.c
:326
c008450c:       03c23008        biceq   r3, r2, #8      ; 0x8
c0084510:       03833007        orreq   r3, r3, #7      ; 0x7
c0084514:       05c13003        streqb  r3, [r1, #3]
c0084518:       0594e0d4        ldreq   lr, [r4, #212]
c008451c:       059400e4        ldreq   r0, [r4, #228]
/opt/cni/bbarnett-kernel-3247/kernel/linux-2.4.27-r2/fs/yaffs2/yaffs_checkptrw.c
:323
c0084520:       e28cc001        add     ip, ip, #1      ; 0x1
c0084524:       e15c000e        cmp     ip, lr
c0084528:       aa000003        bge     c008453c 
<yaffs_CheckpointClose+0x104>
c008452c:       e790310c        ldr     r3, [r0, ip, lsl #2]
c0084530:       e1a02003        mov     r2, r3
c0084534:       e3530000        cmp     r3, #0  ; 0x0
c0084538:       aaffffee        bge     c00844f8 
<yaffs_CheckpointClose+0xc0>
/opt/cni/bbarnett-kernel-3247/kernel/linux-2.4.27-r2/fs/yaffs2/yaffs_checkptrw.c
:331
c008453c:       ebfef0b5        bl      c0040818 <kfree>
/opt/cni/bbarnett-kernel-3247/kernel/linux-2.4.27-r2/fs/yaffs2/yaffs_checkptrw.c
:332
c0084540:       e3a03000        mov     r3, #0  ; 0x0
c0084544:       e58430e4        str     r3, [r4, #228]
c0084548:       eaffffc4        b       c0084460 
<yaffs_CheckpointClose+0x28>
c008454c:       c01462c4        andgts  r6, r4, r4, asr #5
c0084550:       c012cd58        andgts  ip, r2, r8, asr sp


-blair

Charles Manning wrote:
> On Friday 16 February 2007 11:07, Blair Barnett wrote
> Is this the same problem as the corruption you mention below?
> Can you please explain the sequence that lead up to this?
> Also please provide the following:
> 1) A line number for this oops. I have an idea, but I want to be sure.
> 2) A binary dump of the broken page.
>
> I suggest you also turn on more yaffs tracing to check this out,
>
> From what I read here, this crash happened during a umount due to a strange
> block value beiung used in the checkpoint.
>