From patchwork Fri Oct 26 16:01:11 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "jianchao.wang" X-Patchwork-Id: 10657059 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id E0C4414BD for ; Fri, 26 Oct 2018 08:03:10 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id D3E722BDBB for ; Fri, 26 Oct 2018 08:03:10 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id C7CD42BDCE; Fri, 26 Oct 2018 08:03:10 +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=-8.0 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI, UNPARSEABLE_RELAY 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 721732BDBB for ; Fri, 26 Oct 2018 08:03:10 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726686AbeJZQjF (ORCPT ); Fri, 26 Oct 2018 12:39:05 -0400 Received: from userp2130.oracle.com ([156.151.31.86]:58546 "EHLO userp2130.oracle.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726354AbeJZQjF (ORCPT ); Fri, 26 Oct 2018 12:39:05 -0400 Received: from pps.filterd (userp2130.oracle.com [127.0.0.1]) by userp2130.oracle.com (8.16.0.22/8.16.0.22) with SMTP id w9Q7xMPg185849; Fri, 26 Oct 2018 08:03:01 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : cc : subject : date : message-id : in-reply-to : references; s=corp-2018-07-02; bh=9SdM5Dlo7+eTkwZv5f8GeKaJqEN1GCbKAA4fO07WZHc=; b=O30YTxRRa3cNCM/CssjPNicf9HQqMBm5Sxbskv8UfMauFA4VPMBbQ+QdR1lPw7YN8zEQ 5TiOq7jG+iapEdjI+QIXp+IFKAn8nDdaZWv40MIvn0QCx64QEXONduRetFiL9AldZTsX ACXyALxJq3exjvZl+UL5rHOqsEIBrQBmuLeJUNXWl84vfsnW1HDXu2uUgjSL0GYYgtQF mi4bSCi2tZyXjia/wcnRyLjW4fxjfE8zfhjOEvLg5TTFlgcqMahf1Ul3A8xHPYd3tLg6 TadqnEHsoLMMJUhCxW8uK0YVe6wIquJRGPr1yrpYLjKykRfgaP1JMdthQsFVM3o2NRK9 ZA== Received: from userv0021.oracle.com (userv0021.oracle.com [156.151.31.71]) by userp2130.oracle.com with ESMTP id 2n7usunt11-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 26 Oct 2018 08:03:01 +0000 Received: from userv0122.oracle.com (userv0122.oracle.com [156.151.31.75]) by userv0021.oracle.com (8.14.4/8.14.4) with ESMTP id w9Q82txN032384 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 26 Oct 2018 08:02:55 GMT Received: from abhmp0020.oracle.com (abhmp0020.oracle.com [141.146.116.26]) by userv0122.oracle.com (8.14.4/8.14.4) with ESMTP id w9Q82toM027622; Fri, 26 Oct 2018 08:02:55 GMT Received: from will-ThinkCentre-M93p.cn.oracle.com (/10.182.70.234) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Fri, 26 Oct 2018 01:02:54 -0700 From: Jianchao Wang To: axboe@kernel.dk Cc: ming.lei@redhat.com, linux-block@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH V2 3/3] blk-mq: ensure hctx to be ran on mapped cpu when issue directly Date: Sat, 27 Oct 2018 00:01:11 +0800 Message-Id: <1540569671-6589-4-git-send-email-jianchao.w.wang@oracle.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1540569671-6589-1-git-send-email-jianchao.w.wang@oracle.com> References: <1540569671-6589-1-git-send-email-jianchao.w.wang@oracle.com> X-Proofpoint-Virus-Version: vendor=nai engine=5900 definitions=9057 signatures=668683 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 suspectscore=1 malwarescore=0 phishscore=0 bulkscore=0 spamscore=0 mlxscore=0 mlxlogscore=938 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1807170000 definitions=main-1810260072 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 When issue request directly and the task is migrated out of the original cpu where it allocates request, hctx could be ran on the cpu where it is not mapped. To fix this, insert the request if BLK_MQ_F_BLOCKING is set, check whether the current is mapped to the hctx and invoke __blk_mq_issue_directly under preemption disabled. Signed-off-by: Jianchao Wang --- block/blk-mq.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/block/blk-mq.c b/block/blk-mq.c index 71b829c..4f1dedb 100644 --- a/block/blk-mq.c +++ b/block/blk-mq.c @@ -1745,6 +1745,14 @@ static blk_status_t blk_mq_try_issue_directly(struct blk_mq_hw_ctx *hctx, if (q->elevator) goto out; + if (hctx->flags & BLK_MQ_F_BLOCKING) + goto out; + + if (!cpumask_test_cpu(get_cpu(), hctx->cpumask)) { + put_cpu(); + goto out; + } + hctx_lock(hctx, &srcu_idx); /* * hctx_lock is needed before checking quiesced flag. @@ -1779,6 +1787,7 @@ static blk_status_t blk_mq_try_issue_directly(struct blk_mq_hw_ctx *hctx, out_unlock: hctx_unlock(hctx, srcu_idx); + put_cpu(); out: if (insert) blk_mq_sched_insert_request(rq, false, true, false);