In short, rwGenerator is a set of tools to generate I/O requests to a block device.
When learning Linux or debugging a block device driver, users usually ask themselves:
How does the device act if I submit a read/write request with size X to offset Y?
If you use dd
or fio
to submit requests, you might end up with unexpected I/Os. E.g., if you submit a 4KiB write request to device offset 0 using fio, the block device driver may receive several read requests before and after the 4KiB write request. If you're not aware of this and your driver happens to have some bugs in the read path, you might have some hard time debugging. Using the tools in kernelModule
or userspaceApp
can submit I/Os to the target block device within your specification. If you only want to issue one request, they won't submit two.
I'll keep adding more handy tools to this repo.
Userspace programs have different I/O submission path compared with file systems. rwGenerator has a kernel module to allow users to submit I/Os just as the way that file systems do. Read the README.md
in the kernelModule
directory to learn how to use it.
Using a kernel module is sometimes a no-op for some users. userspaceApp
is more flexible.
Just cd
to the dir, make
, and then run the binary. The program will tell you how to use.
You can use f2fsAtomicWrite
in the userspaceApp
to submit F2FS specific commands.
This folder contains some helping scripts for fio
so that users don't need to type the long parameters.
This is a kernel module to test the multi-thread maximum bandwidth of an Open-Channel SSD.