[Yaffs] Checkpointing question.

Top Page
Attachments:
Message as email
+ (text/plain)
Delete this message
Reply to this message
Author: Robin Iddon
Date:  
To: yaffs
Subject: [Yaffs] Checkpointing question.
Hi,

We have recently ported Yaffs to a ATMEL AT91SAM9261EK using a Samsung
K9F2G08U0M 2Gbit NAND FLASH device.

We're running C straight on the processor for this application, so no
O/S to speak of.

We have provided the various routines YAFFS needs to run on this
platform and it does appear to be working, so thanks!

However, I have one question about checkpointing - I cannot decide if
it's working properly or not. If you look at the output below you'll
see there's a "bad sequence" error I am concerned with, and also I
wanted to understand if the initial scan (and resulting
"isCheckpointed:0") is correct?

Our test consists of Startup/mount/open/read+write/close/unmount and
these all work (i.e. data is saved/read and no error returns). In this
case we're just writing 10 bytes to a single test file in the first run
and reading them back in the second and nothing else; we started with an
otherwise erased FLASH device (excepting for the pre-marked bad blocks).

Looking at the debugging output we see at startup/mount (extra comments
in <>):

yaffs: yaffs_GutsInitialise()restore entry: isCheckpointed 0
find next checkpt block: start: blocks 0 next 1
find next checkpt block: search: block 1 oid 261 seq 4112 eccr 3
find next checkpt block: search: block 2 oid 261 seq 4112 eccr 3
find next checkpt block: search: block 3 oid 4 seq 0 eccr 3
find next checkpt block: search: block 4 oid 0 seq 0 eccr 0
find next checkpt block: search: block 5 oid 0 seq 0 eccr 0
<repeats until last block ...>
find next checkpt block: search: block 2046 oid 0 seq 0 eccr 0
find next checkpt block: search: block 2047 oid 0 seq 0 eccr 0
found no more checkpt blocks
checkpoint byte count 0
<should this be 0?>
restore exit: isCheckpointed 0
yaffs_ScanBackwards starts intstartblk 1 intendblk 2047...
<Yikes - do we expect this bad sequence?>
Block scanning block 3 has bad sequence number 0
<We do expect these 5 blocks to be bad, so that's OK>
block 127 is bad
block 840 is bad
block 1084 is bad
block 1706 is bad
block 1975 is bad
2 blocks to be sorted...
...done Allocating from 2 63
Allocating from 2 62
Allocating from 2 61
Allocating from 2 60
<snip>
Allocating from 1 5
Allocating from 1 4
Allocating from 1 3
Allocating from 1 2
yaffs_ScanBackwards endsyaffs: yaffs_GutsInitialise() done.

Then we read from our test file (which was already written on a previous
run of the program) and get the correct data.

Then we unmount and get this:

yaffs block 1 gc prioritised
yaffs block 2 gc prioritised
save entry: isCheckpointed 0
checkpt blocks available = 2034
checking blocks 1 to 2047
allocating checkpt block: erased 2039 reserved 5 avail 2034 next 1
allocating checkpt block 4
checkpoint wite buffer nand 256(4:0) objid 5 chId 1
checkpoint wite buffer nand 257(4:1) objid 5 chId 2
checkpoint wite buffer nand 258(4:2) objid 5 chId 3
checkpoint wite buffer nand 259(4:3) objid 5 chId 4
checkpoint wite buffer nand 260(4:4) objid 5 chId 5
checkpoint wite buffer nand 261(4:5) objid 5 chId 6
checkpoint wite buffer nand 262(4:6) objid 5 chId 7
checkpoint wite buffer nand 263(4:7) objid 5 chId 8
checkpoint wite buffer nand 264(4:8) objid 5 chId 9
checkpoint wite buffer nand 265(4:9) objid 5 chId 10
checkpoint wite buffer nand 266(4:10) objid 5 chId 11
checkpoint wite buffer nand 267(4:11) objid 5 chId 12
checkpoint wite buffer nand 268(4:12) objid 5 chId 13
checkpoint wite buffer nand 269(4:13) objid 5 chId 14
checkpoint wite buffer nand 270(4:14) objid 5 chId 15
checkpoint wite buffer nand 271(4:15) objid 5 chId 16
Checkpoint write object 1 parent 0 type 3 chunk 0 obj addr 23FE23D8
Checkpoint write object 2 parent 1 type 3 chunk 0 obj addr 23FE2454
Checkpoint write object 3 parent 0 type 3 chunk 0 obj addr 23FE22E0
Checkpoint write object 4 parent 0 type 3 chunk 0 obj addr 23FE235C
Checkpoint write object 261 parent 1 type 1 chunk 128 obj addr 23FE24D0
checkpoint wite buffer nand 272(4:16) objid 5 chId 17
checkpoint byte count 33036
save exit: isCheckpointed 1



Thanks in advance.

Robin