Lines Matching full:block
49 unsigned int i, block; in find_boot_record() local
69 for (block = 0; block < inftl->nb_blocks; block++) { in find_boot_record()
76 ret = mtd_read(mtd, block * inftl->EraseSize, SECTORSIZE, in find_boot_record()
84 printk(KERN_WARNING "INFTL: block read at 0x%x " in find_boot_record()
86 block * inftl->EraseSize, in find_boot_record()
90 "failures for this block will " in find_boot_record()
103 block * inftl->EraseSize + SECTORSIZE + 8, in find_boot_record()
108 "(err %d)\n", block * inftl->EraseSize, in find_boot_record()
121 mtd_read(mtd, block * inftl->EraseSize + 4096, SECTORSIZE, in find_boot_record()
186 block >>= mh->BlockMultiplierBits; in find_boot_record()
218 * to erase the hidden block for full in find_boot_record()
268 * Block count is set to last used EUN (we won't need to keep in find_boot_record()
300 /* Mark this boot record (NFTL MediaHeader) block as reserved */ in find_boot_record()
301 inftl->PUtable[block] = BLOCK_RESERVED; in find_boot_record()
315 inftl->MediaUnit = block; in find_boot_record()
373 int INFTL_formatblock(struct INFTLrecord *inftl, int block) in INFTL_formatblock() argument
381 pr_debug("INFTL: INFTL_formatblock(inftl=%p,block=%d)\n", inftl, block); in INFTL_formatblock()
390 instr->addr = block * inftl->EraseSize; in INFTL_formatblock()
394 mark only the failed block in the bbt. */ in INFTL_formatblock()
400 printk(KERN_WARNING "INFTL: error while formatting block %d\n", in INFTL_formatblock()
401 block); in INFTL_formatblock()
420 instr->addr = block * inftl->EraseSize + SECTORSIZE * 2; in INFTL_formatblock()
425 /* could not format, update the bad block table (caller is responsible in INFTL_formatblock()
441 unsigned int block = first_block, block1; in format_chain() local
443 printk(KERN_WARNING "INFTL: formatting chain at block %d\n", in format_chain()
447 block1 = inftl->PUtable[block]; in format_chain()
449 printk(KERN_WARNING "INFTL: formatting block %d\n", block); in format_chain()
450 if (INFTL_formatblock(inftl, block) < 0) { in format_chain()
454 inftl->PUtable[block] = BLOCK_RESERVED; in format_chain()
456 inftl->PUtable[block] = BLOCK_FREE; in format_chain()
459 /* Goto next block on the chain */ in format_chain()
460 block = block1; in format_chain()
462 if (block == BLOCK_NIL || block >= inftl->lastEUN) in format_chain()
514 int logical, block, i; in INFTL_dumpVUchains() local
521 block = s->VUtable[logical]; in INFTL_dumpVUchains()
522 if (block > s->nb_blocks) in INFTL_dumpVUchains()
524 pr_debug(" LOGICAL %d --> %d ", logical, block); in INFTL_dumpVUchains()
526 if (s->PUtable[block] == BLOCK_NIL) in INFTL_dumpVUchains()
528 block = s->PUtable[block]; in INFTL_dumpVUchains()
529 pr_debug("%d ", block); in INFTL_dumpVUchains()
541 unsigned int block, first_block, prev_block, last_block; in INFTL_mount() local
562 logical_block = block = BLOCK_NIL; in INFTL_mount()
576 * Any block that is in any way invalid will be left in the in INFTL_mount()
588 block = first_block; in INFTL_mount()
593 (s->PUtable[block] != BLOCK_NOTEXPLORED)) { in INFTL_mount()
594 /* Nothing to do here, onto next block */ in INFTL_mount()
598 if (inftl_read_oob(mtd, block * s->EraseSize + 8, in INFTL_mount()
600 inftl_read_oob(mtd, block * s->EraseSize + in INFTL_mount()
611 ANACtable[block] = h0.ANAC; in INFTL_mount()
613 /* Previous block is relative to start of Partition */ in INFTL_mount()
618 if (s->PUtable[block] != BLOCK_NOTEXPLORED) { in INFTL_mount()
622 s->PUtable[last_block] = block; in INFTL_mount()
627 /* Check for invalid block */ in INFTL_mount()
629 printk(KERN_WARNING "INFTL: corrupt block %d " in INFTL_mount()
631 "mark 0x%x?\n", block, first_block, in INFTL_mount()
645 s->PUtable[block] = BLOCK_FREE; in INFTL_mount()
649 /* Sanity checks on block numbers */ in INFTL_mount()
655 "block %d in chain %d?\n", in INFTL_mount()
656 block, first_block); in INFTL_mount()
672 * Current block is valid, so if we followed a virtual in INFTL_mount()
674 * block pointer in our PUtable now. Then move onto in INFTL_mount()
675 * the previous block in the chain. in INFTL_mount()
677 s->PUtable[block] = BLOCK_NIL; in INFTL_mount()
679 s->PUtable[last_block] = block; in INFTL_mount()
680 last_block = block; in INFTL_mount()
681 block = prev_block; in INFTL_mount()
684 if (block == BLOCK_NIL) in INFTL_mount()
687 /* Validate next block before following it... */ in INFTL_mount()
688 if (block > s->lastEUN) { in INFTL_mount()
690 "block %d in chain %d?\n", block, in INFTL_mount()
704 * newest block in the chain, but it is the newest we have in INFTL_mount()
721 block = s->VUtable[logical_block]; in INFTL_mount()
725 if (block >= BLOCK_RESERVED) in INFTL_mount()
728 ANAC = ANACtable[block]; in INFTL_mount()
730 if (s->PUtable[block] == BLOCK_NIL) in INFTL_mount()
732 if (s->PUtable[block] > s->lastEUN) { in INFTL_mount()
735 s->PUtable[block], logical_block); in INFTL_mount()
736 s->PUtable[block] = BLOCK_NIL; in INFTL_mount()
739 if (ANACtable[block] != ANAC) { in INFTL_mount()
743 * newest block and oldest block. in INFTL_mount()
745 s->VUtable[logical_block] = block; in INFTL_mount()
751 last_block = block; in INFTL_mount()
752 block = s->PUtable[block]; in INFTL_mount()
768 * Third pass, format unreferenced blocks and init free block count. in INFTL_mount()
774 for (block = s->firstEUN; block <= s->lastEUN; block++) { in INFTL_mount()
775 if (s->PUtable[block] == BLOCK_NOTEXPLORED) { in INFTL_mount()
776 printk("INFTL: unreferenced block %d, formatting it\n", in INFTL_mount()
777 block); in INFTL_mount()
778 if (INFTL_formatblock(s, block) < 0) in INFTL_mount()
779 s->PUtable[block] = BLOCK_RESERVED; in INFTL_mount()
781 s->PUtable[block] = BLOCK_FREE; in INFTL_mount()
783 if (s->PUtable[block] == BLOCK_FREE) { in INFTL_mount()
786 s->LastFreeEUN = block; in INFTL_mount()