RFLUSH implements a fine-grained flush command in a storage device using an open-source flash development platform to transfers a range of LBAs that need to be flushed and thus enables the storage device to force only a subset of data in its buffer.

The FLUSH command forces all the data in the volatile buffer of the storage device to non-volatile media to achieve persistency.

There are three system calls available to user applications to flush dirty buffers to disk:

Overall, RFLUSH implement a fine-grained flush by identifying related data blocks through inode information of a file. Those related data blocks are usually adjacent because filesystems trend to allocate space sequentially.

Implementation

RFLUSH adds a rflush command supports in an emulated SSD firmware. It then issues such a rflush command from the F2FS through submit_bio_wait.