q
The &request_queue_t to be initialised
rfn
The function to be called to process requests that have been placed on the queue.
If a block device wishes to use the standard request handling procedures,
which sorts requests and coalesces adjacent requests, then it must
call blk_init_queue
. The function rfn
will be called when there
are requests on the queue that need to be processed. If the device
supports plugging, then rfn
may not be called immediately when requests
are available on the queue, but may be called at some time later instead.
Plugged queues are generally unplugged when a buffer belonging to one
of the requests on the queue is needed, or due to memory pressure.
rfn
is not required, or even expected, to remove all requests off the
queue, but only as many as it can handle at a time. If it does leave
requests on the queue, it is responsible for arranging that the requests
get dealt with eventually.
A global spin lock $io_request_lock
must be held while manipulating the
requests on the request queue.
The request on the head of the queue is by default assumed to be
potentially active, and it is not considered for re-ordering or merging
whenever the given queue is unplugged. This behaviour can be changed with
blk_queue_headactive
.