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 <merez@codeaurora.org>


