Re: [PATCH] block: flush queued bios when the process blocks

From: Jens Axboe
Date: Tue May 27 2014 - 11:42:44 EST


On 2014-05-27 09:23, Mikulas Patocka wrote:


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.

Yes... I realize the list and plugs are for requests. But there's nothing preventing a non-rq hook, we have uses like that too. And it could easily be extended to handle bio lists, too.

The patch adds bio list flushing to the scheduler just besides plug
flushsing.

... which is exactly why I'm commenting. It'd be great to avoid yet one more scheduler hook for this sort of thing.

--
Jens Axboe

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/