Test IO scheduler ================== The test scheduler allows testing a block device by dispatching specific requests according to the test case and declare PASS/FAIL according to the requests completion error code. The test IO scheduler implements the no-op scheduler operations, and uses them in order to dispatch the non-test requests when no test is running. This will allow to keep a normal FS operation in parallel to the test capability. The test IO scheduler keeps two different queues, one for real-world requests (inserted by the FS) and the other for the test requests. The test IO scheduler chooses the queue for dispatch requests according to the test state (IDLE/RUNNING). the test IO scheduler is compiled by default as a dynamic module and enabled only if CONFIG_DEBUG_FS is defined. Each block device test utility that would like to use the test-iosched test services, should register as a blk_dev_test_type and supply an init and exit callbacks. Those callback are called upon selection (or removal) of the test-iosched as the active scheduler. From that point the block device test can start a test and supply its own callbacks for preparing, running, result checking and cleanup of the test. Each test is exposed via debugfs and can be triggered by writing to the debugfs file. In order to add a new test one should expose a new debugfs file for the new test. Selecting IO schedulers ----------------------- Refer to Documentation/block/switching-sched.txt for information on selecting an io scheduler on a per-device basis. May 10 2012, maya Erez