lightnvm: Support for Open-Channel SSDs
authorMatias Bjørling <m@bjorling.me>
Wed, 28 Oct 2015 18:54:55 +0000 (19:54 +0100)
committerJens Axboe <axboe@fb.com>
Thu, 29 Oct 2015 07:21:42 +0000 (16:21 +0900)
commitcd9e9808d18fe7107c306f6e71c8be7230ee42b4
tree1e447cc1019e8128753bbf78712484b8eb8144f4
parentb3975e94f5688691f487ea00126dabe8f5bee3af
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>
Documentation/ioctl/ioctl-number.txt
MAINTAINERS
drivers/Kconfig
drivers/Makefile
drivers/lightnvm/Kconfig [new file with mode: 0644]
drivers/lightnvm/Makefile [new file with mode: 0644]
drivers/lightnvm/core.c [new file with mode: 0644]
include/linux/lightnvm.h [new file with mode: 0644]
include/uapi/linux/lightnvm.h [new file with mode: 0644]