Lines Matching refs:lun
26 struct gen_lun *lun; in gennvm_blocks_free() local
29 gennvm_for_each_lun(gn, lun, i) { in gennvm_blocks_free()
30 if (!lun->vlun.blocks) in gennvm_blocks_free()
32 vfree(lun->vlun.blocks); in gennvm_blocks_free()
45 struct gen_lun *lun; in gennvm_luns_init() local
52 gennvm_for_each_lun(gn, lun, i) { in gennvm_luns_init()
53 spin_lock_init(&lun->vlun.lock); in gennvm_luns_init()
54 INIT_LIST_HEAD(&lun->free_list); in gennvm_luns_init()
55 INIT_LIST_HEAD(&lun->used_list); in gennvm_luns_init()
56 INIT_LIST_HEAD(&lun->bb_list); in gennvm_luns_init()
58 lun->reserved_blocks = 2; /* for GC only */ in gennvm_luns_init()
59 lun->vlun.id = i; in gennvm_luns_init()
60 lun->vlun.lun_id = i % dev->luns_per_chnl; in gennvm_luns_init()
61 lun->vlun.chnl_id = i / dev->luns_per_chnl; in gennvm_luns_init()
62 lun->vlun.nr_free_blocks = dev->blks_per_lun; in gennvm_luns_init()
63 lun->vlun.nr_inuse_blocks = 0; in gennvm_luns_init()
64 lun->vlun.nr_bad_blocks = 0; in gennvm_luns_init()
74 struct gen_lun *lun; in gennvm_block_bb() local
78 lun = &gn->luns[(dev->luns_per_chnl * ppa.g.ch) + ppa.g.lun]; in gennvm_block_bb()
84 blk = &lun->vlun.blocks[i]; in gennvm_block_bb()
90 list_move_tail(&blk->list, &lun->bb_list); in gennvm_block_bb()
91 lun->vlun.nr_bad_blocks++; in gennvm_block_bb()
103 struct gen_lun *lun; in gennvm_block_map() local
130 lun = &gn->luns[lun_id]; in gennvm_block_map()
134 blk = &lun->vlun.blocks[div_u64(pba, dev->sec_per_blk)]; in gennvm_block_map()
141 list_move_tail(&blk->list, &lun->used_list); in gennvm_block_map()
143 lun->vlun.nr_free_blocks--; in gennvm_block_map()
144 lun->vlun.nr_inuse_blocks++; in gennvm_block_map()
153 struct gen_lun *lun; in gennvm_blocks_init() local
158 gennvm_for_each_lun(gn, lun, lun_iter) { in gennvm_blocks_init()
159 lun->vlun.blocks = vzalloc(sizeof(struct nvm_block) * in gennvm_blocks_init()
161 if (!lun->vlun.blocks) in gennvm_blocks_init()
165 block = &lun->vlun.blocks[blk_iter]; in gennvm_blocks_init()
169 block->lun = &lun->vlun; in gennvm_blocks_init()
174 lun->vlun.nr_free_blocks--; in gennvm_blocks_init()
178 list_add_tail(&block->list, &lun->free_list); in gennvm_blocks_init()
185 ppa.g.ch = lun->vlun.chnl_id; in gennvm_blocks_init()
186 ppa.g.lun = lun->vlun.id; in gennvm_blocks_init()
261 struct gen_lun *lun = container_of(vlun, struct gen_lun, vlun); in gennvm_get_blk() local
267 if (list_empty(&lun->free_list)) { in gennvm_get_blk()
269 lun->vlun.id); in gennvm_get_blk()
273 if (!is_gc && lun->vlun.nr_free_blocks < lun->reserved_blocks) in gennvm_get_blk()
276 blk = list_first_entry(&lun->free_list, struct nvm_block, list); in gennvm_get_blk()
277 list_move_tail(&blk->list, &lun->used_list); in gennvm_get_blk()
280 lun->vlun.nr_free_blocks--; in gennvm_get_blk()
281 lun->vlun.nr_inuse_blocks++; in gennvm_get_blk()
290 struct nvm_lun *vlun = blk->lun; in gennvm_put_blk()
291 struct gen_lun *lun = container_of(vlun, struct gen_lun, vlun); in gennvm_put_blk() local
297 list_move_tail(&blk->list, &lun->free_list); in gennvm_put_blk()
298 lun->vlun.nr_free_blocks++; in gennvm_put_blk()
299 lun->vlun.nr_inuse_blocks--; in gennvm_put_blk()
303 list_move_tail(&blk->list, &lun->bb_list); in gennvm_put_blk()
304 lun->vlun.nr_bad_blocks++; in gennvm_put_blk()
305 lun->vlun.nr_inuse_blocks--; in gennvm_put_blk()
311 list_move_tail(&blk->list, &lun->bb_list); in gennvm_put_blk()
312 lun->vlun.nr_bad_blocks++; in gennvm_put_blk()
313 lun->vlun.nr_inuse_blocks--; in gennvm_put_blk()
361 struct gen_lun *lun; in gennvm_blk_set_type() local
365 ppa->g.lun > dev->luns_per_chnl || in gennvm_blk_set_type()
370 ppa->g.lun, dev->luns_per_chnl, in gennvm_blk_set_type()
375 lun = &gn->luns[ppa->g.lun * ppa->g.ch]; in gennvm_blk_set_type()
376 blk = &lun->vlun.blocks[ppa->g.blk]; in gennvm_blk_set_type()
476 struct gen_lun *lun; in gennvm_lun_info_print() local
480 gennvm_for_each_lun(gn, lun, i) { in gennvm_lun_info_print()
481 spin_lock(&lun->vlun.lock); in gennvm_lun_info_print()
485 lun->vlun.nr_free_blocks, in gennvm_lun_info_print()
486 lun->vlun.nr_inuse_blocks, in gennvm_lun_info_print()
487 lun->vlun.nr_bad_blocks); in gennvm_lun_info_print()
489 spin_unlock(&lun->vlun.lock); in gennvm_lun_info_print()