> On 22 Mar 2019, at 22.48, Igor Konopko <igor.j.konopko@xxxxxxxxx> wrote: > > In case of OOB recovery, when some of the chunks are in closed state, > we are calculating number of written sectors in line incorrectly, > because we are always counting chunk WP, which for closed chunks > does not longer reflects written sectors in particular chunk. Based on > OCSSD 2.0 spec WP for closed chunks is equal to SLBA + NLB and here we > need only NLB (clba in code) value for calculation. This patch for such > a chunks takes clba field instead. > > Signed-off-by: Igor Konopko <igor.j.konopko@xxxxxxxxx> > --- > drivers/lightnvm/pblk-recovery.c | 8 +++++++- > 1 file changed, 7 insertions(+), 1 deletion(-) > > diff --git a/drivers/lightnvm/pblk-recovery.c b/drivers/lightnvm/pblk-recovery.c > index 83b467b..bcd3633 100644 > --- a/drivers/lightnvm/pblk-recovery.c > +++ b/drivers/lightnvm/pblk-recovery.c > @@ -101,6 +101,8 @@ static void pblk_update_line_wp(struct pblk *pblk, struct pblk_line *line, > > static u64 pblk_sec_in_open_line(struct pblk *pblk, struct pblk_line *line) > { > + struct nvm_tgt_dev *dev = pblk->dev; > + struct nvm_geo *geo = &dev->geo; > struct pblk_line_meta *lm = &pblk->lm; > int nr_bb = bitmap_weight(line->blk_bitmap, lm->blk_per_line); > u64 written_secs = 0; > @@ -113,7 +115,11 @@ static u64 pblk_sec_in_open_line(struct pblk *pblk, struct pblk_line *line) > if (chunk->state & NVM_CHK_ST_OFFLINE) > continue; > > - written_secs += chunk->wp; > + if (chunk->state & NVM_CHK_ST_OPEN) > + written_secs += chunk->wp; > + else if (chunk->state & NVM_CHK_ST_CLOSED) > + written_secs += geo->clba; > + > valid_chunks++; > } > > -- > 2.9.5 Didn’t we agree that the patch was not needed?
Attachment:
signature.asc
Description: Message signed with OpenPGP