From patchwork Thu Mar 16 21:40:47 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Madhani, Himanshu" X-Patchwork-Id: 9629373 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 9AACE60132 for ; Thu, 16 Mar 2017 22:17:42 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 88FCF2843C for ; Thu, 16 Mar 2017 22:17:42 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 7BAFA28649; Thu, 16 Mar 2017 22:17:42 +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.9 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,RCVD_IN_DNSWL_HI 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 AF1B32843C for ; Thu, 16 Mar 2017 22:17:41 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752681AbdCPWRl (ORCPT ); Thu, 16 Mar 2017 18:17:41 -0400 Received: from mail-dm3nam03on0061.outbound.protection.outlook.com ([104.47.41.61]:27694 "EHLO NAM03-DM3-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752562AbdCPWRk (ORCPT ); Thu, 16 Mar 2017 18:17:40 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=CAVIUMNETWORKS.onmicrosoft.com; s=selector1-cavium-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=8L38NBpcvEYpafXxJ4jXyDqwngs9ytXH3lxJPKtxKUY=; b=XPK+brp8U5oLeT1ar87WN7+YonQSae1nRpNdLRU3oHkFvAwA97p+XJiAUGxp1uzqu6ZDi5EVBB2a+yc+yn1pRaQZaLDBX3MRUICZL7PnUpgoX6NF9Zy0yIm517x08LLTb5P+qLZ66eAXMgtnmQwOulezAe2qWvcbQSTXK5Ac1EI= Received: from BY2PR07CA0096.namprd07.prod.outlook.com (10.166.107.49) by BY2PR07MB472.namprd07.prod.outlook.com (10.141.220.26) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.961.17; Thu, 16 Mar 2017 21:41:07 +0000 Received: from BY2FFO11FD045.protection.gbl (2a01:111:f400:7c0c::116) by BY2PR07CA0096.outlook.office365.com (2a01:111:e400:7bff::49) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.977.11 via Frontend Transport; Thu, 16 Mar 2017 21:41:06 +0000 Authentication-Results: spf=none (sender IP is 50.232.66.26) smtp.mailfrom=cavium.com; vger.kernel.org; dkim=none (message not signed) header.d=none; vger.kernel.org; dmarc=none action=none header.from=cavium.com; Received-SPF: None (protection.outlook.com: cavium.com does not designate permitted sender hosts) Received: from CAEXCH02.caveonetworks.com (50.232.66.26) by BY2FFO11FD045.mail.protection.outlook.com (10.1.15.177) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P384) id 15.1.961.10 via Frontend Transport; Thu, 16 Mar 2017 21:41:06 +0000 Received: from dut1171.mv.qlogic.com (172.29.51.171) by CAEXCH02.caveonetworks.com (10.17.4.29) with Microsoft SMTP Server id 14.2.309.2; Thu, 16 Mar 2017 14:41:03 -0700 Received: from dut1171.mv.qlogic.com (localhost [127.0.0.1]) by dut1171.mv.qlogic.com (8.14.7/8.14.7) with ESMTP id v2GLemZQ020520; Thu, 16 Mar 2017 14:40:48 -0700 Received: (from root@localhost) by dut1171.mv.qlogic.com (8.14.7/8.14.7/Submit) id v2GLemfH020519; Thu, 16 Mar 2017 14:40:48 -0700 From: Himanshu Madhani To: , CC: , , Subject: [RFC 1/2] scsi: Provide mechanism for SCSI layer to poll for LLDD. Date: Thu, 16 Mar 2017 14:40:47 -0700 Message-ID: <20170316214048.20481-2-himanshu.madhani@cavium.com> X-Mailer: git-send-email 2.12.0 In-Reply-To: <20170316214048.20481-1-himanshu.madhani@cavium.com> References: <20170316214048.20481-1-himanshu.madhani@cavium.com> MIME-Version: 1.0 X-EOPAttributedMessage: 0 X-Forefront-Antispam-Report: CIP:50.232.66.26; IPV:NLI; CTRY:US; EFV:NLI; SFV:NSPM; SFS:(10009020)(6009001)(39830400002)(39450400003)(2980300002)(428002)(189002)(199003)(9170700003)(189998001)(105586002)(8676002)(106466001)(33646002)(42186005)(101416001)(81166006)(2906002)(8936002)(305945005)(575784001)(2950100002)(4326008)(86362001)(36756003)(107886003)(38730400002)(1076002)(76176999)(80596001)(54906002)(50226002)(5660300001)(47776003)(50466002)(50986999)(5003940100001)(87636001); DIR:OUT; SFP:1101; SCL:1; SRVR:BY2PR07MB472; H:CAEXCH02.caveonetworks.com; FPR:; SPF:None; MLV:sfv; MX:1; A:1; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BY2FFO11FD045; 1:s+LiUWLfDye1AjtUQ++GPpRuem9ZSPX2yEjDhH6Zaq8pMAMOK08wNINad4SWfdPywiRyc44g7djlbThAD0KL27IYd0dK6nv7uyO+Mswf8TvYY/0QKxp3/VpCeeh1a7IP7Y9ai1/wU59NJlXtSGE2UwtryYigckBCGTF4vtul6IZbiWTn8bDd3DIiv3xIIzW9RMXjJ1NL9tmwVgA9a8SZPlRwBAjzdx2CgqBzoTCrzJVwcoKa+hvhFStQ90edm4EhMONZk3NFQkdyVEcF2/D8/Uw8dW8U6K6o4LTa6ffiX9Gboa5LFxvhqCNS2OsEl8kK0XeCtNeF1xdBa3feltLhiMLBuBJ6JjSGV2/VR+hBKVo4+iK3XJSUWBIl30MznctqTLKwny4cmoveGWeHCBWs5jwpLuVacUnqhnO1S8Nfw72Es3Rwp6S1bzZDniAtnZOu03iIgLjHya+FR2awZcgJQjfNqb2SIdcw9Yr+80cizghxnOdUXnrWe4AWp6PdB/Yuo9SqrR6ee9Z5tS2ptBWNJA== X-MS-Office365-Filtering-Correlation-Id: 9cbf28ad-43e8-4ee8-89ab-08d46cb52726 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(2017030254038); SRVR:BY2PR07MB472; X-Microsoft-Exchange-Diagnostics: 1; BY2PR07MB472; 3:pteawk5kk2sGr3AycHm68v2VzQ/nak5xluFW8jaK7LI0Z/Fm5qTLARK5UpOUGOkHDK/7zerKPoX3o5uBzziCmPXpaij532qjr4YpTGh6N6i3CZP6yOAcebkfmfAj90gk4sUPDCrRyeIjUIqT2TvbF79/PdbJ9iduxSoD5H2T6Z/MRLpLjTqaRJz74IcO7WLb2F/CDTd14wZ9BhZrTX6mXj80aBI2IvFE9MocLy50hI7aI+x6l6mk5+3SZT1Qngc/LT+fCX3OEsgJbhhOs3ETC/AzBUFWhiMORi2blG4mrC9AF9+CXu3AJKY909EtDbHiNqteG3DQOBwQKvZiQeR4SeJsbsHOAg2TjchOFdKp2A5lA+R5arzN6LgysdnBgd5UT2PtKIV+Q/iwSeX++izd8A==; 25:ziHkaMd1AmixIiTCuw63Q1VHv5Bhs79w/tDF0hJH71yEcKvxS/ljvj7yNnIgYZVbPscfHmUgKzu2/UCSqq7Gqs9+jCOwsM1SOpiFhj7uDvPRiMVdo4n2W9DR5bl4Oy4E6teRRUfyne+hnHlnCGmFA98Cloi+VTlVImK9gmTcSOapFj+OS4JgHv4umwuwVkpc2yVs4gqWGavDiShKD6FT8R4U1i2aBcLj2WlOmd5EJkS6an/WnZLTeFZBKQvTgu81cewyIoaTdiep2nD9VyYb8AwADVwbGu+K+BBiGciy+Z7BkoPDVb0yTL+MslA54MySipXGBN4kRXevMUqZKOGyzY/W3mRaTKFx7t39IoHuettrUqvxcqcQdk85qHj9ue53Xk0MifWMEDqgY9205D9axn0LXQLE4JGGd3sdRAC3Mpn0GL59TI+RaDRLmNy0pZdTCRfkdTTe8vz+WpVcg+Hl7w== X-Microsoft-Exchange-Diagnostics: 1; BY2PR07MB472; 31:hfqYckwbJWqmUyCAcDs/VSiFAa2sbWVnsQfE9BvzLL0nze+eFrxNos67tjaDSqYhPo5eyYv8oZF32IseOb9UIxcl8hNGHKVeMHqj855Wu+ifXdKONhQhELmmPYwWaeNEfWiItHsS6UR9lUfEQW/vvWjvYkB7rC58Fk8kd+NrBPp+CCTAAwuIbXlX9F0KCaCEWpz1TIT5PKLuYwZB0J15UXQKqfT+zSGAm/xQPbUzX2QX3sSwftUiU1MVrxhDTBiqrq8Txu1lDENpOSiL5hSMNg==; 20:o1mayVnXIhO1Nxwa1SS/hGEyNmo0Ree82I5v8645pYWHlblsMNDMLgW684mUX/MuP2vQMUVGm4Nk4lxbKbfBr6UNa3raZmflVdBuK4mYs23hWYSH7e4jRp/B/zNrQYQR497jfrmtLZD6plTTkMPg4u9Gjdf9vjaKNLJlsttwo8TfNpzz12hmG+wlPnFEmGAIOoOhqjjxftJ05lkh3xVTeNt0B/MzbwHxkQIKN/mpPRuEcbX4ej+21jBm33183+NEGuKj/fmn4lIgyrNba5uomwNYS0/9IiwxPqbIuh6xIqKXKMEv4wrEnUZ/b/ZbofJ6+14OGF1pILIhiYdOg2NxV4zbaFdj9mJQBdCHI5DdvNqtS9JMY7q0sEONeCaOJzqwX7zssSK4puXo8FqtIvI8BqZ3BLSnZo8dBu+QHrM4hUCEp5h0nmRuyYiOmib2czQL2cXdTR312RXZNn64WGj+PBAWh5vaZYsBkqjvj4+tOyo77yDoTSQvlOxZO1IN/dve X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040375)(601004)(2401047)(13018025)(13015025)(13024025)(13023025)(8121501046)(5005006)(13017025)(10201501046)(3002001)(6041248)(20161123560025)(20161123564025)(20161123558025)(20161123562025)(20161123555025)(6072148); SRVR:BY2PR07MB472; BCL:0; PCL:0; RULEID:; SRVR:BY2PR07MB472; X-Microsoft-Exchange-Diagnostics: 1; BY2PR07MB472; 4:p/VH6H110aLkLDE5E0gwkWMmLFzbUoh7GfLyhDl2W/yCWHbHfmzxZ+6ylSu2wv5aTI7r5XPu3AeRLaYJWNLxGgVpqhbqbUtfNUVoz980NmyYaIdihTaJeR3JET6vRE5hLH00hKq6r0tKTd4l/ui3tRZnNumP7v7AQPTqus6o7rkJUYxc5FD4YdOzAglf3Kv/B1q9YAvCwzDtC3KUjtuzuFZFDycuuBtr1w6Ji56vWJAnbSznIRgPFlhiPEv+jJxtOEUi05RpG0iESML7h+J8K+vUQvWmLIpYiEwEHr7V01LYJWUfcbe+HCeGjPmRYEWpdwCoSBcejl8TygXorN9Dp0RDyRBP/grAVyFnyr431yHultwzQZv51Hr06eluIImU1tcsPGaa4YbdvtrDMwxilyss38PhD+/1q45ls8Pim9kJicVED/BZ5mC7C91rEzJ77RA5ExfxM2iM95k0ydtbNKu3oqM0AGYRc38LRo5I2licx6nyp7RgWtEZtWePOVtHWja4+u+XDGXGOHXujHKWcIRtBk1FwCdRMGLb5jk/IhdfcsEhjjkQSnwzZl1FjjEwauHH2J+7hjHqJCE14HARjjf9F7D44ocPEfQtjtUXHzvsnWlphdqE4BoCvF6hN85VzaBxz3+8cuKYhBVLb8IyMF9syGbrigjC7yupFWV6QLUfW+nnCDvMOipurn2/xTkdIlyWeunpNtBw1aP/qVXuiA== X-Forefront-PRVS: 024847EE92 X-Microsoft-Exchange-Diagnostics: 1; BY2PR07MB472; 23:ZgYSGuPdi1mtJKAn8GMqhTcebmgbOccE6RE18TOKIugzszBJNOuvh2hwlPZ9X8dSDms2zqxFbUlAI2BFHZxFXFJlbNn7VFUBxD9xihLdvCYGLC/gkIGJhg3qeB7TxhwtQuaOIE7jPcF/cFprUrOvMFdUsa1ng9L6bRmXfqX1bD9OE9UKJtMccjlPA3KxY2QsLfW3wvoz/tNmw8dqq9BlvqhS8D18tliglEFdpgqz2GAPRhI20kTqqo33yC32n1XWn5DnkaTLUAd9x6owDatT+tJKSvVlmSUJADYV2Q06cajNYghDWHdAxkkonEm/T4VIvpnTpEje1nxXATSK6/lB0HPfvgjhEH8IvHV53k69yrZTUV0RxcXt2R3fGOpIh0JFg5dgcehKr6bCeKhQHzrrLDZnzWLaWUIOVdcnntKJTqVACG4xg+VOzrGuBG9SC0HD+ZqZA8oyUjaiW66X0i2JsOskpvLjmqoY1dN/mGDVVf98ZYFHmHEYGA0UWA/q7Uei9SXEAbZvIDLH5ByJ7kHipCdUv4oT7Nfml9j2GDqW9Mco7tTaJj2UZbBEfAXpwU0klIvm7yGXGtkBSd0EuqLTEuRdQGoC4GaY7Bg6EK8/rY3Z8q6C5MpJwxFpD+hF8JjSfkRexMwYuEZqa19ZAxP49NPjd9kqVBtihYzlZ32dbcRtRyHiNVF0Ci23R4UPBWvc6Y02mgJPHh92hhlmw/35LOYI8DPBJh00ajgnRI+64kbk2CVONURAK1rO7BGZJHhTUtuSNu95YK3oKuLl4vh1I6wvUUfizCi9kUw3y1tMc9Pp5TPpTT6rPghTivM2kw7Bs3lwPhqfQEh1Z5ApP2abtH0Wz6ufHLk/kcfHa5L4H3de3I/Z9p1KBSISTkocj0fa2nbD4cOTVgRGF3DjGK6yLyzELP1FtJWx77DsxnJiJq m6aJnzYLhinq0fY0nuedpr X-Microsoft-Exchange-Diagnostics: 1; BY2PR07MB472; 6:P/3+Ig0njeEpFuGBt9WsstVT9n/QPAkbjUixuCrN9efXfbyMqMd4fZVVDZ2PVZB/QXzd1ST+gXppD3B64v5vw2BOlwv54AEJvN+f/xFo0I7eilnh40gmEFzyS16DGaN4k/5axSt13mtEsHnLmnlzFd5KR6kcmgJ8LcZ9r8UhIjfb+r9b+arSNz8UJwViJkM4MEUHJ+m6RKVvgerUMKFVHhUM6Ap/u3akSzI1z4RjFgKE7AC0JHQVwgKMkAtn6iQf86U2lPS+g8jAUKT8iyHYTLrNEdFuuOx/BMT3NwztpvpeoGCZp5c1Q+SZG+lOHPqYGkm4W9KE35T3BHEFLyUIIIwsvJnb1hZiJRJZsrvhlTQEROOF4SZzptZUA4fiLChTFVYYO+p8YU2oYObKm2zQDQ==; 5:mM0JABXSHa4PQZX2dYDpgEnWQgSN9SAlzN0bG1KM1fNA80f9EF6chNxcQOcexVqVJsZEXeohoolW9vtcRRjYASC4f+2DHNtBaksSD6VQjQj23EIw4azRY9a5dTg0GTFbKi7+1BhaY8eR1zG9i83SUA==; 24:xShXtKDpL8ahLYIRzrNMf517vjeSS2dfJ10fEZwGz2QSKpk/fO30VjMdscs7qdJOnsmToKcBmNRlvJwfRbCckA3IMAW8jCGFEvSZBEV6HDc= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; BY2PR07MB472; 7:kkX0/4HuLNL2dLRPJzcjUcoYqDpUUPoX72SP5bQsda6/T4TcKlN8BhU/0LrCAbGXAsKqarFD5cF37DN3xl7HTqNftyfWpmkpHBNBV4fJz0QFzYeHQTC2H3rCfwyHScmMLGEu+zNkrB1D6aQdAzk75Jel+uBqDOm8ItxqcnPjlUy7sr41AnqDWLQyyRFSSJ6Q6yUSy9J0Y0zoGkOMvbIEhPuaVNT6z5n216pNiQlAJfb7Xv4WI6brpPS5Kdex7HWGpj+zZKgjd2G2sBc4a0RUgjIT+6b+fCZXcvZj2q7TBTh7nBwcoPPIBdeB/vFOYneSaePmi/n0Iafwf0cfZrdnYg== X-OriginatorOrg: cavium.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Mar 2017 21:41:06.5771 (UTC) X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=711e4ccf-2e9b-4bcf-a551-4094005b6194; Ip=[50.232.66.26]; Helo=[CAEXCH02.caveonetworks.com] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY2PR07MB472 Sender: linux-scsi-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-scsi@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP From: Darren Trapp Signed-off-by: Darren Trapp Signed-off-by: Himanshu Madhani --- drivers/scsi/scsi_lib.c | 39 +++++++++++++++++++++++++++++++++++++++ include/scsi/scsi_host.h | 12 ++++++++++++ 2 files changed, 51 insertions(+) diff --git a/drivers/scsi/scsi_lib.c b/drivers/scsi/scsi_lib.c index 19125d72f322..eb01be039677 100644 --- a/drivers/scsi/scsi_lib.c +++ b/drivers/scsi/scsi_lib.c @@ -2154,6 +2154,43 @@ struct request_queue *scsi_alloc_queue(struct scsi_device *sdev) return q; } +static int +scsi_poll(struct blk_mq_hw_ctx *hctx, unsigned int tag) + +{ + struct Scsi_Host *shost = hctx->driver_data; + struct request *req; + struct scsi_cmnd *cmd; + + req = blk_mq_tag_to_rq(shost->tag_set.tags[hctx->queue_num], tag); + if (!req) + return 0; + + cmd = blk_mq_rq_to_pdu(req); + if (!cmd) + return 0; + + if (shost->hostt->poll_queue) + return(shost->hostt->poll_queue(shost, cmd)); + else return 0; +} + +static inline void +__scsi_init_hctx(struct blk_mq_hw_ctx *hctx, struct Scsi_Host *shost, unsigned int hctx_idx) +{ + hctx->driver_data = shost; +} + +static int +scsi_init_hctx(struct blk_mq_hw_ctx *hctx, void *data, unsigned int hctx_idx) +{ + struct Scsi_Host *shost = data; + + __scsi_init_hctx(hctx, shost, hctx_idx); + + return 0; +} + static struct blk_mq_ops scsi_mq_ops = { .queue_rq = scsi_queue_rq, .complete = scsi_softirq_done, @@ -2161,6 +2198,8 @@ static struct blk_mq_ops scsi_mq_ops = { .init_request = scsi_init_request, .exit_request = scsi_exit_request, .map_queues = scsi_map_queues, + .poll = scsi_poll, + .init_hctx = scsi_init_hctx, }; struct request_queue *scsi_mq_alloc_queue(struct scsi_device *sdev) diff --git a/include/scsi/scsi_host.h b/include/scsi/scsi_host.h index 3cd8c3bec638..e87e8a69a0df 100644 --- a/include/scsi/scsi_host.h +++ b/include/scsi/scsi_host.h @@ -127,6 +127,18 @@ struct scsi_host_template { int (* queuecommand)(struct Scsi_Host *, struct scsi_cmnd *); /* + * The poll_queue function allows the scsi layer to poll a + * LLDD for the completion of a specific scsi_cmnd (upon request + * from blk_mq). + * + * The LLDD returns 1 to indicate it completed the request or 0 + * otherwise. + * + * STATUS: OPTIONAL + */ + int (* poll_queue)(struct Scsi_Host *, struct scsi_cmnd *); + + /* * This is an error handling strategy routine. You don't need to * define one of these if you don't want to - there is a default * routine that is present that should work in most cases. For those