Re: [PATCH 1/5] lightnvm: pblk: Helpers for OOB metadata
> > On 18 Jun 2018, at 22.53, Igor Konopko wrote: > > > > On 18.06.2018 07:23, Javier Gonzalez wrote: >>> On 16 Jun 2018, at 00.27, Igor Konopko wrote: >>> >>> Currently pblk assumes that size of OOB metadata on drive is always >>> equal to size of pblk_sec_meta struct. This commit add helpers which will >>> allow to handle different sizes of OOB metadata on drive. >>> >>> Signed-off-by: Igor Konopko >>> --- >>> drivers/lightnvm/pblk-core.c | 10 + >>> drivers/lightnvm/pblk-map.c | 21 --- >>> drivers/lightnvm/pblk-read.c | 45 >>> +--- >>> drivers/lightnvm/pblk-recovery.c | 24 - >>> drivers/lightnvm/pblk.h | 29 ++ >>> 5 files changed, 91 insertions(+), 38 deletions(-) >>> >>> diff --git a/drivers/lightnvm/pblk-core.c b/drivers/lightnvm/pblk-core.c >>> index 66ab1036f2fb..8a0ac466872f 100644 >>> --- a/drivers/lightnvm/pblk-core.c >>> +++ b/drivers/lightnvm/pblk-core.c >>> @@ -685,7 +685,7 @@ static int pblk_line_submit_emeta_io(struct pblk *pblk, >>> struct pblk_line *line, >>> rqd.nr_ppas = rq_ppas; >>> >>> if (dir == PBLK_WRITE) { >>> - struct pblk_sec_meta *meta_list = rqd.meta_list; >>> + void *meta_list = rqd.meta_list; >>> >>> rqd.flags = pblk_set_progr_mode(pblk, PBLK_WRITE); >>> for (i = 0; i < rqd.nr_ppas; ) { >>> @@ -693,7 +693,8 @@ static int pblk_line_submit_emeta_io(struct pblk *pblk, >>> struct pblk_line *line, >>> paddr = __pblk_alloc_page(pblk, line, min); >>> spin_unlock(>lock); >>> for (j = 0; j < min; j++, i++, paddr++) { >>> - meta_list[i].lba = cpu_to_le64(ADDR_EMPTY); >>> + pblk_get_meta_at(pblk, meta_list, i)->lba = >>> + cpu_to_le64(ADDR_EMPTY); >>> rqd.ppa_list[i] = >>> addr_to_gen_ppa(pblk, paddr, id); >>> } >>> @@ -825,14 +826,15 @@ static int pblk_line_submit_smeta_io(struct pblk >>> *pblk, struct pblk_line *line, >>> rqd.nr_ppas = lm->smeta_sec; >>> >>> for (i = 0; i < lm->smeta_sec; i++, paddr++) { >>> - struct pblk_sec_meta *meta_list = rqd.meta_list; >>> + void *meta_list = rqd.meta_list; >>> >>> rqd.ppa_list[i] = addr_to_gen_ppa(pblk, paddr, line->id); >>> >>> if (dir == PBLK_WRITE) { >>> __le64 addr_empty = cpu_to_le64(ADDR_EMPTY); >>> >>> - meta_list[i].lba = lba_list[paddr] = addr_empty; >>> + pblk_get_meta_at(pblk, meta_list, i)->lba = >>> + lba_list[paddr] = addr_empty; >>> } >>> } >>> >>> diff --git a/drivers/lightnvm/pblk-map.c b/drivers/lightnvm/pblk-map.c >>> index 953ca31dda68..92c40b546c4e 100644 >>> --- a/drivers/lightnvm/pblk-map.c >>> +++ b/drivers/lightnvm/pblk-map.c >>> @@ -21,7 +21,7 @@ >>> static int pblk_map_page_data(struct pblk *pblk, unsigned int sentry, >>> struct ppa_addr *ppa_list, >>> unsigned long *lun_bitmap, >>> - struct pblk_sec_meta *meta_list, >>> + void *meta_list, >>> unsigned int valid_secs) >>> { >>> struct pblk_line *line = pblk_line_get_data(pblk); >>> @@ -67,14 +67,17 @@ static int pblk_map_page_data(struct pblk *pblk, >>> unsigned int sentry, >>> kref_get(>ref); >>> w_ctx = pblk_rb_w_ctx(>rwb, sentry + i); >>> w_ctx->ppa = ppa_list[i]; >>> - meta_list[i].lba = cpu_to_le64(w_ctx->lba); >>> + pblk_get_meta_at(pblk, meta_list, i)->lba = >>> + cpu_to_le64(w_ctx->lba); >>> lba_list[paddr] = cpu_to_le64(w_ctx->lba); >>> if (lba_list[paddr] != addr_empty) >>> line->nr_valid_lbas++; >>> else >>> atomic64_inc(>pad_wa); >>> } else { >>> - lba_list[paddr] = meta_list[i].lba = addr_empty; >>> + lba_list[paddr] = >>> + pblk_get_meta_at(pblk, meta_list, i)->lba = >>> + addr_empty; >>> __pblk_map_invalidate(pblk, line, paddr); >>> } >>> } >>> @@ -87,7 +90,7 @@ void pblk_map_rq(struct pblk *pblk, struct nvm_rq *rqd, >>> unsigned int sentry, >>> unsigned long *lun_bitmap, unsigned int valid_secs, >>> unsigned int off) >>> { >>> - struct pblk_sec_meta *meta_list = rqd->meta_list; >>> + void *meta_list = rqd->meta_list; >>> unsigned int map_secs; >>> int min = pblk->min_write_pgs; >>> int i; >>> @@ -95,7 +98,9 @@ void
Re: [PATCH 1/5] lightnvm: pblk: Helpers for OOB metadata
On 18.06.2018 07:23, Javier Gonzalez wrote: On 16 Jun 2018, at 00.27, Igor Konopko wrote: Currently pblk assumes that size of OOB metadata on drive is always equal to size of pblk_sec_meta struct. This commit add helpers which will allow to handle different sizes of OOB metadata on drive. Signed-off-by: Igor Konopko --- drivers/lightnvm/pblk-core.c | 10 + drivers/lightnvm/pblk-map.c | 21 --- drivers/lightnvm/pblk-read.c | 45 +--- drivers/lightnvm/pblk-recovery.c | 24 - drivers/lightnvm/pblk.h | 29 ++ 5 files changed, 91 insertions(+), 38 deletions(-) diff --git a/drivers/lightnvm/pblk-core.c b/drivers/lightnvm/pblk-core.c index 66ab1036f2fb..8a0ac466872f 100644 --- a/drivers/lightnvm/pblk-core.c +++ b/drivers/lightnvm/pblk-core.c @@ -685,7 +685,7 @@ static int pblk_line_submit_emeta_io(struct pblk *pblk, struct pblk_line *line, rqd.nr_ppas = rq_ppas; if (dir == PBLK_WRITE) { - struct pblk_sec_meta *meta_list = rqd.meta_list; + void *meta_list = rqd.meta_list; rqd.flags = pblk_set_progr_mode(pblk, PBLK_WRITE); for (i = 0; i < rqd.nr_ppas; ) { @@ -693,7 +693,8 @@ static int pblk_line_submit_emeta_io(struct pblk *pblk, struct pblk_line *line, paddr = __pblk_alloc_page(pblk, line, min); spin_unlock(>lock); for (j = 0; j < min; j++, i++, paddr++) { - meta_list[i].lba = cpu_to_le64(ADDR_EMPTY); + pblk_get_meta_at(pblk, meta_list, i)->lba = + cpu_to_le64(ADDR_EMPTY); rqd.ppa_list[i] = addr_to_gen_ppa(pblk, paddr, id); } @@ -825,14 +826,15 @@ static int pblk_line_submit_smeta_io(struct pblk *pblk, struct pblk_line *line, rqd.nr_ppas = lm->smeta_sec; for (i = 0; i < lm->smeta_sec; i++, paddr++) { - struct pblk_sec_meta *meta_list = rqd.meta_list; + void *meta_list = rqd.meta_list; rqd.ppa_list[i] = addr_to_gen_ppa(pblk, paddr, line->id); if (dir == PBLK_WRITE) { __le64 addr_empty = cpu_to_le64(ADDR_EMPTY); - meta_list[i].lba = lba_list[paddr] = addr_empty; + pblk_get_meta_at(pblk, meta_list, i)->lba = + lba_list[paddr] = addr_empty; } } diff --git a/drivers/lightnvm/pblk-map.c b/drivers/lightnvm/pblk-map.c index 953ca31dda68..92c40b546c4e 100644 --- a/drivers/lightnvm/pblk-map.c +++ b/drivers/lightnvm/pblk-map.c @@ -21,7 +21,7 @@ static int pblk_map_page_data(struct pblk *pblk, unsigned int sentry, struct ppa_addr *ppa_list, unsigned long *lun_bitmap, - struct pblk_sec_meta *meta_list, + void *meta_list, unsigned int valid_secs) { struct pblk_line *line = pblk_line_get_data(pblk); @@ -67,14 +67,17 @@ static int pblk_map_page_data(struct pblk *pblk, unsigned int sentry, kref_get(>ref); w_ctx = pblk_rb_w_ctx(>rwb, sentry + i); w_ctx->ppa = ppa_list[i]; - meta_list[i].lba = cpu_to_le64(w_ctx->lba); + pblk_get_meta_at(pblk, meta_list, i)->lba = + cpu_to_le64(w_ctx->lba); lba_list[paddr] = cpu_to_le64(w_ctx->lba); if (lba_list[paddr] != addr_empty) line->nr_valid_lbas++; else atomic64_inc(>pad_wa); } else { - lba_list[paddr] = meta_list[i].lba = addr_empty; + lba_list[paddr] = + pblk_get_meta_at(pblk, meta_list, i)->lba = + addr_empty; __pblk_map_invalidate(pblk, line, paddr); } } @@ -87,7 +90,7 @@ void pblk_map_rq(struct pblk *pblk, struct nvm_rq *rqd, unsigned int sentry, unsigned long *lun_bitmap, unsigned int valid_secs, unsigned int off) { - struct pblk_sec_meta *meta_list = rqd->meta_list; + void *meta_list = rqd->meta_list; unsigned int map_secs; int min = pblk->min_write_pgs; int i; @@ -95,7 +98,9 @@ void pblk_map_rq(struct pblk *pblk, struct nvm_rq *rqd, unsigned int sentry, for (i = off; i < rqd->nr_ppas; i += min) { map_secs = (i + min > valid_secs) ? (valid_secs % min) : min; if
Re: [PATCH 1/5] lightnvm: pblk: Helpers for OOB metadata
> On 16 Jun 2018, at 00.27, Igor Konopko wrote: > > Currently pblk assumes that size of OOB metadata on drive is always > equal to size of pblk_sec_meta struct. This commit add helpers which will > allow to handle different sizes of OOB metadata on drive. > > Signed-off-by: Igor Konopko > --- > drivers/lightnvm/pblk-core.c | 10 + > drivers/lightnvm/pblk-map.c | 21 --- > drivers/lightnvm/pblk-read.c | 45 +--- > drivers/lightnvm/pblk-recovery.c | 24 - > drivers/lightnvm/pblk.h | 29 ++ > 5 files changed, 91 insertions(+), 38 deletions(-) > > diff --git a/drivers/lightnvm/pblk-core.c b/drivers/lightnvm/pblk-core.c > index 66ab1036f2fb..8a0ac466872f 100644 > --- a/drivers/lightnvm/pblk-core.c > +++ b/drivers/lightnvm/pblk-core.c > @@ -685,7 +685,7 @@ static int pblk_line_submit_emeta_io(struct pblk *pblk, > struct pblk_line *line, > rqd.nr_ppas = rq_ppas; > > if (dir == PBLK_WRITE) { > - struct pblk_sec_meta *meta_list = rqd.meta_list; > + void *meta_list = rqd.meta_list; > > rqd.flags = pblk_set_progr_mode(pblk, PBLK_WRITE); > for (i = 0; i < rqd.nr_ppas; ) { > @@ -693,7 +693,8 @@ static int pblk_line_submit_emeta_io(struct pblk *pblk, > struct pblk_line *line, > paddr = __pblk_alloc_page(pblk, line, min); > spin_unlock(>lock); > for (j = 0; j < min; j++, i++, paddr++) { > - meta_list[i].lba = cpu_to_le64(ADDR_EMPTY); > + pblk_get_meta_at(pblk, meta_list, i)->lba = > + cpu_to_le64(ADDR_EMPTY); > rqd.ppa_list[i] = > addr_to_gen_ppa(pblk, paddr, id); > } > @@ -825,14 +826,15 @@ static int pblk_line_submit_smeta_io(struct pblk *pblk, > struct pblk_line *line, > rqd.nr_ppas = lm->smeta_sec; > > for (i = 0; i < lm->smeta_sec; i++, paddr++) { > - struct pblk_sec_meta *meta_list = rqd.meta_list; > + void *meta_list = rqd.meta_list; > > rqd.ppa_list[i] = addr_to_gen_ppa(pblk, paddr, line->id); > > if (dir == PBLK_WRITE) { > __le64 addr_empty = cpu_to_le64(ADDR_EMPTY); > > - meta_list[i].lba = lba_list[paddr] = addr_empty; > + pblk_get_meta_at(pblk, meta_list, i)->lba = > + lba_list[paddr] = addr_empty; > } > } > > diff --git a/drivers/lightnvm/pblk-map.c b/drivers/lightnvm/pblk-map.c > index 953ca31dda68..92c40b546c4e 100644 > --- a/drivers/lightnvm/pblk-map.c > +++ b/drivers/lightnvm/pblk-map.c > @@ -21,7 +21,7 @@ > static int pblk_map_page_data(struct pblk *pblk, unsigned int sentry, > struct ppa_addr *ppa_list, > unsigned long *lun_bitmap, > - struct pblk_sec_meta *meta_list, > + void *meta_list, > unsigned int valid_secs) > { > struct pblk_line *line = pblk_line_get_data(pblk); > @@ -67,14 +67,17 @@ static int pblk_map_page_data(struct pblk *pblk, unsigned > int sentry, > kref_get(>ref); > w_ctx = pblk_rb_w_ctx(>rwb, sentry + i); > w_ctx->ppa = ppa_list[i]; > - meta_list[i].lba = cpu_to_le64(w_ctx->lba); > + pblk_get_meta_at(pblk, meta_list, i)->lba = > + cpu_to_le64(w_ctx->lba); > lba_list[paddr] = cpu_to_le64(w_ctx->lba); > if (lba_list[paddr] != addr_empty) > line->nr_valid_lbas++; > else > atomic64_inc(>pad_wa); > } else { > - lba_list[paddr] = meta_list[i].lba = addr_empty; > + lba_list[paddr] = > + pblk_get_meta_at(pblk, meta_list, i)->lba = > + addr_empty; > __pblk_map_invalidate(pblk, line, paddr); > } > } > @@ -87,7 +90,7 @@ void pblk_map_rq(struct pblk *pblk, struct nvm_rq *rqd, > unsigned int sentry, >unsigned long *lun_bitmap, unsigned int valid_secs, >unsigned int off) > { > - struct pblk_sec_meta *meta_list = rqd->meta_list; > + void *meta_list = rqd->meta_list; > unsigned int map_secs; > int min = pblk->min_write_pgs; > int i; > @@ -95,7 +98,9 @@ void pblk_map_rq(struct pblk *pblk, struct nvm_rq *rqd, > unsigned int sentry, > for (i = off; i < rqd->nr_ppas; i += min) { > map_secs = (i + min > valid_secs) ? (valid_secs % min) :
Re: [PATCH 1/5] lightnvm: pblk: Helpers for OOB metadata
On 06/16/2018 12:27 AM, Igor Konopko wrote: Currently pblk assumes that size of OOB metadata on drive is always equal to size of pblk_sec_meta struct. This commit add helpers which will allow to handle different sizes of OOB metadata on drive. Signed-off-by: Igor Konopko --- drivers/lightnvm/pblk-core.c | 10 + drivers/lightnvm/pblk-map.c | 21 --- drivers/lightnvm/pblk-read.c | 45 +--- drivers/lightnvm/pblk-recovery.c | 24 - drivers/lightnvm/pblk.h | 29 ++ 5 files changed, 91 insertions(+), 38 deletions(-) diff --git a/drivers/lightnvm/pblk-core.c b/drivers/lightnvm/pblk-core.c index 66ab1036f2fb..8a0ac466872f 100644 --- a/drivers/lightnvm/pblk-core.c +++ b/drivers/lightnvm/pblk-core.c @@ -685,7 +685,7 @@ static int pblk_line_submit_emeta_io(struct pblk *pblk, struct pblk_line *line, rqd.nr_ppas = rq_ppas; if (dir == PBLK_WRITE) { - struct pblk_sec_meta *meta_list = rqd.meta_list; + void *meta_list = rqd.meta_list; rqd.flags = pblk_set_progr_mode(pblk, PBLK_WRITE); for (i = 0; i < rqd.nr_ppas; ) { @@ -693,7 +693,8 @@ static int pblk_line_submit_emeta_io(struct pblk *pblk, struct pblk_line *line, paddr = __pblk_alloc_page(pblk, line, min); spin_unlock(>lock); for (j = 0; j < min; j++, i++, paddr++) { - meta_list[i].lba = cpu_to_le64(ADDR_EMPTY); + pblk_get_meta_at(pblk, meta_list, i)->lba = + cpu_to_le64(ADDR_EMPTY); rqd.ppa_list[i] = addr_to_gen_ppa(pblk, paddr, id); } @@ -825,14 +826,15 @@ static int pblk_line_submit_smeta_io(struct pblk *pblk, struct pblk_line *line, rqd.nr_ppas = lm->smeta_sec; for (i = 0; i < lm->smeta_sec; i++, paddr++) { - struct pblk_sec_meta *meta_list = rqd.meta_list; + void *meta_list = rqd.meta_list; rqd.ppa_list[i] = addr_to_gen_ppa(pblk, paddr, line->id); if (dir == PBLK_WRITE) { __le64 addr_empty = cpu_to_le64(ADDR_EMPTY); - meta_list[i].lba = lba_list[paddr] = addr_empty; + pblk_get_meta_at(pblk, meta_list, i)->lba = + lba_list[paddr] = addr_empty; } } diff --git a/drivers/lightnvm/pblk-map.c b/drivers/lightnvm/pblk-map.c index 953ca31dda68..92c40b546c4e 100644 --- a/drivers/lightnvm/pblk-map.c +++ b/drivers/lightnvm/pblk-map.c @@ -21,7 +21,7 @@ static int pblk_map_page_data(struct pblk *pblk, unsigned int sentry, struct ppa_addr *ppa_list, unsigned long *lun_bitmap, - struct pblk_sec_meta *meta_list, + void *meta_list, unsigned int valid_secs) { struct pblk_line *line = pblk_line_get_data(pblk); @@ -67,14 +67,17 @@ static int pblk_map_page_data(struct pblk *pblk, unsigned int sentry, kref_get(>ref); w_ctx = pblk_rb_w_ctx(>rwb, sentry + i); w_ctx->ppa = ppa_list[i]; - meta_list[i].lba = cpu_to_le64(w_ctx->lba); + pblk_get_meta_at(pblk, meta_list, i)->lba = + cpu_to_le64(w_ctx->lba); lba_list[paddr] = cpu_to_le64(w_ctx->lba); if (lba_list[paddr] != addr_empty) line->nr_valid_lbas++; else atomic64_inc(>pad_wa); } else { - lba_list[paddr] = meta_list[i].lba = addr_empty; + lba_list[paddr] = + pblk_get_meta_at(pblk, meta_list, i)->lba = + addr_empty; __pblk_map_invalidate(pblk, line, paddr); } } @@ -87,7 +90,7 @@ void pblk_map_rq(struct pblk *pblk, struct nvm_rq *rqd, unsigned int sentry, unsigned long *lun_bitmap, unsigned int valid_secs, unsigned int off) { - struct pblk_sec_meta *meta_list = rqd->meta_list; + void *meta_list = rqd->meta_list; unsigned int map_secs; int min = pblk->min_write_pgs; int i; @@ -95,7 +98,9 @@ void pblk_map_rq(struct pblk *pblk, struct nvm_rq *rqd, unsigned int sentry, for (i = off; i < rqd->nr_ppas; i += min) { map_secs = (i + min > valid_secs) ? (valid_secs % min) : min; if (pblk_map_page_data(pblk, sentry + i, >ppa_list[i], -
[PATCH 1/5] lightnvm: pblk: Helpers for OOB metadata
Currently pblk assumes that size of OOB metadata on drive is always equal to size of pblk_sec_meta struct. This commit add helpers which will allow to handle different sizes of OOB metadata on drive. Signed-off-by: Igor Konopko --- drivers/lightnvm/pblk-core.c | 10 + drivers/lightnvm/pblk-map.c | 21 --- drivers/lightnvm/pblk-read.c | 45 +--- drivers/lightnvm/pblk-recovery.c | 24 - drivers/lightnvm/pblk.h | 29 ++ 5 files changed, 91 insertions(+), 38 deletions(-) diff --git a/drivers/lightnvm/pblk-core.c b/drivers/lightnvm/pblk-core.c index 66ab1036f2fb..8a0ac466872f 100644 --- a/drivers/lightnvm/pblk-core.c +++ b/drivers/lightnvm/pblk-core.c @@ -685,7 +685,7 @@ static int pblk_line_submit_emeta_io(struct pblk *pblk, struct pblk_line *line, rqd.nr_ppas = rq_ppas; if (dir == PBLK_WRITE) { - struct pblk_sec_meta *meta_list = rqd.meta_list; + void *meta_list = rqd.meta_list; rqd.flags = pblk_set_progr_mode(pblk, PBLK_WRITE); for (i = 0; i < rqd.nr_ppas; ) { @@ -693,7 +693,8 @@ static int pblk_line_submit_emeta_io(struct pblk *pblk, struct pblk_line *line, paddr = __pblk_alloc_page(pblk, line, min); spin_unlock(>lock); for (j = 0; j < min; j++, i++, paddr++) { - meta_list[i].lba = cpu_to_le64(ADDR_EMPTY); + pblk_get_meta_at(pblk, meta_list, i)->lba = + cpu_to_le64(ADDR_EMPTY); rqd.ppa_list[i] = addr_to_gen_ppa(pblk, paddr, id); } @@ -825,14 +826,15 @@ static int pblk_line_submit_smeta_io(struct pblk *pblk, struct pblk_line *line, rqd.nr_ppas = lm->smeta_sec; for (i = 0; i < lm->smeta_sec; i++, paddr++) { - struct pblk_sec_meta *meta_list = rqd.meta_list; + void *meta_list = rqd.meta_list; rqd.ppa_list[i] = addr_to_gen_ppa(pblk, paddr, line->id); if (dir == PBLK_WRITE) { __le64 addr_empty = cpu_to_le64(ADDR_EMPTY); - meta_list[i].lba = lba_list[paddr] = addr_empty; + pblk_get_meta_at(pblk, meta_list, i)->lba = + lba_list[paddr] = addr_empty; } } diff --git a/drivers/lightnvm/pblk-map.c b/drivers/lightnvm/pblk-map.c index 953ca31dda68..92c40b546c4e 100644 --- a/drivers/lightnvm/pblk-map.c +++ b/drivers/lightnvm/pblk-map.c @@ -21,7 +21,7 @@ static int pblk_map_page_data(struct pblk *pblk, unsigned int sentry, struct ppa_addr *ppa_list, unsigned long *lun_bitmap, - struct pblk_sec_meta *meta_list, + void *meta_list, unsigned int valid_secs) { struct pblk_line *line = pblk_line_get_data(pblk); @@ -67,14 +67,17 @@ static int pblk_map_page_data(struct pblk *pblk, unsigned int sentry, kref_get(>ref); w_ctx = pblk_rb_w_ctx(>rwb, sentry + i); w_ctx->ppa = ppa_list[i]; - meta_list[i].lba = cpu_to_le64(w_ctx->lba); + pblk_get_meta_at(pblk, meta_list, i)->lba = + cpu_to_le64(w_ctx->lba); lba_list[paddr] = cpu_to_le64(w_ctx->lba); if (lba_list[paddr] != addr_empty) line->nr_valid_lbas++; else atomic64_inc(>pad_wa); } else { - lba_list[paddr] = meta_list[i].lba = addr_empty; + lba_list[paddr] = + pblk_get_meta_at(pblk, meta_list, i)->lba = + addr_empty; __pblk_map_invalidate(pblk, line, paddr); } } @@ -87,7 +90,7 @@ void pblk_map_rq(struct pblk *pblk, struct nvm_rq *rqd, unsigned int sentry, unsigned long *lun_bitmap, unsigned int valid_secs, unsigned int off) { - struct pblk_sec_meta *meta_list = rqd->meta_list; + void *meta_list = rqd->meta_list; unsigned int map_secs; int min = pblk->min_write_pgs; int i; @@ -95,7 +98,9 @@ void pblk_map_rq(struct pblk *pblk, struct nvm_rq *rqd, unsigned int sentry, for (i = off; i < rqd->nr_ppas; i += min) { map_secs = (i + min > valid_secs) ? (valid_secs % min) : min; if (pblk_map_page_data(pblk, sentry + i, >ppa_list[i], -