Lines Matching full:block
35 unsigned int i, block; in find_boot_record() local
55 for (block = 0; block < inftl->nb_blocks; block++) { in find_boot_record()
62 ret = mtd_read(mtd, block * inftl->EraseSize, SECTORSIZE, in find_boot_record()
70 printk(KERN_WARNING "INFTL: block read at 0x%x " in find_boot_record()
72 block * inftl->EraseSize, in find_boot_record()
76 "failures for this block will " in find_boot_record()
89 block * inftl->EraseSize + SECTORSIZE + 8, in find_boot_record()
94 "(err %d)\n", block * inftl->EraseSize, in find_boot_record()
107 mtd_read(mtd, block * inftl->EraseSize + 4096, SECTORSIZE, in find_boot_record()
172 block >>= mh->BlockMultiplierBits; in find_boot_record()
202 * to erase the hidden block for full in find_boot_record()
252 * Block count is set to last used EUN (we won't need to keep in find_boot_record()
279 /* Mark this boot record (NFTL MediaHeader) block as reserved */ in find_boot_record()
280 inftl->PUtable[block] = BLOCK_RESERVED; in find_boot_record()
294 inftl->MediaUnit = block; in find_boot_record()
361 int INFTL_formatblock(struct INFTLrecord *inftl, int block) in INFTL_formatblock() argument
369 pr_debug("INFTL: INFTL_formatblock(inftl=%p,block=%d)\n", inftl, block); in INFTL_formatblock()
377 instr->addr = block * inftl->EraseSize; in INFTL_formatblock()
381 mark only the failed block in the bbt. */ in INFTL_formatblock()
388 printk(KERN_WARNING "INFTL: error while formatting block %d\n", in INFTL_formatblock()
389 block); in INFTL_formatblock()
408 instr->addr = block * inftl->EraseSize + SECTORSIZE * 2; in INFTL_formatblock()
413 /* could not format, update the bad block table (caller is responsible in INFTL_formatblock()
429 unsigned int block = first_block, block1; in format_chain() local
431 printk(KERN_WARNING "INFTL: formatting chain at block %d\n", in format_chain()
435 block1 = inftl->PUtable[block]; in format_chain()
437 printk(KERN_WARNING "INFTL: formatting block %d\n", block); in format_chain()
438 if (INFTL_formatblock(inftl, block) < 0) { in format_chain()
442 inftl->PUtable[block] = BLOCK_RESERVED; in format_chain()
444 inftl->PUtable[block] = BLOCK_FREE; in format_chain()
447 /* Goto next block on the chain */ in format_chain()
448 block = block1; in format_chain()
450 if (block == BLOCK_NIL || block >= inftl->lastEUN) in format_chain()
502 int logical, block, i; in INFTL_dumpVUchains() local
509 block = s->VUtable[logical]; in INFTL_dumpVUchains()
510 if (block >= s->nb_blocks) in INFTL_dumpVUchains()
512 pr_debug(" LOGICAL %d --> %d ", logical, block); in INFTL_dumpVUchains()
514 if (s->PUtable[block] == BLOCK_NIL) in INFTL_dumpVUchains()
516 block = s->PUtable[block]; in INFTL_dumpVUchains()
517 pr_debug("%d ", block); in INFTL_dumpVUchains()
529 unsigned int block, first_block, prev_block, last_block; in INFTL_mount() local
550 logical_block = block = BLOCK_NIL; in INFTL_mount()
560 * Any block that is in any way invalid will be left in the in INFTL_mount()
572 block = first_block; in INFTL_mount()
577 (s->PUtable[block] != BLOCK_NOTEXPLORED)) { in INFTL_mount()
578 /* Nothing to do here, onto next block */ in INFTL_mount()
582 if (inftl_read_oob(mtd, block * s->EraseSize + 8, in INFTL_mount()
584 inftl_read_oob(mtd, block * s->EraseSize + in INFTL_mount()
595 ANACtable[block] = h0.ANAC; in INFTL_mount()
597 /* Previous block is relative to start of Partition */ in INFTL_mount()
602 if (s->PUtable[block] != BLOCK_NOTEXPLORED) { in INFTL_mount()
606 s->PUtable[last_block] = block; in INFTL_mount()
611 /* Check for invalid block */ in INFTL_mount()
613 printk(KERN_WARNING "INFTL: corrupt block %d " in INFTL_mount()
615 "mark 0x%x?\n", block, first_block, in INFTL_mount()
629 s->PUtable[block] = BLOCK_FREE; in INFTL_mount()
633 /* Sanity checks on block numbers */ in INFTL_mount()
639 "block %d in chain %d?\n", in INFTL_mount()
640 block, first_block); in INFTL_mount()
656 * Current block is valid, so if we followed a virtual in INFTL_mount()
658 * block pointer in our PUtable now. Then move onto in INFTL_mount()
659 * the previous block in the chain. in INFTL_mount()
661 s->PUtable[block] = BLOCK_NIL; in INFTL_mount()
663 s->PUtable[last_block] = block; in INFTL_mount()
664 last_block = block; in INFTL_mount()
665 block = prev_block; in INFTL_mount()
668 if (block == BLOCK_NIL) in INFTL_mount()
671 /* Validate next block before following it... */ in INFTL_mount()
672 if (block > s->lastEUN) { in INFTL_mount()
674 "block %d in chain %d?\n", block, in INFTL_mount()
688 * newest block in the chain, but it is the newest we have in INFTL_mount()
705 block = s->VUtable[logical_block]; in INFTL_mount()
709 if (block >= BLOCK_RESERVED) in INFTL_mount()
712 ANAC = ANACtable[block]; in INFTL_mount()
714 if (s->PUtable[block] == BLOCK_NIL) in INFTL_mount()
716 if (s->PUtable[block] > s->lastEUN) { in INFTL_mount()
719 s->PUtable[block], logical_block); in INFTL_mount()
720 s->PUtable[block] = BLOCK_NIL; in INFTL_mount()
723 if (ANACtable[block] != ANAC) { in INFTL_mount()
727 * newest block and oldest block. in INFTL_mount()
729 s->VUtable[logical_block] = block; in INFTL_mount()
735 last_block = block; in INFTL_mount()
736 block = s->PUtable[block]; in INFTL_mount()
752 * Third pass, format unreferenced blocks and init free block count. in INFTL_mount()
758 for (block = s->firstEUN; block <= s->lastEUN; block++) { in INFTL_mount()
759 if (s->PUtable[block] == BLOCK_NOTEXPLORED) { in INFTL_mount()
760 printk("INFTL: unreferenced block %d, formatting it\n", in INFTL_mount()
761 block); in INFTL_mount()
762 if (INFTL_formatblock(s, block) < 0) in INFTL_mount()
763 s->PUtable[block] = BLOCK_RESERVED; in INFTL_mount()
765 s->PUtable[block] = BLOCK_FREE; in INFTL_mount()
767 if (s->PUtable[block] == BLOCK_FREE) { in INFTL_mount()
770 s->LastFreeEUN = block; in INFTL_mount()