linux-kernel-test/drivers/lightnvm
Javier González b20ba1bc74 lightnvm: pblk: redesign GC algorithm
At the moment, in order to get enough read parallelism, we have recycled
several lines at the same time. This approach has proven not to work
well when reaching capacity, since we end up mixing valid data from all
lines, thus not maintaining a sustainable free/recycled line ratio.

The new design, relies on a two level workqueue mechanism. In the first
level, we read the metadata for a number of lines based on the GC list
they reside on (this is governed by the number of valid sectors in each
line). In the second level, we recycle a single line at a time. Here, we
issue reads in parallel, while a single GC write thread places data in
the write buffer. This design allows to (i) only move data from one line
at a time, thus maintaining a sane free/recycled ration and (ii)
maintain the GC writer busy with recycled data.

Signed-off-by: Javier González <javier@cnexlabs.com>
Signed-off-by: Matias Bjørling <matias@cnexlabs.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
2017-06-26 16:27:39 -06:00
..
core.c lightnvm: re-convert ppa format on I/O failure 2017-06-26 16:24:53 -06:00
Kconfig lightnvm: physical block device (pblk) target 2017-04-16 10:06:33 -06:00
Makefile lightnvm: physical block device (pblk) target 2017-04-16 10:06:33 -06:00
pblk-cache.c lightnvm: physical block device (pblk) target 2017-04-16 10:06:33 -06:00
pblk-core.c lightnvm: pblk: redesign GC algorithm 2017-06-26 16:27:39 -06:00
pblk-gc.c lightnvm: pblk: redesign GC algorithm 2017-06-26 16:27:39 -06:00
pblk-init.c lightnvm: pblk: decouple bad block from line alloc 2017-06-26 16:27:39 -06:00
pblk-map.c lightnvm: pblk: delete redundant buffer pointer 2017-06-26 16:27:39 -06:00
pblk-rb.c lightnvm: pblk: redesign GC algorithm 2017-06-26 16:27:39 -06:00
pblk-read.c lightnvm: pblk: set metadata list for all I/Os 2017-06-26 16:27:39 -06:00
pblk-recovery.c lightnvm: pblk: issue multiplane reads if possible 2017-06-26 16:27:39 -06:00
pblk-rl.c lightnvm: pblk: redesign GC algorithm 2017-06-26 16:27:39 -06:00
pblk-sysfs.c lightnvm: pblk: redesign GC algorithm 2017-06-26 16:27:39 -06:00
pblk-write.c lightnvm: pblk: cleanup unnecessary code 2017-06-26 16:27:39 -06:00
pblk.h lightnvm: pblk: redesign GC algorithm 2017-06-26 16:27:39 -06:00
rrpc.c blk: remove bio_set arg from blk_queue_split() 2017-06-18 12:40:59 -06:00
rrpc.h lightnvm: use end_io callback instead of instance 2017-01-31 08:32:13 -07:00