lightnvm: pblk: rollback on error during gc read
A line is left unsigned to the blocks lists in case pblk_gc_line returns an error. This moves the line back to be appropriate list, which can then be picked up by the garbage collector. Signed-off-by: Igor Konopko <igor.j.konopko@intel.com> Reviewed-by: Hans Holmberg <hans.holmberg@cnexlabs.com> Reviewed-by: Javier González <javier@javigon.com> Signed-off-by: Matias Bjørling <mb@lightnvm.io> Signed-off-by: Jens Axboe <axboe@kernel.dk>
This commit is contained in:
parent
7e5434eece
commit
8935ebfc5d
@ -358,8 +358,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;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user