Lines Matching refs:blocks
88 struct block *blocks;
95 struct block *block = &part->blocks[block_no];
188 part->blocks = kcalloc(part->total_blocks, sizeof(struct block),
190 if (!part->blocks)
238 kfree(part->blocks);
280 erase->addr = part->blocks[block].offset;
283 part->blocks[block].state = BLOCK_ERASING;
284 part->blocks[block].free_sectors = 0;
291 part->blocks[block].state = BLOCK_FAILED;
292 part->blocks[block].free_sectors = 0;
293 part->blocks[block].used_sectors = 0;
298 part->blocks[block].state = BLOCK_ERASED;
299 part->blocks[block].free_sectors = part->data_sectors_per_block;
300 part->blocks[block].used_sectors = 0;
301 part->blocks[block].erases++;
303 rc = mtd_write(part->mbd.mtd, part->blocks[block].offset,
310 part->mbd.mtd->name, part->blocks[block].offset);
311 part->blocks[block].state = BLOCK_FAILED;
313 part->blocks[block].state = BLOCK_OK;
339 rc = mtd_read(part->mbd.mtd, part->blocks[block_no].offset,
348 part->blocks[block_no].offset);
368 addr = part->blocks[block_no].offset +
373 if (!part->blocks[block_no].used_sectors--) {
436 if (part->blocks[block].free_sectors)
439 this_score = part->blocks[block].used_sectors;
445 if (part->blocks[block].used_sectors ==
450 this_score += part->blocks[block].erases;
466 part->blocks[best_block].used_sectors,
467 part->blocks[best_block].free_sectors);
469 if (part->blocks[best_block].used_sectors)
491 if (part->blocks[block].free_sectors &&
495 if (part->blocks[block].state == BLOCK_UNUSED)
528 rc = mtd_read(part->mbd.mtd, part->blocks[block].offset,
538 part->blocks[block].offset);
559 addr = part->blocks[block].offset +
575 part->blocks[block].used_sectors--;
577 if (!part->blocks[block].used_sectors &&
578 !part->blocks[block].free_sectors)
615 !part->blocks[part->current_block].free_sectors) {
622 block = &part->blocks[part->current_block];
774 part->mbd.mtd->name, i, part->blocks[i].erases);
780 kfree(part->blocks);