From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753350AbbJETuN (ORCPT ); Mon, 5 Oct 2015 15:50:13 -0400 Received: from mx1.redhat.com ([209.132.183.28]:42743 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752502AbbJETuK (ORCPT ); Mon, 5 Oct 2015 15:50:10 -0400 Date: Mon, 5 Oct 2015 15:50:07 -0400 From: Mike Snitzer To: Kent Overstreet Cc: Jens Axboe , dm-devel@redhat.com, Mikulas Patocka , linux-kernel@vger.kernel.org, "Alasdair G. Kergon" Subject: Re: block: flush queued bios when the process blocks Message-ID: <20151005195007.GA25762@redhat.com> References: <5384AA79.4010206@kernel.dk> <5384B26D.1000703@kernel.dk> <20140527173306.GA12201@redhat.com> <20140527195657.GE2276@kmo> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20140527195657.GE2276@kmo> User-Agent: Mutt/1.5.21 (2010-09-15) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, May 27 2014 at 3:56pm -0400, Kent Overstreet wrote: > On Tue, May 27, 2014 at 01:33:06PM -0400, Mike Snitzer wrote: > > On Tue, May 27 2014 at 12:26pm -0400, > > Mikulas Patocka wrote: > > > > > On Tue, 27 May 2014, Jens Axboe wrote: > > > > > > > On 2014-05-27 09:23, Mikulas Patocka wrote: > > > > > > > > > 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 > > > > > > One could create something like schedule notifier chain, but I'm not sure > > > if it is worth the complexity because of just two users. If more users > > > come in the future, it could be generalized. > > > > It could be that Jens is suggesting updating blk_needs_flush_plug() and > > blk_schedule_flush_plug() to be bio_list aware too (rather than train > > sched_submit_work() from this new bio_list)? > > > > Somewhat awkward, but _could_ be made to work. > > No... > > I started on this ages and ages ago, but the patches were nowhere near ready to > go out. > > What I'd do is rework the existing blk_plug to work in terms of bios, not > requests. This is a fair amount of work, and then make_request_fn() needs to be > able to take multiple bios at a time, but IIRC there were other simplifications > that fell out of this and this also means bio based drivers can take advantage > of plugging/batching. > > Once this is done, you just... replace the bio list in generic_make_request() > with a plug. Boom, done. > > (oh, and to avoid blowing the stack the scheduler/plug callback or whatever > needs to check the current stack usage and punt off to a per request_queue > workqueue, but that's easy enough). Re-reading your response since this bug is still lingering; and Mikulas' patch _still_ fixes the deadlock.. you're suggesting all of the above just to avoid an extra conditional scheduler callout.. Could be what you're proposing is "the one true way forward" but I'm not touching it at this point.