Lines Matching refs:zone_num

455 static int sm_erase_block(struct sm_ftl *ftl, int zone_num, uint16_t block,  in sm_erase_block()  argument
458 struct ftl_zone *zone = &ftl->zones[zone_num]; in sm_erase_block()
464 erase.addr = sm_mkoffset(ftl, zone_num, block, 0); in sm_erase_block()
473 if (zone_num == 0 && (block == ftl->cis_block || block == 0)) { in sm_erase_block()
480 block, zone_num); in sm_erase_block()
489 block, zone_num); in sm_erase_block()
499 sm_mark_block_bad(ftl, zone_num, block); in sm_erase_block()
758 static int sm_init_zone(struct sm_ftl *ftl, int zone_num) in sm_init_zone() argument
760 struct ftl_zone *zone = &ftl->zones[zone_num]; in sm_init_zone()
767 dbg("initializing zone %d", zone_num); in sm_init_zone()
787 if (zone_num == 0 && block <= ftl->cis_block) in sm_init_zone()
791 if (sm_read_sector(ftl, zone_num, block, 0, NULL, &oob)) in sm_init_zone()
833 lba, zone->lba_to_phys_table[lba], block, zone_num); in sm_init_zone()
836 if (sm_check_block(ftl, zone_num, block)) in sm_init_zone()
840 if (sm_check_block(ftl, zone_num, in sm_init_zone()
851 sm_erase_block(ftl, zone_num, block, 1); in sm_init_zone()
860 sm_printk("no free blocks in zone %d", zone_num); in sm_init_zone()
878 static struct ftl_zone *sm_get_zone(struct sm_ftl *ftl, int zone_num) in sm_get_zone() argument
883 BUG_ON(zone_num >= ftl->zone_count); in sm_get_zone()
884 zone = &ftl->zones[zone_num]; in sm_get_zone()
887 error = sm_init_zone(ftl, zone_num); in sm_get_zone()
934 int zone_num = ftl->cache_zone; in sm_cache_flush() local
943 BUG_ON(zone_num < 0); in sm_cache_flush()
944 zone = &ftl->zones[zone_num]; in sm_cache_flush()
953 zone_num, block_num, sector_num * SM_SECTOR_SIZE, in sm_cache_flush()
974 if (sm_write_block(ftl, ftl->cache_data, zone_num, write_sector, in sm_cache_flush()
983 sm_erase_block(ftl, zone_num, block_num, 1); in sm_cache_flush()
1016 int zone_num, block, boffset; in sm_read() local
1018 sm_break_offset(ftl, sect_no << 9, &zone_num, &block, &boffset); in sm_read()
1022 zone = sm_get_zone(ftl, zone_num); in sm_read()
1029 if (ftl->cache_zone == zone_num && ftl->cache_block == block) { in sm_read()
1043 if (sm_read_sector(ftl, zone_num, block, boffset, buf, NULL)) { in sm_read()
1061 int error = 0, zone_num, block, boffset; in sm_write() local
1064 sm_break_offset(ftl, sec_no << 9, &zone_num, &block, &boffset); in sm_write()
1070 zone = sm_get_zone(ftl, zone_num); in sm_write()
1077 if (ftl->cache_block != block || ftl->cache_zone != zone_num) { in sm_write()
1084 ftl->cache_zone = zone_num; in sm_write()