lightnvm: Support for Open-Channel SSDs
Open-channel SSDs are devices that share responsibilities with the host
in order to implement and maintain features that typical SSDs keep
strictly in firmware. These include (i) the Flash Translation Layer
(FTL), (ii) bad block management, and (iii) hardware units such as the
flash controller, the interface controller, and large amounts of flash
chips. In this way, Open-channels SSDs exposes direct access to their
physical flash storage, while keeping a subset of the internal features
of SSDs.
LightNVM is a specification that gives support to Open-channel SSDs
LightNVM allows the host to manage data placement, garbage collection,
and parallelism. Device specific responsibilities such as bad block
management, FTL extensions to support atomic IOs, or metadata
persistence are still handled by the device.
The implementation of LightNVM consists of two parts: core and
(multiple) targets. The core implements functionality shared across
targets. This is initialization, teardown and statistics. The targets
implement the interface that exposes physical flash to user-space
applications. Examples of such targets include key-value store,
object-store, as well as traditional block devices, which can be
application-specific.
Contributions in this patch from:
Javier Gonzalez <jg@lightnvm.io>
Dongsheng Yang <yangds.fnst@cn.fujitsu.com>
Jesper Madsen <jmad@itu.dk>
Signed-off-by: Matias Bjørling <m@bjorling.me>
Signed-off-by: Jens Axboe <axboe@fb.com>
2015-10-28 18:54:55 +00:00
|
|
|
#
|
|
|
|
# Open-Channel SSD NVM configuration
|
|
|
|
#
|
|
|
|
|
|
|
|
menuconfig NVM
|
|
|
|
bool "Open-Channel SSD target support"
|
|
|
|
depends on BLOCK
|
|
|
|
help
|
|
|
|
Say Y here to get to enable Open-channel SSDs.
|
|
|
|
|
|
|
|
Open-Channel SSDs implement a set of extension to SSDs, that
|
|
|
|
exposes direct access to the underlying non-volatile memory.
|
|
|
|
|
|
|
|
If you say N, all options in this submenu will be skipped and disabled
|
|
|
|
only do this if you know what you are doing.
|
|
|
|
|
|
|
|
if NVM
|
|
|
|
|
|
|
|
config NVM_DEBUG
|
|
|
|
bool "Open-Channel SSD debugging support"
|
2015-12-06 10:25:51 +00:00
|
|
|
default n
|
lightnvm: Support for Open-Channel SSDs
Open-channel SSDs are devices that share responsibilities with the host
in order to implement and maintain features that typical SSDs keep
strictly in firmware. These include (i) the Flash Translation Layer
(FTL), (ii) bad block management, and (iii) hardware units such as the
flash controller, the interface controller, and large amounts of flash
chips. In this way, Open-channels SSDs exposes direct access to their
physical flash storage, while keeping a subset of the internal features
of SSDs.
LightNVM is a specification that gives support to Open-channel SSDs
LightNVM allows the host to manage data placement, garbage collection,
and parallelism. Device specific responsibilities such as bad block
management, FTL extensions to support atomic IOs, or metadata
persistence are still handled by the device.
The implementation of LightNVM consists of two parts: core and
(multiple) targets. The core implements functionality shared across
targets. This is initialization, teardown and statistics. The targets
implement the interface that exposes physical flash to user-space
applications. Examples of such targets include key-value store,
object-store, as well as traditional block devices, which can be
application-specific.
Contributions in this patch from:
Javier Gonzalez <jg@lightnvm.io>
Dongsheng Yang <yangds.fnst@cn.fujitsu.com>
Jesper Madsen <jmad@itu.dk>
Signed-off-by: Matias Bjørling <m@bjorling.me>
Signed-off-by: Jens Axboe <axboe@fb.com>
2015-10-28 18:54:55 +00:00
|
|
|
---help---
|
|
|
|
Exposes a debug management interface to create/remove targets at:
|
|
|
|
|
|
|
|
/sys/module/lnvm/parameters/configure_debug
|
|
|
|
|
|
|
|
It is required to create/remove targets without IOCTLs.
|
|
|
|
|
2015-10-28 18:54:56 +00:00
|
|
|
config NVM_GENNVM
|
|
|
|
tristate "Generic NVM manager for Open-Channel SSDs"
|
|
|
|
---help---
|
|
|
|
NVM media manager for Open-Channel SSDs that offload management
|
|
|
|
functionality to device, while keeping data placement and garbage
|
|
|
|
collection decisions on the host.
|
|
|
|
|
2015-10-28 18:54:57 +00:00
|
|
|
config NVM_RRPC
|
|
|
|
tristate "Round-robin Hybrid Open-Channel SSD target"
|
|
|
|
---help---
|
|
|
|
Allows an open-channel SSD to be exposed as a block device to the
|
|
|
|
host. The target is implemented using a linear mapping table and
|
|
|
|
cost-based garbage collection. It is optimized for 4K IO sizes.
|
|
|
|
|
lightnvm: Support for Open-Channel SSDs
Open-channel SSDs are devices that share responsibilities with the host
in order to implement and maintain features that typical SSDs keep
strictly in firmware. These include (i) the Flash Translation Layer
(FTL), (ii) bad block management, and (iii) hardware units such as the
flash controller, the interface controller, and large amounts of flash
chips. In this way, Open-channels SSDs exposes direct access to their
physical flash storage, while keeping a subset of the internal features
of SSDs.
LightNVM is a specification that gives support to Open-channel SSDs
LightNVM allows the host to manage data placement, garbage collection,
and parallelism. Device specific responsibilities such as bad block
management, FTL extensions to support atomic IOs, or metadata
persistence are still handled by the device.
The implementation of LightNVM consists of two parts: core and
(multiple) targets. The core implements functionality shared across
targets. This is initialization, teardown and statistics. The targets
implement the interface that exposes physical flash to user-space
applications. Examples of such targets include key-value store,
object-store, as well as traditional block devices, which can be
application-specific.
Contributions in this patch from:
Javier Gonzalez <jg@lightnvm.io>
Dongsheng Yang <yangds.fnst@cn.fujitsu.com>
Jesper Madsen <jmad@itu.dk>
Signed-off-by: Matias Bjørling <m@bjorling.me>
Signed-off-by: Jens Axboe <axboe@fb.com>
2015-10-28 18:54:55 +00:00
|
|
|
endif # NVM
|