Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752976AbcLHUNr (ORCPT ); Thu, 8 Dec 2016 15:13:47 -0500 Received: from mx0b-00082601.pphosted.com ([67.231.153.30]:44562 "EHLO mx0a-00082601.pphosted.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752353AbcLHUNo (ORCPT ); Thu, 8 Dec 2016 15:13:44 -0500 From: Jens Axboe To: , , CC: , Subject: [PATCHSET/RFC v2] blk-mq scheduling framework Date: Thu, 8 Dec 2016 13:13:18 -0700 Message-ID: <1481228005-9245-1-git-send-email-axboe@fb.com> X-Mailer: git-send-email 2.7.4 MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [192.168.54.13] X-Proofpoint-Spam-Reason: safe X-FB-Internal: Safe X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:,, definitions=2016-12-08_12:,, signatures=0 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1940 Lines: 54 As a followup to this posting from yesterday: https://marc.info/?l=linux-block&m=148115232806065&w=2 this is version 2. I wanted to post a new one fairly quickly, as there ended up being a number of potential crashes in v1. This one should be solid, I've run mq-deadline on both NVMe and regular rotating storage, and we handle the various merging cases correctly. You can download it from git as well: git://git.kernel.dk/linux-block blk-mq-sched.2 Note that this is based on for-4.10/block, which is in turn based on v4.9-rc1. I suggest pulling it into my for-next branch, which would then merge nicely with 'master' as well. Changes since v1: - Add Kconfig entries to allow the user to choose what the default scheduler should be for blk-mq, and whether that depends on the number of hardware queues. - Properly abstract the whole get/put of a request, so we can manage the life time properly. - Enable full merging on mq-deadline (front/back, bio-to-rq, rq-to-rq). Has full feature parity with deadline now. - Export necessary symbols for compiling mq-deadline as a module. - Various API adjustments for the mq schedulers. - Various cleanups and improvements. - Fix a lot of bugs. A lot. Upgrade! block/Kconfig.iosched | 37 ++ block/Makefile | 3 block/blk-core.c | 9 block/blk-exec.c | 3 block/blk-flush.c | 7 block/blk-merge.c | 3 block/blk-mq-sched.c | 265 +++++++++++++++++++ block/blk-mq-sched.h | 188 +++++++++++++ block/blk-mq-tag.c | 1 block/blk-mq.c | 254 ++++++++++-------- block/blk-mq.h | 35 +- block/elevator.c | 194 ++++++++++---- block/mq-deadline.c | 647 +++++++++++++++++++++++++++++++++++++++++++++++ drivers/nvme/host/pci.c | 1 include/linux/blk-mq.h | 4 include/linux/elevator.h | 34 ++ 16 files changed, 1495 insertions(+), 190 deletions(-)