Hi All, this patchset introduces RAIL, a mechanism to enforce low tail read latency for lightnvm OCSSD devices. RAIL leverages redundancy to guarantee that reads are always served from LUNs that do not serve a high latency operation such as a write or erase. This avoids that reads become serialized behind these operations reducing tail latency by ~10x. In particular, in the absence of ECC read errors, it provides 99.99 percentile read latencies of below 500us. RAIL introduces capacity overheads (7%-25%) due to RAID-5 like striping (providing fault tolerance) and reduces the maximum write bandwidth to 110K IOPS on CNEX SSD. This patch is based on pblk/core and requires two additional patches from Javier to be applicable (let me know if you want me to rebase): The 1st patch exposes some existing APIs so they can be used by RAIL The 2nd patch introduces a configurable sector mapping function The 3rd patch refactors the write path so the end_io_fn can be specified when setting up the request The 4th patch adds a new submit io function that acquires the write semaphore The 5th patch introduces the RAIL feature and its API The 6th patch integrates RAIL into pblk's read and write path