Lines Matching refs:pblk
16 * pblk-map.c - pblk's lba-ppa mapping strategy
20 #include "pblk.h"
22 static int pblk_map_page_data(struct pblk *pblk, unsigned int sentry,
28 struct pblk_line *line = pblk_line_get_data(pblk);
33 int nr_secs = pblk->min_write_pgs;
45 line = pblk_line_replace_data(pblk);
46 pblk_line_close_meta(pblk, prev_line);
49 pblk_pipeline_stop(pblk);
56 lba_list = emeta_to_lbas(pblk, emeta->buf);
58 paddr = pblk_alloc_page(pblk, line, nr_secs);
61 struct pblk_sec_meta *meta = pblk_get_meta(pblk, meta_list, i);
65 ppa_list[i] = addr_to_gen_ppa(pblk, paddr, line->id);
77 w_ctx = pblk_rb_w_ctx(&pblk->rwb, sentry + i);
84 atomic64_inc(&pblk->pad_wa);
88 __pblk_map_invalidate(pblk, line, paddr);
92 pblk_down_rq(pblk, ppa_list[0], lun_bitmap);
96 int pblk_map_rq(struct pblk *pblk, struct nvm_rq *rqd, unsigned int sentry,
100 void *meta_list = pblk_get_meta_for_writes(pblk, rqd);
104 int min = pblk->min_write_pgs;
110 meta_buffer = pblk_get_meta(pblk, meta_list, i);
112 ret = pblk_map_page_data(pblk, sentry + i, &ppa_list[i],
122 int pblk_map_erase_rq(struct pblk *pblk, struct nvm_rq *rqd,
126 struct nvm_tgt_dev *dev = pblk->dev;
128 struct pblk_line_meta *lm = &pblk->lm;
129 void *meta_list = pblk_get_meta_for_writes(pblk, rqd);
134 int min = pblk->min_write_pgs;
141 meta_buffer = pblk_get_meta(pblk, meta_list, i);
143 ret = pblk_map_page_data(pblk, sentry + i, &ppa_list[i],
153 e_line = pblk_line_get_erase(pblk);
155 return pblk_map_rq(pblk, rqd, sentry, lun_bitmap,
170 return pblk_map_rq(pblk, rqd, sentry, lun_bitmap,
176 d_line = pblk_line_get_data(pblk);
181 e_line = pblk_line_get_erase(pblk);
205 *erase_ppa = pblk->luns[bit].bppa; /* set ch and lun */