Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1762033AbcLSLcq (ORCPT ); Mon, 19 Dec 2016 06:32:46 -0500 Received: from mail-wm0-f49.google.com ([74.125.82.49]:37010 "EHLO mail-wm0-f49.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754769AbcLSLco (ORCPT ); Mon, 19 Dec 2016 06:32:44 -0500 Content-Type: text/plain; charset=us-ascii Mime-Version: 1.0 (Mac OS X Mail 9.3 \(3124\)) Subject: Re: [PATCHSET v4] blk-mq-scheduling framework From: Paolo Valente In-Reply-To: <1481933536-12844-1-git-send-email-axboe@fb.com> Date: Mon, 19 Dec 2016 12:32:37 +0100 Cc: Jens Axboe , linux-block@vger.kernel.org, Linux-Kernal , Omar Sandoval , Linus Walleij , Ulf Hansson , Mark Brown Message-Id: <7A8A5078-E9B8-4EBF-BAB1-9E8EEBF3A043@linaro.org> References: <1481933536-12844-1-git-send-email-axboe@fb.com> To: Jens Axboe X-Mailer: Apple Mail (2.3124) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: 8bit X-MIME-Autoconverted: from quoted-printable to 8bit by mail.home.local id uBJBWphB020575 Content-Length: 2352 Lines: 62 > Il giorno 17 dic 2016, alle ore 01:12, Jens Axboe ha scritto: > > This is version 4 of this patchset, version 3 was posted here: > > https://marc.info/?l=linux-block&m=148178513407631&w=2 > > From the discussion last time, I looked into the feasibility of having > two sets of tags for the same request pool, to avoid having to copy > some of the request fields at dispatch and completion time. To do that, > we'd have to replace the driver tag map(s) with our own, and augment > that with tag map(s) on the side representing the device queue depth. > Queuing IO with the scheduler would allocate from the new map, and > dispatching would acquire the "real" tag. We would need to change > drivers to do this, or add an extra indirection table to map a real > tag to the scheduler tag. We would also need a 1:1 mapping between > scheduler and hardware tag pools, or additional info to track it. > Unless someone can convince me otherwise, I think the current approach > is cleaner. > > I wasn't going to post v4 so soon, but I discovered a bug that led > to drastically decreased merging. Especially on rotating storage, > this release should be fast, and on par with the merging that we > get through the legacy schedulers. > I'm to modifying bfq. You mentioned other missing pieces to come. Do you already have an idea of what they are, so that I am somehow prepared to what won't work even if my changes are right? Thanks, Paolo > Changes since v3: > > - Keep the blk_mq_free_request/__blk_mq_free_request() as the > interface, and have those functions call the scheduler API > instead. > > - Add insertion merging from unplugging. > > - Ensure that RQF_STARTED is cleared when we get a new shadow > request, or merging will fail if it is already set. > > - Improve the blk_mq_sched_init_hctx_data() implementation. From Omar. > > - Make the shadow alloc/free interface more usable by schedulers > that use the software queues. From Omar. > > - Fix a bug in the io context code. > > - Put the is_shadow() helper in generic code, instead of in mq-deadline. > > - Add prep patch that unexports blk_mq_free_hctx_request(), it's not > used by anyone. > > - Remove the magic '256' queue depth from mq-deadline, replace with a > module parameter, 'queue_depth', that defaults to 256. > > - Various cleanups. >