[PATCH 04/13] lightnvm: pblk: Rollback in gc read
From: Igor Konopko <hidden>
Date: 2019-02-27 17:17:52
Subsystem:
the rest · Maintainer:
Linus Torvalds
From: Igor Konopko <hidden>
Date: 2019-02-27 17:17:52
Subsystem:
the rest · Maintainer:
Linus Torvalds
Currently in case of error returned by pblk_gc_line to pblk_gc_read we leave current line unassigned from all the lists. This patch fixes that issue. Signed-off-by: Igor Konopko <redacted> --- drivers/lightnvm/pblk-gc.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/drivers/lightnvm/pblk-gc.c b/drivers/lightnvm/pblk-gc.c
index 511ed0d5333c..533da6ea3e15 100644
--- a/drivers/lightnvm/pblk-gc.c
+++ b/drivers/lightnvm/pblk-gc.c@@ -361,8 +361,13 @@ static int pblk_gc_read(struct pblk *pblk) pblk_gc_kick(pblk); - if (pblk_gc_line(pblk, line)) + if (pblk_gc_line(pblk, line)) { pblk_err(pblk, "failed to GC line %d\n", line->id); + /* rollback */ + spin_lock(&gc->r_lock); + list_add_tail(&line->list, &gc->r_list); + spin_unlock(&gc->r_lock); + } return 0; }
--
2.17.1