From patchwork Tue Dec 6 20:30:47 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Madhani, Himanshu" X-Patchwork-Id: 9463243 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 A83C060236 for ; Tue, 6 Dec 2016 20:31:52 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 9B182284DE for ; Tue, 6 Dec 2016 20:31:52 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 8EA5A284C4; Tue, 6 Dec 2016 20:31:52 +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 E99CE284C4 for ; Tue, 6 Dec 2016 20:31:51 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752521AbcLFUbv (ORCPT ); Tue, 6 Dec 2016 15:31:51 -0500 Received: from mail-cys01nam02on0076.outbound.protection.outlook.com ([104.47.37.76]:34256 "EHLO NAM02-CY1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752656AbcLFUbd (ORCPT ); Tue, 6 Dec 2016 15:31:33 -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=bNCMmNEQb9C8IWV60AQ3CvNQ0Dx9bgY0ey0iX9E+fbQ=; b=FfPzeKV43cGE0qcYZruIu6arz0uIaix3ZEUpB527QWs+QRoVlyuDq3trxoXyVZDfWPAweVp+EjpMveAGBmq/DoVNiUJ9SsrsQFcUwLnf27hOSL+kn8O1LW0LlXmLvdtZ0Rql2qBoJgf4AXTW8bFagRHDpgPcE55/ZEVJ8nBQ8vk= Received: from BLUPR07CA0107.namprd07.prod.outlook.com (10.255.223.178) by BN1PR07MB197.namprd07.prod.outlook.com (10.242.216.154) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.761.9; Tue, 6 Dec 2016 20:31:29 +0000 Received: from BN1BFFO11FD006.protection.gbl (2a01:111:f400:7c10::1:118) by BLUPR07CA0107.outlook.office365.com (2a01:111:e400:841::50) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.761.9 via Frontend Transport; Tue, 6 Dec 2016 20:31:30 +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 BN1BFFO11FD006.mail.protection.outlook.com (10.58.144.69) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P384) id 15.1.734.4 via Frontend Transport; Tue, 6 Dec 2016 20:31:29 +0000 X-IncomingTopHeaderMarker: OriginalChecksum:; UpperCasedChecksum:; SizeAsReceived:1142; Count:15 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; Tue, 6 Dec 2016 12:30:55 -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 uB6KUtwT002419; Tue, 6 Dec 2016 12:30:55 -0800 Received: (from root@localhost) by dut1171.mv.qlogic.com (8.14.7/8.14.7/Submit) id uB6KUt8T002418; Tue, 6 Dec 2016 12:30:55 -0800 From: Himanshu Madhani To: , CC: , , Subject: [PATCH 18/22] qla2xxx: Fix slow mem alloc behind lock Date: Tue, 6 Dec 2016 12:30:47 -0800 Message-ID: <1481056251-2310-19-git-send-email-himanshu.madhani@cavium.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1481056251-2310-1-git-send-email-himanshu.madhani@cavium.com> References: <1481056251-2310-1-git-send-email-himanshu.madhani@cavium.com> MIME-Version: 1.0 X-IncomingHeaderCount: 15 X-EOPAttributedMessage: 0 X-Forefront-Antispam-Report: CIP:50.232.66.26; IPV:NLI; CTRY:US; EFV:NLI; SFV:NSPM; SFS:(10009020)(6009001)(7916002)(2980300002)(428002)(199003)(189002)(5001770100001)(189998001)(107886002)(69596002)(6666003)(4720700003)(4326007)(2906002)(92566002)(2950100002)(305945005)(5003940100001)(86362001)(7846002)(36756003)(356003)(48376002)(50466002)(42186005)(33646002)(47776003)(80596001)(101416001)(4001430100002)(8676002)(81156014)(76176999)(50226002)(39850400001)(39840400001)(105586002)(81166006)(5660300001)(39450400002)(50986999)(106466001)(38730400001)(8936002)(39410400001)(626004)(87636001); DIR:OUT; SFP:1101; SCL:1; SRVR:BN1PR07MB197; 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; BN1BFFO11FD006; 1:MxIkMeQfO7knSPClBIxIWUT+t0QX5kEvSbHI8cFEUlj6HO0Oni6SuISl4BEMPwxkJT77deI6eMOoDNbNwL5bPX+5G1I/H+75yZQ2VDaqhFNM/JaRIXA/RWzrnyAHFSAACOBzbA0XWbNHakaUWgqLSKNsKmGFxCxFwNMysiR0A1y89ZTHgiZ2jJsxvGkhduqNXAjJIVkrg5sa6KwBJ81A9QaHqTyOeKBFigtUHq9QTxQNZwzzd9cySaN5rBfBfp1S8bT1GHl1l5DxIaec9L/iSE77Uoj6SxyVjFtUlYoYe6LDOkc8B+oX70w8IZMGqyVtVznUbyaMEAUzc2PA3zaZxCyTBGg0g3nxgWYkgxNIHQlLZjRqHqGwEsghStFXuYx4wkOm4YgTzVIN61q0Rb+Akf8OC8Ha6KWXu2Mxyjmy1OgHb1jm/1ASmgIlChQHnLmq8OOJvKYQxp+PGNCKHB4zGqfCWq4MFXOMC6rTOZnaIjvvLgp/0zFrw9Xsv6ypVbpKCpCqGM2q38IvWtc/+r+eoA== X-MS-Office365-Filtering-Correlation-Id: 4ef82a0f-a670-409b-813d-08d41e16dc34 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001); SRVR:BN1PR07MB197; X-Microsoft-Exchange-Diagnostics: 1; BN1PR07MB197; 3:FA+GF3ChTtKgpfK24b7EgOeKnW1OryLlj157gh7LtAPJnx/KkODWvp0ZkIqy9E7R++O2MnYv4dHu1ndh1N4FZ9UCTiPjYE9ZcNJbCjSJbEOB1ovejVtXWyQsAKU4V1Jo9g8hQw+V6CYfJv7g7pu5gARPPHStHs/ps0I89DnGSRx6TurNtlkP9wPrY8chQOBvbSSUS/h0EOYVtccOiFhoRRPtH+wHLfyd64bj8LlyM/V/Wczokggew2Fx5jwUBkJXecez36z1ZsDAVsDkOEev3UB6HFICHDtGQbq8E6DNMeC1KKWMzhOPrTdqMVWTFkzuciWxzwR1OUNppThSQgmBNnpUi4YzM2F7Ka+gmmNCbLU=; 25:hjlnzd8WMqTKGzM/4zQvKN9r3uGCJYp6dUVmrNKBl/qztHvhDSVyuc12NZ77FFwmDfP97LqCQMCnWXKnNDI+f77WW5A1QJvlVSvHSn5wF8Q7A5f4t7qNvzAS29K2mioTqlFKQyKy0Z8g68vWhiaZM0puZRq4iBP1YF0I9jfZmxi14NjpSWceKxDsmoyKlNFt8rY+7zU8pzrT7RsjD7Gsf1/3/rhz69LX79qdaPJdaMLE3bXpgrR1uBLItG7dHMK890MhqUcLfj9c+t6CytsPhXbpr/O8OO8J6Twk++5KSi2wYeeRVfIL85lzXW5ziL9tEhD9NzoLE+Wo78bv6L9B7+48yMc/sMGsKq4B76ywg4ydoyXAroKv2OAd3hp1p6SS75DpI3g7dv+rNIGlCm+FCtnmEPnepYe/+nAaqihJk+6vNOUvPoSws5Sye9j8etStz1HQCwW8mbs9R2OeqRmZ0A== X-Microsoft-Exchange-Diagnostics: 1; BN1PR07MB197; 31:vbEuqQU6ojaOG+vB9sJ8wAQez3ZxLlsM+67q7OqvHEe4Uh1VyF1NOKkyJT7oyUi8EOTARxa4jih5DXiLFrG19zvXtZoISwlRLmwveEYH/V0K6uSK2/uPz9NWPIyrT00036MuFAONLyFfMchlbnL61iXkCWbTayaxCCmxB7BDkQIz1Hv5U6J1ANr4bPKNmWTWGUZl7pux5EGeng1M3R4aLsWSCL35bsr8GddNmTD3SSIE7ADbz06LJxcGuFOWQ4aEBmQdGEM2SpRRhbvSHDTyHA==; 20:cDhGaED4BOLvniwW927OkPtYAVWR/M2+EMQzcXx/2aAKtK/N9eMNIv+Y9AB0mLNz17dn5cvbnW47190a1DZ5nB4dOtb2pvmgUNowdQO2E6o8N0gv3Py4o5g7DFQTw6FDSbwibfXicswoYcBxUf1zFjHByT+HvFIOhctS/fQm3OsoNrdrqeIBA6UJyIlemiWZduX1i2TUSi7ng+6ObPF0sbzj9mMeLnNQVMxrH0ad/L/gsJXQL4Vfj1FpRIFZ7QPi6BzZzmqCs3kI7d18uTZV1Zd7w5MNAx2HuMvc5zolb1XIt6a7VRpHqoYBJEbmAgHVVLUlTOzbDTv623bPj2LqGfXZbzy9AUXi6FGOPMOEDLkqQDFNKkO7JuwBTbuA7fGCQp4NsU1h9kV2JnrgcJ8rPEio0xX4wMThkOoYaStD1m6FRa48O7TGMWZ6xGaJ6vyMmWM8+GXgKTP7zdU+4MhWMVoUUkSKPhpp86G4LZeV1ZnTecndM8zMWsB7h80Qryqc 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)(13015025)(13024025)(13018025)(13023025)(5005006)(8121501046)(3002001)(10201501046)(6041248)(20161123560025)(20161123562025)(20161123564025)(20161123555025)(6072148); SRVR:BN1PR07MB197; BCL:0; PCL:0; RULEID:; SRVR:BN1PR07MB197; X-Microsoft-Exchange-Diagnostics: 1; BN1PR07MB197; 4:nvx7NPs6WZSqmvhA5rvrDbKsS3Uy+Df4bU5ONTNWzYz1oGsfiYg0uElV9gJb/1a0hcDS5f2ZjItJju5ymltroZB+YtM1T9/KYVzbv6kND7zmH6f0QH7eA+JMObrornbrZ6rZNPiBIG8jP2jK5Y5thZrIS+v33/qcd+97DKSwaF9+D42HIjQRwwgOkVNbDHQV5OTQxEMOvJnAHQbYWE5+OOnaZn7yezc7xLVHN56tIMD7nWkKJcloz+VlAIWz0UY+XLeVw0Px5z9sYIfKSUgQqAeUDhYqbdXCr5OHwx1qDKfx7fCg+Vvk0w97CfarKFbaY9xpHz0oLrHdzk6xoNiyBdC97MDWKStfEmzHCvPxQbtGOp+73NgoW5YMprypLUOaRRuGLgC+4Xs5o0bgm89GomTs70BfUszRzvovvx7HNAeGBuvKE+7XgFIfhoJy8p6as4/kx6N6CiwbbfVsgmWUeB28t4f+K87EfsjKKK2k0WaubfbOYEFX2z1a0n8AHkI6agIm5R9/N8ei9F/IkUw5JHsFjfF7POJAUpmKmp65kccc9DggP0qapnmYMKZWRP7rbEt1+cMp9dAY+51/BcWthzS2e1QbYGK75Y+gLX/i76nZc38C09YE59Mfx7A7qz8kdOYAufnYic6ltLIs/QvX43UxcS+6JQvXIipFkTZqJYo= X-Forefront-PRVS: 01480965DA X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BN1PR07MB197; 23:UBdqgxl4GaauiHCnL0+gjOUIlh/dJ832jcLCkhz5Ob?= =?us-ascii?Q?bS74SoGhvBGPH025VvSyj2bgdTsn8UdhNPTDxzk+eCRrkh6xS79ymYwSnwPR?= =?us-ascii?Q?pwot2caKvBDOYAEL0YQNJTu+SdYxPzkVAuVeMaj0iPwCzvA5spgGKkNj50Gk?= =?us-ascii?Q?3GdG17wx4aPpwCIRCO5roHkwspvfFW/St8GQyiNxRsBjINGS4QBAEMEl5ETz?= =?us-ascii?Q?tQg76dvQbZfsfY2UGeckXu5OWD3X+oiE+NC3zPmZ7b8gEmZ6FuqCNFZkbAVa?= =?us-ascii?Q?+6FV0d/04cdro+1g1AVZu5Isf1aWCtRhXfPcEDxv17Ilb4cYsF9P5B+e4au4?= =?us-ascii?Q?oW6sUwxpYmR9PXpsZbt7T/sMv9F+4U0j4UkQypXRvn02xoNuzSetuectFXBl?= =?us-ascii?Q?GL7VAG+6b6/b9Uisi58wPnvyc50aaqn4D4+R2sHmWY/zLta8che+uy88vhjj?= =?us-ascii?Q?wee7U67zMoeM6EkHYS/aCrYL4elv0aEYGtyHHvFwN2QHHOJCDl8Cr9v7MCd+?= =?us-ascii?Q?F5Df/JXVxWx5uf9quUAIZ/+bZk+wYj+qvHCK5InMVXy0yZO1vyG0yix1WFxA?= =?us-ascii?Q?k9WS45ZRMxvD93HVAvx7IBGG474sXTUtw2yUzHcSi875W74HMn4MUbfbWqll?= =?us-ascii?Q?ShjsQ/lizcpKOgzpP1Y6/yrrlTXqauzMvVpmpCb3+d01VqWW2bVEXHWls6Wc?= =?us-ascii?Q?ayKwgwz7Fh+Cynr7nPuVfR80ANpWXnAKAcM5sJHJaX/ZzQXXz0VNJAN9n9+R?= =?us-ascii?Q?anGzit37hPmO5g3jRO2rk4i7WAq2ndP6YoZu1eadoXj/qqab6ncNYDhMHuV0?= =?us-ascii?Q?ID3oKbbKp2sFVRoXSzWr9tu9leC7WuXF1XJ+c+8qtM+0Fxe/IChRwd2hN4gg?= =?us-ascii?Q?dMLjcs4ZUUCFdr3MT6oKU7pcdizbTaZsMn2jY+3YfP8G4FS2sdDeI/fGCAXc?= =?us-ascii?Q?1VIOojUqfglJD0Zh7ZWbbe9uHpgIbBEDlzQGAOb+SG3NONJPdu5tSnLPh8o6?= =?us-ascii?Q?eLwkoedcxcZGveBWosEa/WHn97EwwzXCfHZORBOMWWRh5RDDeDfyMYvBjTTf?= =?us-ascii?Q?OfcFREoMtDAfaMxxeh904v8ACHI/9QLSe38nqxDcibrpWm58O7y/1kcfUcrv?= =?us-ascii?Q?EcafujUdxw5+e+/vgmPfF9s3HUndiedeywmghzob4HhKI2EqdCbmfrVOyuPj?= =?us-ascii?Q?jErp/qaw0Rjew=3D?= X-Microsoft-Exchange-Diagnostics: 1; BN1PR07MB197; 6:8nzvMXUyLCYnb7+gA+PH14HonNnnd2QSoWd5pgwWGPjtrPFAweTsqq9uNy2lmEIRYpl6VgTsYv9647tyELnqLgbXYAykduqmXbDC9CamqxHzbdu6BrGJ548Yv/IOeIC0wZigWuenh7HKJLGoKpbjHH2HxqX2C7Z36M9pEykNMhAH/kHe5DA66kXkBC/wIFGZabXuGdz+LRrQBamfPeAbOdHlPJbmAXuyc83DNJ0tMpHOx1dDWiGqOt+EUhXFsnEkpFLqVEpa3i6ypunoea/XD+vVHi/j0dWGrFtuv7QbBLAavGWAlY/M0blbdhjx4Ss/5cGFUU5sdbpmh++d0R77Pkv/ACGH3yJEFntUmpe0e6ndslzVXsMPRwtMlBK5MJFwwx5OxD1vF9QUd4MEjQjWXozU0IS3DSWTOLHoc/3oVEU=; 5:i8fPf2w94dCtkaxZu3TqfdJd5GO3zl91PAIGxYGckoGGFK6mod6izzv5hTlPBndOuL00PvB/4S0rAMSy6xf9vIf6M7UI5mlIhg1gR/j5x/aI+LskVsZf3vWiCeanMeuPUDJxl47CcrbhhkXJoATmTQ==; 24:pxW46rAb2WFoREKfp4b4dbOlskw9AT5DxVSw4PTr3iHN3sUL4LMEMDg6cxutZdgXkWnlhbV5jev8GpTextLS2DM0t7wUX2UU/fcXy5ADpKE= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; BN1PR07MB197; 7:yiUsKWg7VD9t0Y6lHwrRaXTROtkdylbYchIwUYfD9R0ANXNOqw2yK22umw1iccgeC3trlPI0LZDq9TJWyAoJGR5mSNHwuoIatVUcYp5HOEWbvnfF0n3r4FDfOjcSu47Q1TEZ6HSA68lVGBYOygkDiBdEFOoCLH95YzBafr/eed1rCVT4M6bxvrd4nZ/1/+OwUodHRf24dqSclVjDf2VV/ad6I19awkSbLndENQVJ52iih+4u6FqON8t3DPuEoDyZtlL0a16Gt/uRgZh8bNiixT2n4bPIUF5HHXqtPYqc51uj8veGNJoOzdwO9iBDXHoSoE5Wpg/HkblWUQTOBaP6tsxeiFIO+YO4yLIG26rwoUN0FKev/0Z7AQ2TzXzVdyfGiK5DVcHac8rKPIhZRz07rYnpQCNSEq5IP5hki3r3Op24PlIaUS56oCMUQqRGk0n685f5xidZVI3GHlRI3DN/2Q== X-OriginatorOrg: cavium.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 Dec 2016 20:31:29.5192 (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: BN1PR07MB197 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 In Some instance following stack trace is seen for slow memory allocation with lock held Call Trace: [] dump_stack+0x6b/0xa4 [] ? print_irqtrace_events+0xd0/0xe0 [] ___might_sleep+0x183/0x240 [] __might_sleep+0x52/0x90 [] kmem_cache_alloc_trace+0x5b/0x300 [] ? __lock_acquired+0x30b/0x420 [] qla2x00_alloc_fcport+0x38/0x2a0 [qla2xxx] [] ? qla2x00_do_work+0x34/0x2b0 [qla2xxx] [] ? _raw_spin_lock_irqsave+0x7b/0x90 [] ? qla24xx_create_new_sess+0x3a/0x160 [qla2xxx] [] qla24xx_create_new_sess+0xc3/0x160 [qla2xxx] [] ? trace_hardirqs_on+0xd/0x10 [] qla2x00_do_work+0x138/0x2b0 [qla2xxx] Signed-off-by: Quinn Tran Signed-off-by: Himanshu Madhani --- drivers/scsi/qla2xxx/qla_gbl.h | 1 + drivers/scsi/qla2xxx/qla_os.c | 35 ++++++++++++++++++++++++++++++++++- drivers/scsi/qla2xxx/qla_target.c | 11 +++++------ 3 files changed, 40 insertions(+), 7 deletions(-) diff --git a/drivers/scsi/qla2xxx/qla_gbl.h b/drivers/scsi/qla2xxx/qla_gbl.h index 2e28b3f..9489a1c 100644 --- a/drivers/scsi/qla2xxx/qla_gbl.h +++ b/drivers/scsi/qla2xxx/qla_gbl.h @@ -143,6 +143,7 @@ int qla24xx_post_newsess_work(struct scsi_qla_host *, port_id_t *, extern int ql_dm_tgt_ex_pct; extern struct workqueue_struct *qla_wq; extern int ql2xmvasynctoatio; +extern struct kmem_cache *qla_tgt_plogi_cachep; extern int qla2x00_loop_reset(scsi_qla_host_t *); diff --git a/drivers/scsi/qla2xxx/qla_os.c b/drivers/scsi/qla2xxx/qla_os.c index 87dc64a..8137238 100644 --- a/drivers/scsi/qla2xxx/qla_os.c +++ b/drivers/scsi/qla2xxx/qla_os.c @@ -4486,8 +4486,9 @@ int qla24xx_post_upd_fcport_work(struct scsi_qla_host *vha, fc_port_t *fcport) void qla24xx_create_new_sess(struct scsi_qla_host *vha, struct qla_work_evt *e) { unsigned long flags; - fc_port_t *fcport = NULL; + fc_port_t *fcport = NULL, *tfcp; qlt_plogi_ack_t *pla = (qlt_plogi_ack_t *)e->u.new_sess.pla; + uint8_t free_fcport = 0; spin_lock_irqsave(&vha->hw->tgt.sess_lock, flags); fcport = qla2x00_find_fcport_by_wwpn(vha, e->u.new_sess.port_name, 1); @@ -4502,6 +4503,8 @@ void qla24xx_create_new_sess(struct scsi_qla_host *vha, struct qla_work_evt *e) pla->ref_count--; } } else { + spin_unlock_irqrestore(&vha->hw->tgt.sess_lock, flags); + fcport = qla2x00_alloc_fcport(vha, GFP_KERNEL); if (fcport) { fcport->d_id = e->u.new_sess.id; @@ -4511,6 +4514,30 @@ void qla24xx_create_new_sess(struct scsi_qla_host *vha, struct qla_work_evt *e) memcpy(&fcport->port_name, e->u.new_sess.port_name, WWN_SIZE); + } else { + ql_dbg(ql_dbg_disc, vha, 0xffff, + "%s %8phC mem alloc fail.\n", + __func__, e->u.new_sess.port_name); + + if (pla) + kmem_cache_free(qla_tgt_plogi_cachep, pla); + return; + } + + spin_lock_irqsave(&vha->hw->tgt.sess_lock, flags); + /* search again to make sure one else got ahead */ + tfcp = qla2x00_find_fcport_by_wwpn(vha, + e->u.new_sess.port_name, 1); + if (tfcp) { + /* should rarily happen */ + ql_dbg(ql_dbg_disc, vha, 0xffff, + "%s %8phC found existing fcport b4 add. DS %d LS %d\n", + __func__, tfcp->port_name, tfcp->disc_state, + tfcp->fw_login_state); + + free_fcport = 1; + } else { + list_add_tail(&fcport->list, &vha->vp_fcports); if (pla) { @@ -4527,6 +4554,12 @@ void qla24xx_create_new_sess(struct scsi_qla_host *vha, struct qla_work_evt *e) else qla24xx_async_gnl(vha, fcport); } + + if (free_fcport) { + qla2x00_free_fcport(fcport); + if (pla) + kmem_cache_free(qla_tgt_plogi_cachep, pla); + } } void diff --git a/drivers/scsi/qla2xxx/qla_target.c b/drivers/scsi/qla2xxx/qla_target.c index 54a5337..8a4b506 100644 --- a/drivers/scsi/qla2xxx/qla_target.c +++ b/drivers/scsi/qla2xxx/qla_target.c @@ -49,13 +49,12 @@ module_param(qlop_mode, charp, S_IRUGO); MODULE_PARM_DESC(qlop_mode, "Determines operating mode. Possible values: " - "\"exclusive\" - initiator mode will be enabled on load, " - "disabled on enabling target mode and then on disabling target mode " - "enabled back; " + "\"exclusive\" - Initiator Mode will be enabled on load. " + " Target Mode can be activated when ready. Only one mode can be active at a time; " "\"tgt_mode\" - Target mode only. Initiator mode will never be enabled; " - "\"dual_mode\" - Initiator Modes will be enabled. Target Mode can be " + "\"dual_mode\" - Initiator Modes will be enabled on load. Target Mode can be " "activated when ready; " - "\"ini_mode\" (default) - initiator mode will always stay enabled."); + "\"ini_mode\" (default) - Initiator mode will always stay enabled."); int ql_dm_tgt_ex_pct = 50; module_param(ql_dm_tgt_ex_pct, int, S_IRUGO|S_IWUSR); @@ -133,7 +132,7 @@ static struct fc_port *qlt_create_sess(struct scsi_qla_host *vha, /* * Global Variables */ -static struct kmem_cache *qla_tgt_plogi_cachep; +struct kmem_cache *qla_tgt_plogi_cachep; static struct workqueue_struct *qla_tgt_wq; static DEFINE_MUTEX(qla_tgt_mutex); LIST_HEAD(qla_tgt_glist);