OSDN Git Service

lightnvm: move bad block and chunk state logic to core
authorMatias Bjørling <mb@lightnvm.io>
Tue, 9 Oct 2018 11:11:36 +0000 (13:11 +0200)
committerJens Axboe <axboe@kernel.dk>
Tue, 9 Oct 2018 14:25:06 +0000 (08:25 -0600)
commitaff3fb18f957de93e629c7d3d2c4ef1f360aa511
tree9a4d00e5ebdbad312cf5dc4ce3379097010ecb03
parentd8adaa3b86324c6186d0adf74bc256bdacfffdb6
lightnvm: move bad block and chunk state logic to core

pblk implements two data paths for recovery line state. One for 1.2
and another for 2.0, instead of having pblk implement these, combine
them in the core to reduce complexity and make available to other
targets.

The new interface will adhere to the 2.0 chunk definition,
including managing open chunks with an active write pointer. To provide
this interface, a 1.2 device recovers the state of the chunks by
manually detecting if a chunk is either free/open/close/offline, and if
open, scanning the flash pages sequentially to find the next writeable
page. This process takes on average ~10 seconds on a device with 64 dies,
1024 blocks and 60us read access time. The process can be parallelized
but is left out for maintenance simplicity, as the 1.2 specification is
deprecated. For 2.0 devices, the logic is maintained internally in the
drive and retrieved through the 2.0 interface.

Signed-off-by: Matias Bjørling <mb@lightnvm.io>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
drivers/lightnvm/core.c
drivers/lightnvm/pblk-core.c
drivers/lightnvm/pblk-init.c
drivers/lightnvm/pblk.h
drivers/nvme/host/lightnvm.c
include/linux/lightnvm.h