This is another interface related story. Different from the RPC interface, which is more complicated and hard to implement, this design is simple and easy to implement.
There is a need to design different interface for SSDs, both from the application’s point of view and the point of distinct interface of flash. Some new machinery have been proposed to support Atomic Writes, Persistent TRIM, and Sparseness. This paper propose “a simple yet powerful set of primitives based on fine-grained address remapping at both the block and extent level”.
The new Address-remapping Interfaces includes: Range Clone (clone(src, len, dst)), Range Move (move(src, len, dst)) and Range Delete (delete(src, len)). Several Case Studies, such as Snapshots, Deduplication, Single-Write Journaling, shows the power of this simple interface.
Single-Write Journaling (atomic write) is demonstrated in the following figure. Once the the journal log has been write done, an atomic remap operation can be done to make the old mapping point to the new locations.