From patchwork Sun Dec 18 09:02:43 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Madhani, Himanshu" X-Patchwork-Id: 9479235 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 0647B60830 for ; Sun, 18 Dec 2016 09:03:42 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id E649E2845B for ; Sun, 18 Dec 2016 09:03:41 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id D8D122847D; Sun, 18 Dec 2016 09:03:41 +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.8 required=2.0 tests=BAYES_00,DKIM_SIGNED, RCVD_IN_DNSWL_HI,T_DKIM_INVALID 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 8A3BE2845B for ; Sun, 18 Dec 2016 09:03:40 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1757731AbcLRJDi (ORCPT ); Sun, 18 Dec 2016 04:03:38 -0500 Received: from mail-sn1nam01on0070.outbound.protection.outlook.com ([104.47.32.70]:63789 "EHLO NAM01-SN1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1757418AbcLRJDg (ORCPT ); Sun, 18 Dec 2016 04:03:36 -0500 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=fupDZPvUp3CQZWdxhDuTlCtpbjJiAwGHRU+8MLyYIXk=; b=DBV/ZKq2ToQ8jHhqyNB4QZrj6qd/3JdMWQVR8zen7dMcB7+BOp5mHy/DysPqCgOjpO/mglwwWK/qch3NFn60OkcbnkS6ble5WIdyvU/9bI2aCuaXi2CZyj5xsXL8As+VObaCAr+YJrQqvJlgDOCnbpxFUR/9AlabmIDGHMf64jo= Received: from MWHPR07CA0026.namprd07.prod.outlook.com (10.169.230.12) by BN1PR07MB199.namprd07.prod.outlook.com (10.242.216.152) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.771.8; Sun, 18 Dec 2016 09:03:33 +0000 Received: from BN1BFFO11FD038.protection.gbl (2a01:111:f400:7c10::1:148) by MWHPR07CA0026.outlook.office365.com (2603:10b6:300:1c::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.789.14 via Frontend Transport; Sun, 18 Dec 2016 09:03:32 +0000 Authentication-Results: spf=none (sender IP is 50.232.66.26) smtp.mailfrom=cavium.com; linux-iscsi.org; dkim=none (message not signed) header.d=none; linux-iscsi.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 BN1BFFO11FD038.mail.protection.outlook.com (10.58.144.101) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P384) id 15.1.789.10 via Frontend Transport; Sun, 18 Dec 2016 09:03:32 +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; Sun, 18 Dec 2016 01:03:18 -0800 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 uBI934c4022982; Sun, 18 Dec 2016 01:03:04 -0800 Received: (from root@localhost) by dut1171.mv.qlogic.com (8.14.7/8.14.7/Submit) id uBI934Bf022981; Sun, 18 Dec 2016 01:03:04 -0800 From: Himanshu Madhani To: , , , CC: , , Subject: [PATCH 3/9] qla2xxx: Move percpu_ida_{alloc|free} to tcm_qla2xxx. Date: Sun, 18 Dec 2016 01:02:43 -0800 Message-ID: <1482051769-22941-4-git-send-email-himanshu.madhani@cavium.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1482051769-22941-1-git-send-email-himanshu.madhani@cavium.com> References: <1482051769-22941-1-git-send-email-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)(7916002)(39450400003)(2980300002)(428002)(199003)(189002)(356003)(69596002)(6666003)(2201001)(101416001)(4720700003)(36756003)(305945005)(106466001)(86362001)(2950100002)(105586002)(575784001)(2906002)(33646002)(4326007)(47776003)(5660300001)(626004)(50986999)(8936002)(107886002)(42186005)(5003940100001)(38730400001)(50466002)(80596001)(48376002)(4001430100002)(39060400001)(92566002)(5001770100001)(50226002)(8676002)(76176999)(81156014)(189998001)(81166006)(5063002)(87636001); DIR:OUT; SFP:1101; SCL:1; SRVR:BN1PR07MB199; H:CAEXCH02.caveonetworks.com; FPR:; SPF:None; PTR:50-232-66-26-static.hfc.comcastbusiness.net; A:1; MX:1; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BN1BFFO11FD038; 1:ZvqMET3bA+Dh3RLQB22T+h+0MJMeSOA8iD2xY9oYH6G8iTj+8lElCJ3+YrFNJEy/AdstHfGGxK8SalJD4iDzwJdJ1+faRCQ0uxzy+iWRENknGWSpFB70Qm4SSBAVlVLBU077jbd4j15jIISYs2sFdUqx71nM6aUM1Ii7vSrPC3DHJSqDir6bHmLw5KleRVlxMGuKpiQqMYvmukgbobvbXDIkXfFDCSYS2/QuudHZiUZfZ9NRgXbkVSDMxbLylfxfaR6A7xY0DCcQQ7j+0QLFfOOjAVYoo+dHCKxmnfJEv7T0E3MhfG9BS/FDbFtLcpBfI1qOeHSmYw0iZu9A+Q7jhliR+alEztRaCfKK1XFoiYXgJFnCidBzgHzMFKj5iM0InF6uO3CwLLkJnE72YzBC7jEdHxZDH8/U8SHhpwh4pFOoCA5pqu5FpVX34f5iAY1LVjc4hX91tX3gTKNIQFBMpMiiNZA32iXXrjmWZOeRjRlsWQ0owwrI6HSz9AVlTN/XV/bDwSAEHpWPKAhf9QYfwb+Jzm05t8j4tw3Xammy/Q9Y8dNchLyxje6LoQg+1oQI X-MS-Office365-Filtering-Correlation-Id: fe7b8629-41ad-4acb-5dfe-08d42724be07 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001); SRVR:BN1PR07MB199; X-Microsoft-Exchange-Diagnostics: 1; BN1PR07MB199; 3:t8E2yqpNp7OHcupiy7F1WHGxWBsQnCXAFWHFbXLf9KuIuChh/n2RWMItwwL6HoGWOTbFGv6DskPQi+f8a4JVkS2T/eHZbllodxkeP0q/DuidEmLFIegfiv3iHQkKPsMmEHW8WTH2lcL0x/byBEBRbcoPbu6Sr3WCUg7hr4riARo+3QkHd/AeUhT+Sbqct5p62JE9/0myNQto3RD8rPc8YcmDUDSZnubhzdF39w4EUWV4/3SMcSYzvbAqfzJR90354YOhXLGO+kHMM1UOqS9A7O/7BdGd4z1YimMicB1CYSPIEpQjfHFWY5W1qFapkhPKMqE5wwdI5x2lKaRbgkvM5tQeXXIlq6tJgPe7deMf8wjUsMuinl6Da9pbkTX1E939; 25:eJf5rDY9e6cuB6Jeg6seK8Li74VZ+QxktFZYQsNn50gq8t3mfwcD984UD0GRGCSVKMeQOvpMJs6HzTTt3uROFOadwKKfyT61ySv7OSnJatBzk6gJ2FvS6cijv/J0k1fwvbszLfWBlU0jEjBjoVzCvMD7su/mNuauudpkbDXSjsBFbey+PVXXRKqoioech7qik19SKLh4WsMY6gKiO3mgQDBMqUlRCA1w54NEUKeChXZV2j9htoXqKG7nLLwnwA6StJYNKJ+NFYrSu1H7HwRfwIpn6cDsrYfSGOnCMSiZ7Ndqjmw5yYSx9fYtXwSXz8KAUYRmVG8ZxQ+Sh1IbykNQES0fC+0hOOMRhxNeb2fqOyquLgX9GQixe5IaAGM8AXLNPnmulEHpgPrIVJJD90QPzzePhtDqnHd11T87BEa/5tYWl81iqD2SVkYUD1VvUofYF3nnMyNOHTGcEOvOvzOKJw== X-Microsoft-Exchange-Diagnostics: 1; BN1PR07MB199; 31:7ztLLfx10/bhIHLCxPDMcWkGH6Gy2FWO3TJWLxMhX5ZldUAI5skWKD20ac7//lqvleHNJtHbvKIu+b3J3RdeYlzFC0TXiFimgiZi0N8qbJZxPlnZ5xtKOjVln30rqBtJfqtLlJ0H+QidTQtZy30KuBzJD0lbEj+8J7yaLC5huSMTMiP4qjFpXHrpRH5RdlSLqRQN34ua62dD+zK+zjnPU7z4qcIP4YrArASood+gKYOd48JMBzDJtxFUeus79G72ZaZ+pVvi/7yDmXe94rFMWw==; 20:fxqU/339Sn+iLZ1c+2VwldZ27UWqL5D8ocFYlOEUzT26VmF8pbNs8elGla8D8wYYbRG1dVZgQAhxTR0lJzl0ef2gOZwXRymekHsqyaCahrNOOouFNvnE744bSunCA1y7/ySfoqdzUvj/3BzZ7jHwL+LkuOqtoboXaKGUVQ4uL6o4OKqpTX4mQMyCqMwJKPRNKft8OHW6EHADWQ9ujlayiK6mFtf+GXSqeklZ+bfzfxt4T1vk4lGeSCNlfsSE8mjM1M8/5RboEIUkUhR8k3fr+34tZJWnm7/VuTfOUtA0bmDVcguPdTjZ+sZ3v4p4Y6xhKT7WDYfMeBv1sG9ftOKZHFvjvsRC9+CytNJFeMXt3rHVSAL+osltZ3K1kyzILA7wd7sLlWnQl5UBlir2l+DN+yOnUbCgPl2Ienqm+tKCAorJEX72JDULOIYNTkwFYToYJN3dILr7k0R+6bxRAEcJe9ac5e5ERMgu89nj5LIhkMjkAd4nnV9USB4yChxCyWRJ X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040375)(601004)(2401047)(13017025)(13018025)(13015025)(13024025)(13023025)(8121501046)(5005006)(3002001)(10201501046)(6041248)(20161123560025)(20161123555025)(20161123562025)(20161123564025)(6072148); SRVR:BN1PR07MB199; BCL:0; PCL:0; RULEID:; SRVR:BN1PR07MB199; X-Microsoft-Exchange-Diagnostics: 1; BN1PR07MB199; 4:uoA6ctpWRJphPsEe8CseIjM8ADlGrYBd/MOSEX0B1jLX91zqIBHDOKSXXSFD+D6ERILo8bo9JW5AE0YLCrF7yc83lysZPGCm9CXK/iYonvh4o97DzGNGHP6aSsVt7Tx8sIQ1bSxV0fjNQ3wa+pNXRzAPqeC8WQbIErL+3IrhgCB17VaHsf7CDCH8KtIKJ6ZPCcjwaUHKr63DyuiwEjnE0W3+ni882Jz2aQQN1Djup8v2i2kSr5qxJMnGzsGOpIdS8NaPRRagJFaBDLvcIAOv7SOFD9Irbv1mu0DJwCUHtQ8ICNXGKopb/sRJz3p3Fkp3LkNJXIWTcWGMUySdc5pn7CnU1HUZR/DeqPQTnZMjCJfAN3k0V3L36feEmIotUmsHIyqp+a/KfxcDHRlncE1PBgtzTNm0PyM/RCSAaz9TGkUib/2apIC/XHsdEFdCCe48YyYAUMwBYhAQRBK5QiDKmLYWT2V3ahI8OF69O46N/Q3c0cHLFoXaL+zsoe/D3iIsCrF5KJ2Dk0KHEsFtBqLN/F+c1b9bVwpB/u8UIDs1aKpo+9CsK3KuZhpnyl8dFylyD08X7xtn0abK+YJo6GgcgdtckCoCSyu/lF5EXXkYqHO8GRYZ3bLUpRHANsKiqQwBgvFyJk8hFFxNo3WCV3nu2oMYFBZB2GhrKb66CXv8JGc= X-Forefront-PRVS: 01604FB62B X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BN1PR07MB199; 23:6XNuuOXWPY7JEb1khj44jz62UDbVZPdmrJ3VvgFdWU?= =?us-ascii?Q?v99/gQXLr5aY1NQXpYSXSniTB7mir6wGThfa2ePvKncAIH9wuxBd5u92THO0?= =?us-ascii?Q?/nZq6chp5s42cPQuJbuUEPYr4Tn66tSORWsCkEcxm8nqjCLehzz5f6Tc7XT/?= =?us-ascii?Q?vyoj/VW1Bcq/MlxvpwYC0jOM7A24GmLdbA4cBo0NlHkMsRw+aFTqXcpUq0WF?= =?us-ascii?Q?JW6YCIy4Efy8tZaJn2l3HKvr/0tDBpH6txdpfekWON0F1i3WeWgvojPqPjJo?= =?us-ascii?Q?PE75yUMeOsGIH1zXRjTUmANSO2U6k2LrQg5DUAKz59rFV84ZvnV6XmCE/6lX?= =?us-ascii?Q?xYVOrf4SxiaIh0VokxjicSC1sfTwlVTmUCwLrU2oOSwTh4JmZE9wSCR0LJg1?= =?us-ascii?Q?XIGMuU9Yhp3h2Qldu+uksdhVePLVaRrLwEVZnWE68n+wdenLcSVBDHRZ5iPT?= =?us-ascii?Q?tOQkxcBSEMBqZS0AKMCeWmf5YVakuKMbVhWCyywGafXVCklLhYf8sgpw9tBc?= =?us-ascii?Q?/lBSEL6QpIo9Ly+1NByt05duEkxTBVtFOjbLaUb04HdbctJXsISWnpY88Oaa?= =?us-ascii?Q?219iOc4f3jyUrGkwkwzhCgoequ01/VV5RrC7Rm0k3P9ODRye1QMp8noygaU0?= =?us-ascii?Q?MUPrfClkyjm4w7+dmXpe2vmqnavxK5tMAkQILEI8DY0ZViIhNAs48YHf0mN/?= =?us-ascii?Q?w2qR0ng0WvBB0+H5A5Ps7WKH+hIQzzUkUBUzloXO/r2JTRtHXMXF6iUGogwZ?= =?us-ascii?Q?d/rH9rQ6uOivedL5dXJL9QzrZcgkXj4CBIWnQgNDJnWjLd28RF1juirmvy+f?= =?us-ascii?Q?6Ug21QD52KLx2lxmDAN/IrnEpzm2nQ0Td133I2EPqnz9Sp6vYJyM94uBRYfp?= =?us-ascii?Q?KFBshOT3zmqq3bEMH4DHWbRPZ7J8IuEXpKlTQ9bVIGX8pqf9Gm8th2YZjfgk?= =?us-ascii?Q?qM+Bkn8yJckI5NMfcdREFqJ0BMQLhzKo+3MbyyWzB7ZPKVXS/UoVa+VvRK0B?= =?us-ascii?Q?ieGaG5vAzTBoFhqeqA44havPnLarzUrFT8RQCB3XDPgNwUbWu977Lx7QZcKQ?= =?us-ascii?Q?qpEgdHy2VqG9xMPMl6440A0S5H8QjVJgJmf4lM07P1vfC263aBaI/6E1Mtrs?= =?us-ascii?Q?q8hvFcn7zJz1/dqlgoIxPT4mokT79iMYSN41OyvUbcvBqTsVN7Gw=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1; BN1PR07MB199; 6:nFfe5bcwgq3ejQntdaSSrD8q9DsYrBXi8JVRUrz4UB/zaVZvFpQYBICDFYELoCYXJCjYH8FVXVERlIXqfX5aZKkc10Ap7qnUJQ26SoeVsjsSQatfcBz4eQ4SsDkAyl7yMH8RqKHGleLl19w5BeJlLMW48l+0Hmd8rbvu7WG5StERppB35gF/50TrirLtkxMK+WPDldX3CQlUpIyqkZTvcIpuHPRvHUPhYfzqAgt3T2/+tbmwY3yecCoenqGZIZIOfx6yO8aW6T3ejV9jxUL46+Z5OZfhgmO8+S79DsYLnFLeRVbrUQhEmXUkkCMLEbU6YtCxX2JOZxjDe05Ckh7prY4EsTNTNjxy8wZpqTSSkXDwbG3CQdg1hJ/t22n/qc6pLBqWOviFQ35KHQzR/f6V/xXpzKpLlYedq80RGza5kA4=; 5:wlH2qNVnnV9QfvQgaatm6VM96nVMTnfzJxaD/gXj3dkDoc3qowG5y0IDnQqTMeoQrzqFPg6b8qpWwLmnj8FasfGFCPRYlhH4Ho6h4fHvOvJbTTi9J0+0jzBovcYqXw7jjGdERjR4VPfJk2jrqj5YfQ==; 24:5V9JpQOHuG9rwmVhhHL+lyJ0UMsIbrV/+hiaohYnt1FriUqIEbaX5664Ms8FcNcNsu/Nfjbr/x318p2FY8NWst0Rc3ojX8cISaChYTpHMqI= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; BN1PR07MB199; 7:j9cxNDBydthzy9fFyfH5l6oSU/7IrtvDQReYYT+YNL4OKkC1HRebs8gdy7u36xtxTtdinrWK+JbyqtHJl0lY/rzUT8lPnlk+jrbpe+ILwaAwnyeJVAGZH1Yyus6c+UzUHssLUVwfey+C30Bqcl9WS2bp0bVs+iTmCw+OIReQlheevbd+ngoEqrPKY4+MK3DjDsQug5wzQOGiPzhJQCPdQ0fTbxyadtO8jkGucUKr4Q7znsvm7XkciD1oYfj2dBNkIluBNaNbpvAmcdCX6GTO4YQc4+3cdHhEan5Cbu9LI01B8+0HI4thA+RSIDl1k/pz6CDWrhH9+ie+B35ZLYuUHmAqtgQkAx4a2IZoCSjgXmxNkCihMDu8s/03HDwkRkbIA1edqeO3hn6K/z58+IbiPgSkydHIlFXg6SU8tB5TWnHxzgOF5Za1Frh4ZUWNDPsTFkrp1QJWjQm3Xi1dkBD5rA== X-OriginatorOrg: cavium.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Dec 2016 09:03:32.3110 (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: BN1PR07MB199 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: Quinn Tran Moving code to from qla_target to tcm_qla2xxx. Signed-off-by: Quinn Tran Signed-off-by: Himanshu Madhani --- drivers/scsi/qla2xxx/qla_target.c | 37 ++++++------------------------------- drivers/scsi/qla2xxx/qla_target.h | 2 ++ drivers/scsi/qla2xxx/tcm_qla2xxx.c | 36 ++++++++++++++++++++++++++++++++++++ 3 files changed, 44 insertions(+), 31 deletions(-) diff --git a/drivers/scsi/qla2xxx/qla_target.c b/drivers/scsi/qla2xxx/qla_target.c index 452ac1d..8ef8219 100644 --- a/drivers/scsi/qla2xxx/qla_target.c +++ b/drivers/scsi/qla2xxx/qla_target.c @@ -3225,7 +3225,7 @@ static void qlt_init_term_exchange(struct scsi_qla_host *vha) /* This cmd was never sent to TCM. There is no need * to schedule free or call free_cmd */ - qlt_free_cmd(cmd); + vha->hw->tgt.tgt_ops->release_cmd(cmd); vha->hw->tgt.num_qfull_cmds_alloc--; } } @@ -3291,8 +3291,6 @@ int qlt_abort_cmd(struct qla_tgt_cmd *cmd) void qlt_free_cmd(struct qla_tgt_cmd *cmd) { - struct qla_tgt_sess *sess = cmd->sess; - ql_dbg(ql_dbg_tgt, cmd->vha, 0xe074, "%s: se_cmd[%p] ox_id %04x\n", __func__, &cmd->se_cmd, @@ -3310,13 +3308,6 @@ void qlt_free_cmd(struct qla_tgt_cmd *cmd) cmd->jiffies_at_free = get_jiffies_64(); if (unlikely(cmd->free_sg)) kfree(cmd->sg); - - if (!sess || !sess->se_sess) { - WARN_ON(1); - return; - } - cmd->jiffies_at_free = get_jiffies_64(); - percpu_ida_free(&sess->se_sess->sess_tag_pool, cmd->se_cmd.map_tag); } EXPORT_SYMBOL(qlt_free_cmd); @@ -3822,7 +3813,7 @@ static void __qlt_do_work(struct qla_tgt_cmd *cmd) qlt_send_term_exchange(vha, NULL, &cmd->atio, 1, 0); qlt_decr_num_pend_cmds(vha); - percpu_ida_free(&sess->se_sess->sess_tag_pool, cmd->se_cmd.map_tag); + ha->tgt.tgt_ops->release_cmd(cmd); spin_unlock_irqrestore(&ha->hardware_lock, flags); spin_lock_irqsave(&ha->tgt.sess_lock, flags); @@ -3847,23 +3838,17 @@ static struct qla_tgt_cmd *qlt_get_tag(scsi_qla_host_t *vha, struct qla_tgt_sess *sess, struct atio_from_isp *atio) { - struct se_session *se_sess = sess->se_sess; struct qla_tgt_cmd *cmd; - int tag; - tag = percpu_ida_alloc(&se_sess->sess_tag_pool, TASK_RUNNING); - if (tag < 0) + cmd = vha->hw->tgt.tgt_ops->alloc_cmd(sess); + if (!cmd) return NULL; - cmd = &((struct qla_tgt_cmd *)se_sess->sess_cmd_map)[tag]; - memset(cmd, 0, sizeof(struct qla_tgt_cmd)); - memcpy(&cmd->atio, atio, sizeof(*atio)); cmd->state = QLA_TGT_STATE_NEW; cmd->tgt = vha->vha_tgt.qla_tgt; qlt_incr_num_pend_cmds(vha); cmd->vha = vha; - cmd->se_cmd.map_tag = tag; cmd->sess = sess; cmd->loop_id = sess->loop_id; cmd->conf_compl_supported = sess->conf_compl_supported; @@ -5138,9 +5123,7 @@ static int __qlt_send_busy(struct scsi_qla_host *vha, struct qla_tgt *tgt = vha->vha_tgt.qla_tgt; struct qla_hw_data *ha = vha->hw; struct qla_tgt_sess *sess; - struct se_session *se_sess; struct qla_tgt_cmd *cmd; - int tag; if (unlikely(tgt->tgt_stop)) { ql_dbg(ql_dbg_io, vha, 0x300a, @@ -5169,13 +5152,7 @@ static int __qlt_send_busy(struct scsi_qla_host *vha, if (!sess) return; - se_sess = sess->se_sess; - - tag = percpu_ida_alloc(&se_sess->sess_tag_pool, TASK_RUNNING); - if (tag < 0) - return; - - cmd = &((struct qla_tgt_cmd *)se_sess->sess_cmd_map)[tag]; + cmd = ha->tgt.tgt_ops->alloc_cmd(sess); if (!cmd) { ql_dbg(ql_dbg_io, vha, 0x3009, "qla_target(%d): %s: Allocation of cmd failed\n", @@ -5191,8 +5168,6 @@ static int __qlt_send_busy(struct scsi_qla_host *vha, return; } - memset(cmd, 0, sizeof(struct qla_tgt_cmd)); - qlt_incr_num_pend_cmds(vha); INIT_LIST_HEAD(&cmd->cmd_list); memcpy(&cmd->atio, atio, sizeof(*atio)); @@ -5277,7 +5252,7 @@ static int __qlt_send_busy(struct scsi_qla_host *vha, /* This cmd was never sent to TCM. There is no need * to schedule free or call free_cmd */ - qlt_free_cmd(cmd); + ha->tgt.tgt_ops->release_cmd(cmd); } return rc; } diff --git a/drivers/scsi/qla2xxx/qla_target.h b/drivers/scsi/qla2xxx/qla_target.h index 7f11e0c..fbc11f3 100644 --- a/drivers/scsi/qla2xxx/qla_target.h +++ b/drivers/scsi/qla2xxx/qla_target.h @@ -739,6 +739,8 @@ struct qla_tgt_func_tmpl { const uint8_t *); void (*clear_nacl_from_fcport_map)(struct qla_tgt_sess *); void (*shutdown_sess)(struct qla_tgt_sess *); + void (*release_cmd)(struct qla_tgt_cmd *); + struct qla_tgt_cmd *(*alloc_cmd)(struct qla_tgt_sess *); }; int qla2x00_wait_for_hba_online(struct scsi_qla_host *); diff --git a/drivers/scsi/qla2xxx/tcm_qla2xxx.c b/drivers/scsi/qla2xxx/tcm_qla2xxx.c index 6e98573..9d1fc08 100644 --- a/drivers/scsi/qla2xxx/tcm_qla2xxx.c +++ b/drivers/scsi/qla2xxx/tcm_qla2xxx.c @@ -327,6 +327,7 @@ static int tcm_qla2xxx_check_stop_free(struct se_cmd *se_cmd) static void tcm_qla2xxx_release_cmd(struct se_cmd *se_cmd) { struct qla_tgt_cmd *cmd; + struct se_session *se_sess; if (se_cmd->se_cmd_flags & SCF_SCSI_TMR_CDB) { struct qla_tgt_mgmt_cmd *mcmd = container_of(se_cmd, @@ -337,6 +338,39 @@ static void tcm_qla2xxx_release_cmd(struct se_cmd *se_cmd) cmd = container_of(se_cmd, struct qla_tgt_cmd, se_cmd); qlt_free_cmd(cmd); + + if (!cmd->sess || !cmd->sess->se_sess) { + WARN_ON(1); + return; + } + + se_sess = (struct se_session *)cmd->sess->se_sess; + + cmd->jiffies_at_free = get_jiffies_64(); + percpu_ida_free(&se_sess->sess_tag_pool, se_cmd->map_tag); +} + +static void tcm_qla2xxx_rel_cmd(struct qla_tgt_cmd *cmd) +{ + tcm_qla2xxx_release_cmd(&cmd->se_cmd); +} + +static struct qla_tgt_cmd *tcm_qla2xxx_alloc_cmd(struct qla_tgt_sess *sess) +{ + struct se_session *se_sess = (struct se_session *)sess->se_sess; + int tag; + struct qla_tgt_cmd *cmd = NULL; + + tag = percpu_ida_alloc(&se_sess->sess_tag_pool, TASK_RUNNING); + if (tag < 0) + return NULL; + + cmd = &((struct qla_tgt_cmd *)se_sess->sess_cmd_map)[tag]; + if (cmd) { + memset(cmd, 0, sizeof(struct qla_tgt_cmd)); + cmd->se_cmd.map_tag = tag; + } + return cmd; } static void tcm_qla2xxx_close_session(struct se_session *se_sess) @@ -1623,6 +1657,8 @@ static void tcm_qla2xxx_update_sess(struct qla_tgt_sess *sess, port_id_t s_id, .find_sess_by_loop_id = tcm_qla2xxx_find_sess_by_loop_id, .clear_nacl_from_fcport_map = tcm_qla2xxx_clear_nacl_from_fcport_map, .shutdown_sess = tcm_qla2xxx_shutdown_sess, + .release_cmd = tcm_qla2xxx_rel_cmd, + .alloc_cmd = tcm_qla2xxx_alloc_cmd, }; static int tcm_qla2xxx_init_lport(struct tcm_qla2xxx_lport *lport)