Lines Matching full:lm
627 struct pblk_line_meta *lm = &pblk->lm; in calc_emeta_len() local
633 lm->emeta_sec[1] = DIV_ROUND_UP( in calc_emeta_len()
634 sizeof(struct line_emeta) + lm->blk_bitmap_len + in calc_emeta_len()
636 lm->emeta_len[1] = lm->emeta_sec[1] * geo->csecs; in calc_emeta_len()
639 lm->dsec_per_line = lm->sec_per_line - lm->emeta_sec[0]; in calc_emeta_len()
640 lm->emeta_sec[2] = DIV_ROUND_UP(lm->dsec_per_line * sizeof(u64), in calc_emeta_len()
642 lm->emeta_len[2] = lm->emeta_sec[2] * geo->csecs; in calc_emeta_len()
644 lm->emeta_sec[3] = DIV_ROUND_UP(l_mg->nr_lines * sizeof(u32), in calc_emeta_len()
646 lm->emeta_len[3] = lm->emeta_sec[3] * geo->csecs; in calc_emeta_len()
648 lm->vsc_list_len = l_mg->nr_lines * sizeof(u32); in calc_emeta_len()
650 return (lm->emeta_len[1] + lm->emeta_len[2] + lm->emeta_len[3]); in calc_emeta_len()
657 struct pblk_line_meta *lm = &pblk->lm; in pblk_set_provision() local
697 sec_meta = (lm->smeta_sec + lm->emeta_sec[0]) * l_mg->nr_free_lines; in pblk_set_provision()
714 struct pblk_line_meta *lm = &pblk->lm; in pblk_setup_line_meta_chk() local
717 for (i = 0; i < lm->blk_per_line; i++) { in pblk_setup_line_meta_chk()
760 struct pblk_line_meta *lm = &pblk->lm; in pblk_setup_line_meta() local
773 chk_in_line = lm->blk_per_line - nr_bad_chks; in pblk_setup_line_meta()
774 if (nr_bad_chks < 0 || nr_bad_chks > lm->blk_per_line || in pblk_setup_line_meta()
775 chk_in_line < lm->min_blk_line) { in pblk_setup_line_meta()
790 struct pblk_line_meta *lm = &pblk->lm; in pblk_alloc_line_meta() local
792 line->blk_bitmap = kzalloc(lm->blk_bitmap_len, GFP_KERNEL); in pblk_alloc_line_meta()
796 line->erase_bitmap = kzalloc(lm->blk_bitmap_len, GFP_KERNEL); in pblk_alloc_line_meta()
801 line->chks = kmalloc_array(lm->blk_per_line, in pblk_alloc_line_meta()
826 struct pblk_line_meta *lm = &pblk->lm; in pblk_line_mg_init() local
860 l_mg->bb_template = kzalloc(lm->sec_bitmap_len, GFP_KERNEL); in pblk_line_mg_init()
864 l_mg->bb_aux = kzalloc(lm->sec_bitmap_len, GFP_KERNEL); in pblk_line_mg_init()
872 l_mg->sline_meta[i] = kmalloc(lm->smeta_len, GFP_KERNEL); in pblk_line_mg_init()
878 lm->sec_bitmap_len, 0, 0, NULL); in pblk_line_mg_init()
898 emeta->buf = kvmalloc(lm->emeta_len[0], GFP_KERNEL); in pblk_line_mg_init()
904 emeta->nr_entries = lm->emeta_sec[0]; in pblk_line_mg_init()
912 for (i = 0; i < lm->sec_per_line; i += bb_distance) in pblk_line_mg_init()
942 struct pblk_line_meta *lm = &pblk->lm; in pblk_line_meta_init() local
946 lm->sec_per_line = geo->clba * geo->all_luns; in pblk_line_meta_init()
947 lm->blk_per_line = geo->all_luns; in pblk_line_meta_init()
948 lm->blk_bitmap_len = BITS_TO_LONGS(geo->all_luns) * sizeof(long); in pblk_line_meta_init()
949 lm->sec_bitmap_len = BITS_TO_LONGS(lm->sec_per_line) * sizeof(long); in pblk_line_meta_init()
950 lm->lun_bitmap_len = BITS_TO_LONGS(geo->all_luns) * sizeof(long); in pblk_line_meta_init()
951 lm->mid_thrs = lm->sec_per_line / 2; in pblk_line_meta_init()
952 lm->high_thrs = lm->sec_per_line / 4; in pblk_line_meta_init()
953 lm->meta_distance = (geo->all_luns / 2) * pblk->min_write_pgs; in pblk_line_meta_init()
960 lm->smeta_sec = i * geo->ws_opt; in pblk_line_meta_init()
961 lm->smeta_len = lm->smeta_sec * geo->csecs; in pblk_line_meta_init()
963 smeta_len = sizeof(struct line_smeta) + lm->lun_bitmap_len; in pblk_line_meta_init()
964 if (smeta_len > lm->smeta_len) { in pblk_line_meta_init()
974 lm->emeta_sec[0] = i * geo->ws_opt; in pblk_line_meta_init()
975 lm->emeta_len[0] = lm->emeta_sec[0] * geo->csecs; in pblk_line_meta_init()
978 if (emeta_len > lm->emeta_len[0]) { in pblk_line_meta_init()
983 lm->emeta_bb = geo->all_luns > i ? geo->all_luns - i : 0; in pblk_line_meta_init()
985 lm->min_blk_line = 1; in pblk_line_meta_init()
987 lm->min_blk_line += DIV_ROUND_UP(lm->smeta_sec + in pblk_line_meta_init()
988 lm->emeta_sec[0], geo->clba); in pblk_line_meta_init()
990 if (lm->min_blk_line > lm->blk_per_line) { in pblk_line_meta_init()
992 lm->blk_per_line); in pblk_line_meta_init()