diff options
author | Igor Konopko <igor.j.konopko@intel.com> | 2019-05-04 14:37:46 -0400 |
---|---|---|
committer | Jens Axboe <axboe@kernel.dk> | 2019-05-06 12:19:16 -0400 |
commit | 7e5434eecefce78b40526e44de3d4559aaaf1b90 (patch) | |
tree | 4143edb1920c4a50bec119d8c7571a17b442dc38 | |
parent | 662156641bc409a28fa313fca1a755105425d278 (diff) |
lightnvm: pblk: line reference fix in GC
Fixes the GC error case when moving a line back to closed state
while releasing additional references.
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>
-rw-r--r-- | drivers/lightnvm/pblk-gc.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/drivers/lightnvm/pblk-gc.c b/drivers/lightnvm/pblk-gc.c index 26a52ea7ec45..901e49951ab5 100644 --- a/drivers/lightnvm/pblk-gc.c +++ b/drivers/lightnvm/pblk-gc.c | |||
@@ -290,8 +290,11 @@ fail_free_invalid_bitmap: | |||
290 | fail_free_ws: | 290 | fail_free_ws: |
291 | kfree(line_ws); | 291 | kfree(line_ws); |
292 | 292 | ||
293 | /* Line goes back to closed state, so we cannot release additional | ||
294 | * reference for line, since we do that only when we want to do | ||
295 | * gc to free line state transition. | ||
296 | */ | ||
293 | pblk_put_line_back(pblk, line); | 297 | pblk_put_line_back(pblk, line); |
294 | kref_put(&line->ref, pblk_line_put); | ||
295 | atomic_dec(&gc->read_inflight_gc); | 298 | atomic_dec(&gc->read_inflight_gc); |
296 | 299 | ||
297 | pblk_err(pblk, "failed to GC line %d\n", line->id); | 300 | pblk_err(pblk, "failed to GC line %d\n", line->id); |