Hi, This patchset adds write buffering to rrpc. This is necessary to support writes that are smaller than the actual flash controller page size. Typically, these are larger tahn 4K (e.g., 64K) since they are organized organized in several 4K sectors and planes.
The code can be tested on the lightnvm enabled qemu, built on top of Keith Busch's qemu-nvme [1]. At the moment, different flushing strategies are enabled by flags. I am now working on flushing the writer work queue when syncs are not aligned with the device's page size, but this should not change the general architecture. Any feedback on the architecture, design and implementation are more than welcome. Thanks, Javier [1] https://github.com/OpenChannelSSD/qemu-nvme Javier González (4): lightnvm: precalculate controller write boundaries lightnvm: add write buffering for rrpc lightnvm: read from rrpc write buffer if possible lightnvm: add debug info for rrpc target drivers/lightnvm/core.c | 10 + drivers/lightnvm/rrpc.c | 1233 ++++++++++++++++++++++++++++++++++++++-------- drivers/lightnvm/rrpc.h | 93 +++- include/linux/lightnvm.h | 11 +- 4 files changed, 1138 insertions(+), 209 deletions(-) -- 2.1.4