linux/drivers/lightnvm
Heiner Litz 0586942f03 lightnvm: pblk: fix race condition on GC
This patch fixes a race condition where a write is mapped to the last
sectors of a line. The write is synced to the device but the L2P is not
updated yet. When the line is garbage collected before the L2P update
is performed, the sectors are ignored by the GC logic and the line is
freed before all sectors are moved. When the L2P is finally updated, it
contains a mapping to a freed line, subsequent reads of the
corresponding LBAs fail.

This patch introduces a per line counter specifying the number of
sectors that are synced to the device but have not been updated in the
L2P. Lines with a counter of greater than zero will not be selected
for GC.

Signed-off-by: Heiner Litz <hlitz@ucsc.edu>
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>
2019-02-11 08:18:08 -07:00
..
Kconfig lightnvm: remove dependencies on BLK_DEV_NVME and PCI 2018-10-09 08:25:05 -06:00
Makefile lightnvm: remove rrpc 2018-01-05 08:50:12 -07:00
core.c lightnvm: dynamic DMA pool entry size 2018-12-11 12:22:35 -07:00
pblk-cache.c lightnvm: pblk: add SPDX license tag 2018-10-09 08:25:08 -06:00
pblk-core.c lightnvm: pblk: fix race condition on GC 2019-02-11 08:18:08 -07:00
pblk-gc.c lightnvm: pblk: fix race condition on GC 2019-02-11 08:18:08 -07:00
pblk-init.c lightnvm: pblk: Switch to use new generic UUID API 2019-02-11 08:18:07 -07:00
pblk-map.c lightnvm: pblk: fix race condition on GC 2019-02-11 08:18:08 -07:00
pblk-rb.c lightnvm: pblk: fix race condition on GC 2019-02-11 08:18:08 -07:00
pblk-read.c lightnvm: pblk: support packed metadata 2018-12-11 12:22:35 -07:00
pblk-recovery.c lightnvm: pblk: extend line wp balance check 2019-02-11 08:18:07 -07:00
pblk-rl.c lightnvm: pblk: prevent stall due to wb threshold 2019-02-11 08:18:08 -07:00
pblk-sysfs.c lightnvm: pblk: support packed metadata 2018-12-11 12:22:35 -07:00
pblk-trace.h lightnvm: pblk: fix TRACE_INCLUDE_PATH 2019-02-11 08:18:07 -07:00
pblk-write.c lightnvm: pblk: fix race condition on GC 2019-02-11 08:18:08 -07:00
pblk.h lightnvm: pblk: fix race condition on GC 2019-02-11 08:18:08 -07:00