On Tue, 27 May 2014, Jens Axboe wrote:
On 2014-05-27 09:03, Mikulas Patocka wrote:
The block layer uses per-process bio list to avoid recursion in
generic_make_request. When generic_make_request is called recursively, the
bio is added to current->bio_list and the function returns immediatelly.
The top-level instance of generic_make_requests takes bios from
current->bio_list and processes them.
This really begs the question of why we just don't use the per-process plugs
for this. We already have scheduler hooks in place to flush those at the
appropriate time. Why are we reinventing something for essentially the same
thing?
--
Jens Axboe
Plugs work with requests, this patch works with bios. They are different
structures, so you can't use one infrastructure to process them.
The patch adds bio list flushing to the scheduler just besides plug
flushsing.