INFTL_mount query

Mohanlal Jangir mohanlaljangir at gmail.com
Wed Sep 9 18:32:05 EDT 2009


 589        for (first_block = s->firstEUN; first_block <= s->lastEUN;
first_block++) {
 590                if (s->PUtable[first_block] != BLOCK_NOTEXPLORED)
 591                        continue;
 592
 593                do_format_chain = 0;
 594                first_logical_block = BLOCK_NIL;
 595                last_block = BLOCK_NIL;
 596                block = first_block;
 597
 598                for (chain_length = 0; ; chain_length++) {
 599
 600                        if ((chain_length == 0) &&
 601                            (s->PUtable[block] != BLOCK_NOTEXPLORED)) {
 602                                /* Nothing to do here, onto next block */
 603                                break;
 604                        }

Is code from line 600 to 604 not redundant ? Because for chain_length
== 0 case, block is always equal to first_block (line 596) and
s->PUtable[first_block] != BLCOK_NOTEXPLORED is already checked at
line 590.

What is difference between ANAC and NACs?
I somewhere read that ANAC means accumulated number along chain. What
does this signify?
Does inftl code handles ANAC overflow (it is unsigned char)?

During foldchain, INFTL_formatblock does not update inftl_unithead1
data for the block being formated. Does this not create problem if
system is rebooted and INFTL_mount reforms chains? (Because some
blocks still has stale virtualUnitNo stored in unithead).

Thanks
-Mohan



More information about the linux-mtd mailing list