> On 14 Mar 2019, at 17.04, Igor Konopko <[email protected]> wrote:
> 
> In case of OOB recovery, we can hit the scenario when all the data in
> line were written and some part of emeta was written too. In such
> a case pblk_update_line_wp() function will call pblk_alloc_page()
> function which will case to set left_msecs to value below zero
> (since this field does not track emeta region) and thus will lead to
> multiple kernel warnings. This patch fixes that issue.
> 
> Signed-off-by: Igor Konopko <[email protected]>
> ---
> drivers/lightnvm/pblk-recovery.c | 20 +++++++++++++++++---
> 1 file changed, 17 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/lightnvm/pblk-recovery.c 
> b/drivers/lightnvm/pblk-recovery.c
> index 73d5ead..4764596 100644
> --- a/drivers/lightnvm/pblk-recovery.c
> +++ b/drivers/lightnvm/pblk-recovery.c
> @@ -93,10 +93,24 @@ static int pblk_recov_l2p_from_emeta(struct pblk *pblk, 
> struct pblk_line *line)
> static void pblk_update_line_wp(struct pblk *pblk, struct pblk_line *line,
>                               u64 written_secs)
> {
> -     int i;
> +     struct pblk_line_mgmt *l_mg = &pblk->l_mg;
> +     int i = 0;
> 
> -     for (i = 0; i < written_secs; i += pblk->min_write_pgs)
> -             pblk_alloc_page(pblk, line, pblk->min_write_pgs);
> +     for (; i < written_secs; i += pblk->min_write_pgs)

Why no i = 0 here?

> +             __pblk_alloc_page(pblk, line, pblk->min_write_pgs);
> +
> +     spin_lock(&l_mg->free_lock);
> +     if (written_secs > line->left_msecs) {
> +             /*
> +              * We have all data sectors written
> +              * and some emeta sectors written too.
> +              */
> +             line->left_msecs = 0;
> +     } else {
> +             /* We have only some data sectors written. */
> +             line->left_msecs -= written_secs;
> +     }
> +     spin_unlock(&l_mg->free_lock);
> }
> 
> static u64 pblk_sec_in_open_line(struct pblk *pblk, struct pblk_line *line)
> --
> 2.9.5

Otherwise, it looks good.

Reviewed-by: Javier González <[email protected]>



Attachment: signature.asc
Description: Message signed with OpenPGP

Reply via email to