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.
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.