From patchwork Wed Oct 25 18:04:46 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jens Axboe X-Patchwork-Id: 10027107 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 00B33601E8 for ; Wed, 25 Oct 2017 18:04:57 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id E643028BFA for ; Wed, 25 Oct 2017 18:04:56 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id DB7C228C0A; Wed, 25 Oct 2017 18:04:56 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.4 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID, RCVD_IN_DNSWL_HI, RCVD_IN_SORBS_SPAM autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 7E6AB28BFA for ; Wed, 25 Oct 2017 18:04:56 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751855AbdJYSE4 (ORCPT ); Wed, 25 Oct 2017 14:04:56 -0400 Received: from mail-pg0-f67.google.com ([74.125.83.67]:54429 "EHLO mail-pg0-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751793AbdJYSEz (ORCPT ); Wed, 25 Oct 2017 14:04:55 -0400 Received: by mail-pg0-f67.google.com with SMTP id l24so581799pgu.11 for ; Wed, 25 Oct 2017 11:04:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel-dk.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=2/1Lr15vAxlBQjNWm1REpun9y0KV7t/Dx1waVv2u9k8=; b=Uw20kASsmqkvCUdVRYk5CVBTLorjj9Q+16RGjEV9Nk0yIkzn3tBjCLr3Q8pzBTzmOQ +BEdgSFcjPuZo24e8CyBIli+hC4OuYQ9fCUTRcWipb4eFcntcJc/vVPsOvttziXAYokt XXAb9mmwfeOvYhVkkbmKot6ERQHaHy3wkCBTz4i6kJ0Gz0r0jq1vdw0womU30F0lmCdu VXBF988Flam1r78Q1nPXLbXKWzaKcNR3TBpBPgfNLpnS8x7ry03VaSOqvg2lmHCXk7d5 nMRNUZvNMvwayQNZ/uW5LyK7YXhIyxk6c7mUHKkzZW0+Hm61WpDg4HbxZJZE8ATvcssT jNSA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=2/1Lr15vAxlBQjNWm1REpun9y0KV7t/Dx1waVv2u9k8=; b=YCWrjQgLXGXEC1W9Q8NWGhOWibg5pVcGNNY9UWUI5bs72sY9KnlaXixNN0EAgBS27P XHVAXxRCqNYrojbN+r3QsX+23m5Tla7oI+9cSjKbbLuoCFa4tXXu2tlD9dZMydL/jcO9 cekwIROI5hJxjQyHYSeuD5uNxnFYilivbbJay2EO/nWAbFVH6z7Avdqdyc4cy8tN6wG3 +DHBcmsByK7bIVOkqlw/POl93qtY/p3ghD5/bsGaysc8Gu6c0Q32a65noG8BqqT9uO9N Piu71JNfzgoMCwACdviG37+Nv0Wr68ikYtuu739Ba4JLxvHCzROLVeohCu+E/soGphqb /hWg== X-Gm-Message-State: AMCzsaW03EPbwYjuKkNgyPxDVkwyWoV6/mNvgpw8URg5kPYyfIT/jOJS qB6pZT6hv3042AZbZu3ohCBV8PPnHVK3+g== X-Google-Smtp-Source: ABhQp+SlEXkFYG6W2FS12U7PdwqgbsHIpLo0tmPY/JY0X1L8zde9cJcdKkHEBSyZdExU9J1xnHXdtg== X-Received: by 10.99.137.72 with SMTP id v69mr2773265pgd.130.1508954694360; Wed, 25 Oct 2017 11:04:54 -0700 (PDT) Received: from x1.vtm-guests.local (50-76-103-53-static.hfc.comcastbusiness.net. [50.76.103.53]) by smtp.gmail.com with ESMTPSA id 62sm6386083pfw.129.2017.10.25.11.04.53 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Wed, 25 Oct 2017 11:04:53 -0700 (PDT) From: Jens Axboe To: linux-block@vger.kernel.org Cc: Jens Axboe Subject: [PATCH 2/3] elevator: allow name aliases Date: Wed, 25 Oct 2017 12:04:46 -0600 Message-Id: <1508954687-3204-3-git-send-email-axboe@kernel.dk> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1508954687-3204-1-git-send-email-axboe@kernel.dk> References: <1508954687-3204-1-git-send-email-axboe@kernel.dk> Sender: linux-block-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-block@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Since we now lookup elevator types with the appropriate multiqueue capability, allow schedulers to register with an alias alongside the real name. This is in preparation for allowing 'mq-deadline' to register an alias of 'deadline' as well. Signed-off-by: Jens Axboe --- block/elevator.c | 22 ++++++++++++++++------ include/linux/elevator.h | 1 + 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/block/elevator.c b/block/elevator.c index b70e69f795db..dc0432e12ecf 100644 --- a/block/elevator.c +++ b/block/elevator.c @@ -83,6 +83,16 @@ bool elv_bio_merge_ok(struct request *rq, struct bio *bio) } EXPORT_SYMBOL(elv_bio_merge_ok); +static bool elevator_match(const struct elevator_type *e, const char *name) +{ + if (!strcmp(e->elevator_name, name)) + return true; + if (e->elevator_alias && !strcmp(e->elevator_alias, name)) + return true; + + return false; +} + /* * Return scheduler with name 'name' and with matching 'mq capability */ @@ -91,7 +101,7 @@ static struct elevator_type *elevator_find(const char *name, bool mq) struct elevator_type *e; list_for_each_entry(e, &elv_list, list) { - if (!strcmp(e->elevator_name, name) && !(mq ^ e->uses_mq)) + if (elevator_match(e, name) && !(mq ^ e->uses_mq)) return e; } @@ -922,9 +932,9 @@ int elv_register(struct elevator_type *e) spin_unlock(&elv_list_lock); /* print pretty message */ - if (!strcmp(e->elevator_name, chosen_elevator) || + if (elevator_match(e, chosen_elevator) || (!*chosen_elevator && - !strcmp(e->elevator_name, CONFIG_DEFAULT_IOSCHED))) + elevator_match(e, CONFIG_DEFAULT_IOSCHED))) def = " (default)"; printk(KERN_INFO "io scheduler %s registered%s\n", e->elevator_name, @@ -1077,8 +1087,7 @@ static int __elevator_change(struct request_queue *q, const char *name) if (!e) return -EINVAL; - if (q->elevator && - !strcmp(elevator_name, q->elevator->type->elevator_name)) { + if (q->elevator && elevator_match(q->elevator->type, elevator_name)) { elevator_put(e); return 0; } @@ -1126,7 +1135,8 @@ ssize_t elv_iosched_show(struct request_queue *q, char *name) spin_lock(&elv_list_lock); list_for_each_entry(__e, &elv_list, list) { - if (elv && !strcmp(elv->elevator_name, __e->elevator_name)) { + if (elv && elevator_match(elv, __e->elevator_name) && + !(__e->uses_mq ^ (q->mq_ops != NULL))) { len += sprintf(name+len, "[%s] ", elv->elevator_name); continue; } diff --git a/include/linux/elevator.h b/include/linux/elevator.h index 5bc8f8682a3e..6df8b14f1f6a 100644 --- a/include/linux/elevator.h +++ b/include/linux/elevator.h @@ -144,6 +144,7 @@ struct elevator_type size_t icq_align; /* ditto */ struct elv_fs_entry *elevator_attrs; char elevator_name[ELV_NAME_MAX]; + const char *elevator_alias; struct module *elevator_owner; bool uses_mq; #ifdef CONFIG_BLK_DEBUG_FS