From patchwork Fri Jan 8 16:51:46 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bart Van Assche X-Patchwork-Id: 7987711 Return-Path: X-Original-To: patchwork-linux-scsi@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork2.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.136]) by patchwork2.web.kernel.org (Postfix) with ESMTP id F18A8BEEE5 for ; Fri, 8 Jan 2016 16:52:03 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id B8C00201C7 for ; Fri, 8 Jan 2016 16:52:02 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 29EA620122 for ; Fri, 8 Jan 2016 16:51:59 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754794AbcAHQv6 (ORCPT ); Fri, 8 Jan 2016 11:51:58 -0500 Received: from mail-bn1bon0057.outbound.protection.outlook.com ([157.56.111.57]:44992 "EHLO na01-bn1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751076AbcAHQv4 (ORCPT ); Fri, 8 Jan 2016 11:51:56 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sandiskcorp.onmicrosoft.com; s=selector1-sandisk-com; h=From:To:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=xJdj3RZHzcIKQrnC/hU4uDbmk9FftJIycqPYL3lHe/w=; b=Ne+LPFZ2BxzW0Q5Rj30nWcdwd1aWCC1wT6U8R7Fr/KkI1h5rtc6iRX4Y+TjgR+hsQveMWd30mXlYFZHvGvL/PGWg42Hxs/IjKd/UbN5nt4U1PLYScYOH50V8xt299wqeDtAMlNc/2+sxYETgdYE53Rj09fQUbPyJM4fVsCzAZuo= Received: from BY1PR0201CA0009.namprd02.prod.outlook.com (10.160.191.147) by DM2PR0201MB0830.namprd02.prod.outlook.com (10.160.95.151) with Microsoft SMTP Server (TLS) id 15.1.361.13; Fri, 8 Jan 2016 16:51:54 +0000 Received: from BL2FFO11FD011.protection.gbl (2a01:111:f400:7c09::108) by BY1PR0201CA0009.outlook.office365.com (2a01:111:e400:4814::19) with Microsoft SMTP Server (TLS) id 15.1.365.19 via Frontend Transport; Fri, 8 Jan 2016 16:51:53 +0000 Authentication-Results: spf=pass (sender IP is 63.163.107.173) smtp.mailfrom=sandisk.com; hansenpartnership.com; dkim=none (message not signed) header.d=none; hansenpartnership.com; dmarc=bestguesspass action=none header.from=sandisk.com; Received-SPF: Pass (protection.outlook.com: domain of sandisk.com designates 63.163.107.173 as permitted sender) receiver=protection.outlook.com; client-ip=63.163.107.173; helo=milsmgep12.sandisk.com; Received: from milsmgep12.sandisk.com (63.163.107.173) by BL2FFO11FD011.mail.protection.outlook.com (10.173.161.17) with Microsoft SMTP Server id 15.1.355.15 via Frontend Transport; Fri, 8 Jan 2016 16:51:52 +0000 Received: from MILHUBIP04.sdcorp.global.sandisk.com ( [172.22.12.162]) by milsmgep12.sandisk.com (Symantec Messaging Gateway) with SMTP id AE.13.02821.529EF865; Fri, 8 Jan 2016 08:51:49 -0800 (PST) Received: from milsmgip11.sandisk.com (10.177.8.100) by MILHUBIP04.sdcorp.global.sandisk.com (10.177.9.97) with Microsoft SMTP Server id 14.3.248.2; Fri, 8 Jan 2016 08:51:48 -0800 X-AuditID: ac160a69-f797e6d000000b05-11-568fe925d036 Received: from [10.50.231.66] ( [10.177.8.100]) by milsmgip11.sandisk.com (Symantec Messaging Gateway) with SMTP id E0.E1.08831.229EF865; Fri, 8 Jan 2016 08:51:48 -0800 (PST) To: James Bottomley CC: "Martin K. Petersen" , Christoph Hellwig , Johannes Thumshirn , Dan Williams , Sebastian Herbszt , "linux-scsi@vger.kernel.org" From: Bart Van Assche Subject: [PATCH] Separate target visibility from reaped state information Message-ID: <568FE922.9090004@sandisk.com> Date: Fri, 8 Jan 2016 17:51:46 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.5.0 MIME-Version: 1.0 X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrDLMWRmVeSWpSXmKPExsWyRoxnka7qy/4wg0v3WC2mT73AaLFy9VEm i82rL7FYbOznsHjcNYPVovv6DjaL5cf/MTmwe3z4GOcxbdIpNo/Fe14yeey+2cDm8fHpLRaP zaerPT5vkgtgj+KySUnNySxLLdK3S+DKONJ+kq3grVFF4+EnzA2M/zW7GDk5JARMJB60XWWF sMUkLtxbzwZiCwmcYJRoeuHWxcgFZG9nlLjV0cMG0/C+5xojRGIzo8TCBVsYQRIiAtYSt2ac ZAJJMAv0MElcmfWKCSTBJmAk8e39TBYQW1jAU+L7mnZmEJtXQEvi/oRmsDiLgIrE4SlTwOpF BSIkfmxYwghRIyhxcuYToBoOoKGaEut36YOEmQXkJba/ncMMsktC4CSrxOpnD1ghzlaXOLlk PtMERqFZSNpnIbTPQtK+gJF5FaNYbmZOcW56aoGhkV5xYl5KZnG2XnJ+7iZGcJxwZe5gXDHJ /BCjAAejEg8vx46+MCHWxLLiytxDjBIczEoivBpn+8OEeFMSK6tSi/Lji0pzUosPMUpzsCiJ 81q3qIUJCaQnlqRmp6YWpBbBZJk4OKUaGF1+aKqk9h6ddusbS63lZnGLGe+X1G5YM+96QmlV y9OvfD/cnn4P4eMpU3lSt5T18OdHgdZ9YjnrZ8u723IrH9y9fJtZ8NN5QoLHLgd2KjWkHdi/ Lblv/rQq1Z1JnUcXOH6e+GJT7fQHErrSt5dI7DtYVLLhRmxz/5VLhex3+osb102+WJUccU2J pTgj0VCLuag4EQCI30ktjwIAAA== X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrCJMWRmVeSWpSXmKPExsXCtZEjRVflZX+YwZ93ehbTp15gtFi5+iiT xebVl1gsNvZzWDzumsFq0X19B5vF8uP/mBzYPT58jPOYNukUm8fiPS+ZPHbfbGDz+Pj0FovH 5tPVHp83yQWwR3HZpKTmZJalFunbJXBlHGk/yVbw1qii8fAT5gbG/5pdjJwcEgImEu97rjFC 2GISF+6tZ+ti5OIQEtjIKHG55zJYQkTAWuLWjJNMIAlmgR4miclrjrOAJNgEjCS+vZ8JZgsL eEp8X9PODGLzCmhJ3J/QDBZnEVCRODxlChOILSoQIfFjwxJGiBpBiZMzn4DVMAuoS/yZd4kZ wpaX2P52DvMERt5ZSMpmISmbhaRsASPzKkax3Myc4tz0zAJDQ73ixLyUzOJsveT83E2M4HDl jNzB+HSi+SFGJg5OqQZGT5fKWz/emO63WSw8i3/TgoLaszYfX2X53DrPc8BPymSvWaFx3Op/ C94d3pzGMV3h3zbnPPa3x5492bEtt5Bn7pLyAxLcpfMYc7SfnWY1nbXt+rIFWQZOQvdCuUxr Vy8qP/zi/MSnvak5aVFL/639Hvh+z5SgQyVr+b9cyri+++DVt0eilk/K9VBiKc5INNRiLipO BACcFEfEBwIAAA== X-EOPAttributedMessage: 0 X-Microsoft-Exchange-Diagnostics: 1; BL2FFO11FD011; 1:ud23UZiN/QbLxzbGJMyQvCoSbnegDYrtvIB8Qk5YIlgX/dGj8Nrdv4q6Y9qW0xR2b3bUtV/IzQ8iTunjFxaxUOeTPAuHu7aoO/iupb/Bkwx5yHmJXzo4NraxbR24/SHmqHNe9prMwj7mvx6FbSVqY4RvxA60ja4KrDNawpybxcfQMG5cl4HCSM0CvxA898sqZQbsGgOkEgsxGq7WtwZcBWaH8DUdsZaAA5+FxFPO03SIbVWUWRSmaOFJhtvDcVH6UJjKS3qo6CKflEN7OC0svBVldfM8gEEu0qWKwgaryjgq9Hg8fE0NGhlinSofjCvklpqD+JWzR36eh/k+OhL0i+a4gMfSKFbhfCVtjhQvnPaGTMcSZ8tF0dtKjoL/G0zr X-Forefront-Antispam-Report: CIP:63.163.107.173; CTRY:US; IPV:NLI; EFV:NLI; SFV:NSPM; SFS:(10009020)(6009001)(2980300002)(438002)(199003)(51234002)(189002)(23676002)(19580405001)(87936001)(80316001)(50986999)(65816999)(50466002)(59896002)(64126003)(110136002)(87266999)(83506001)(5008740100001)(5001960100002)(229853001)(189998001)(230700001)(19580395003)(106466001)(69596002)(586003)(33656002)(65806001)(47776003)(54356999)(77096005)(65956001)(92566002)(81156007)(1220700001)(4326007)(86362001)(575784001)(2906002)(97736004)(36756003)(4001350100001)(1096002)(7059030); DIR:OUT; SFP:1101; SCL:1; SRVR:DM2PR0201MB0830; H:milsmgep12.sandisk.com; FPR:; SPF:Pass; PTR:InfoDomainNonexistent; A:1; MX:1; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; DM2PR0201MB0830; 2:H6JLuhAORcjqHowErOAMWEEmB0GlVl24YVvDmSqJLxJEe+vCnk9yZ0ZcWmtNi0/5P25XI01zO+26wpU0MezoCk08uco7kAcmTHS/tLmt7MlAFatpjAlaFAQD+1mkALxQ+Ua/fN+oll5LGCBwJG0KAQ==; 3:VoAK7X6I5Xs9MFxCIWIvsO0u0E3PGOozw5yaKkurUbDvmgO77/C5PSLFuyNKvMQ3gqWOC8gnPR2fGuXHpXauK4VJugW+PtWKiv2PbiSRFlGjvUcHEP2WCWYTE5yVWHyzIC32bTYlnV0G4Dj9ydDGZGg9q1uLNCAKDlcQFLWJyGV5iONCya6/vm4q5wBzHIf63P+gqKpRucKuECiCu2XsjQXV+9IEtw5JpxfFSWikKsws6kBLCseqgrNKFAxnfV2Na+poEzIbIFYChw+EZEssDw==; 25:XEehthczBxxL+U1RUvvPK6PD6qyPo+JR/2vIuSzG6vWvzT90olUkfYSV0ytCdXEjsYrrvQn6qk82+WUCFU0s++anN4cJwwDhbMLRvrcWkFuEXAyqDXzuGS1duNxN0NkWgYYgwNjokJ5rvTuxySAguT7PLwOCWF55ZrQ4j+YlazwZcqkN6fC51CvunfvAu2B2orbAG+Za5qJHcr5Ig9bCOlFdXaxx2zBzklTYq3n1h5HG+WU+MpYwvVulmfw+hG0b X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(8251501001); SRVR:DM2PR0201MB0830; X-MS-Office365-Filtering-Correlation-Id: 0439b7de-29f3-4940-7416-08d3184c02c8 X-Microsoft-Exchange-Diagnostics: 1; DM2PR0201MB0830; 20:wOiCWCv8uyAGDyeZZCXWqfCffj/PWaAvq3geL/JHg41s7tBg/WOwAMELkTduqDJlq5WVVwLIsQvreKxiOqWi7011pprs8koKSPPHeHc+vNdcOItACnGUQwFHLEIYcvxMxcbl66K9OImEf43zhbzs6YDEfaGicgTxHWSMGSuFLdsM/CyQB3f7g8uP24lhV8lXZmytV3gjq48MO/xoLx0ieOnTwaaafLzdhmr6166ccHPs2p2dJXEQVYoSTh4itrSPlRCNg8ppLmiH8ODgQAjDOdNsh2w53TPW8zME1BSBYWCh4k1Z/7/2pmFzVq2vQ9lvUy/pEis/fFSQwB55vpLfpG26RlsNpFEFX18UzPTU3A+bvV8XTecVdiqIfHI1EKmmONztZsqcPkscWLSYF/YZrzbiCU0/lNtF5RO78WwZxKBUDhIhwtpP2b9HWMITnT3cloS4JJBVSoypfM5H+Py8Ouf8/h8g7Dq27uJmqO621lQttd1xCiVwQeOyg4ncIXO2 X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(42932892334569); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(601004)(2401047)(5005006)(8121501046)(13015025)(520078)(13017025)(13018025)(10201501046)(3002001); SRVR:DM2PR0201MB0830; BCL:0; PCL:0; RULEID:; SRVR:DM2PR0201MB0830; X-Microsoft-Exchange-Diagnostics: 1; DM2PR0201MB0830; 4:nliteOPLxGjbT7IYamev5P52QzDXhzf4tWCratTfDbYUO8nZVayoi+6nG02jmFNwWFVGyYv5jmg8PWQ46eTvTbghwgT5yFJ3TiaRKykNEz14ClFX4MKwJNAgM8tRK48iJcF89zn6F3rMqre6F3gWbAO5cVNNO61GR1kGdHUz+w473JqQw2DI/5JLPsT29YHPl1Zem5KJrjRy4AISb/HcKBbRvI4NuKS+zar1Ycif4BzHqFkuFNmXxQeEuiaP40IeS159pkM5P15F3CqOBU0koxtvZuoNj1mymtX3JBmggXQjZAiibR2tGI2Z/Q9S0L1txxjmq6i2NNAzNgrkPDz0xXFwaVUgHjj/T62nklzEd5/zvO1pY/rSdbLYhgnpEAYiAXuxI9mSgFdtnUv5nJsVh6NIg8GlZ6dkrSzuf71s+6iFziOmjGXip+NF5NVnu9twZdaozu6xS5foX3x2FaddqtMKcgFaiiBAq/MdjNDuSho= X-Forefront-PRVS: 0815F8251E X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtETTJQUjAyMDFNQjA4MzA7MjM6Slp3aURNemRpNXJreU5ObUpaaVZwZ1dG?= =?utf-8?B?bzlIelRXbENQZFA3TnlGV21nR2hnSUtVUHU5V3VDU0dIcVRVajd2bjFqSFRT?= =?utf-8?B?L0Q4MTYrT0dzaWthMk9BVWZieXNybGJKMitzL0FJdDQyK2dzUVphRGxOQ2to?= =?utf-8?B?clMrMS81em5ld1FlcTAya2ZaMURNWDNKeUtsbmIyUVNhZkd6YVU1NU1XVFJL?= =?utf-8?B?TSs0bktUY2RCQmNFSW8zOHYyUzNKUGM5LzFiSnZadkVMdXFTSTRkSEN4cFNQ?= =?utf-8?B?dWMybUxRRmxPY01DVGh2TDVGTWdhZExrOGxraFRnanRVVzN4YUNFRkc2Y3E0?= =?utf-8?B?Ulp3bGk4V1owZFVQcFhQNWgxeEFlbVAxRUJjOU1KNUk0UFBKRTZqdEtualR5?= =?utf-8?B?d3NteGQwSHdLQ1RuRnA4a2dYMmJMTFhzQkFkcms5cXduOEJSZThlU2poU3lQ?= =?utf-8?B?UXJQTk5NWUhvZ0c3NWltZ1pBR2IvOXNCSDZLNzI4ZHhHWTlpbm4ySFZjSUpv?= =?utf-8?B?eDdJNHp0UFZjbyszMlRvMUxtUkQ4KzJ0TlJXODBYSG5TNTNCaU85M2NkTnJ1?= =?utf-8?B?WWRkVWFVYnp4WElVZ1RxUHZMVzVPSDEzVmpIazNnNGg5OEZvQ241dWdmeGo2?= =?utf-8?B?S0F0amQvbmJSMnlGV1U0UHNXVXMxS2VjMVFpSHEwMk41bkxvVE1tK2hHZ3Br?= =?utf-8?B?TEJYVTJUMTk5M1YwOUIwS2crR2l3SnBjUldDSncvOXhGRnhLOTFldk1GQXov?= =?utf-8?B?c1pMZ3lYVmZYbW5qSStUcHNoRXNqTVNkYjYwcGpaTWJhZloraEk4VU82Y1V4?= =?utf-8?B?TFRQN3Z4MnExeTdzWFdLVHM5RnNPQUxIUFdMSDNNbFhvblM2UHo2Rm42TUZi?= =?utf-8?B?Q3lRaU1NYVJaRkw0ODRoUHVxZWlhY05aUWFOSk9ZZHZSV2tPVVJlTkpJMmg0?= =?utf-8?B?cnVsSCt6alFaOTRLNENCRFA0L2xVbUVDVmZOS2ZtOVdQOElXYmR0VFJQb1N3?= =?utf-8?B?RzlIZkpyUkpNazV6VlJ0anBlZ0tKamhlVTQ0RzNaTVBJRzIzOU9DNEVSMzgw?= =?utf-8?B?ZmI2YkVRdHJObHVGaFp4Yk5pSzVzQ1dLOWJuZHBZb3BrQzZpREZqeEV3bVA5?= =?utf-8?B?UzA1SzRXL1ppZnZhdW1jZ1B4N2pacHBOTU9QeEpwNXh2SWFzUG0xaWYyWnpL?= =?utf-8?B?ME1mUDlua0w5UGN3cmZjdEE5Z2cwbFNjNEVibVVTV3NmTVdwKzQ4M1BiL3h4?= =?utf-8?B?eEY2UmFibW1CeXVUTFVOSG9GRTRJQ2VDQTkycmliMXJMYzNzS1B1SE51c0E1?= =?utf-8?B?aW1ySkRWTHZjMTYyeDkxOEk3NW5HMlkzQWxBMmZKNm80dDJiYmNubHpEaC9D?= =?utf-8?B?YTlSS2dNWkpKZ2FKVWdDU1VvTVVHMTVHclVEbGZ2c2IxQ0NKbkFwc3JSZVp0?= =?utf-8?B?WVpiSW1Jb0RKRjNFWi93dm9VNjVJSkQ1MnEyR2ZZdllVZGZOUjJ3MDlQWmlh?= =?utf-8?B?aHpIbU80SFR0T0xTSzB0dUUwenNLSDQvamNtOEYzbXErWDMrTDdYQTdBQzhM?= =?utf-8?B?ZnBKR21LZHlKQ29kelBlRWRBVkg1djM3Zz09?= X-Microsoft-Exchange-Diagnostics: 1; DM2PR0201MB0830; 5:lbQyz9M36F3ts+t5li8wnMbztHfPvIR0T8jxl1dBaS7zPYoYTYw6pk1+5mx+hDNKR28UVDfV7cWKSFzP3ZETsGktMR3a1QNaNtQ+PjK8gai77THHblYj4JUYF/VeQ0UVnh4gKW5JdkCWrLv5PeEAlA==; 24:K3iykEOkf0BmH80vlRoNL5IxXZoWGJG00/bSTsjF7vq94bthiFEgr8ret9GIwg3XDCoExRLR+EKlTrePo05lXPKkTSk6bT2Bhz4+nQGm1LY=; 20:pTwfC9uFYVSo7WnhPpEJrY5agE5p5VAq7xdVk9rV7TuRqUHTf9I70OQK7r71ma0igQuTKEnHwqEAZRFt/lkBvmBKl9t9UGXoRv4nG0RmItNcoPsuMgtHhP094ByhD97Z8bfILclCAaBHJEqRxgZZmtRcaVOSzNaOoc905U1ZT+s+sse3S9owgIXf2Q3GBTqSiW2/tbboeU1deVxBe5dbglRVmHBfJ/lnQmQA3AN4rQL0IJ7EyZUzvdDqeCq6h55/ SpamDiagnosticOutput: 1:23 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: sandisk.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Jan 2016 16:51:52.5780 (UTC) X-MS-Exchange-CrossTenant-Id: fcd9ea9c-ae8c-460c-ab3c-3db42d7ac64d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=fcd9ea9c-ae8c-460c-ab3c-3db42d7ac64d; Ip=[63.163.107.173]; Helo=[milsmgep12.sandisk.com] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM2PR0201MB0830 Sender: linux-scsi-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-scsi@vger.kernel.org X-Spam-Status: No, score=-6.8 required=5.0 tests=BAYES_00,DKIM_SIGNED, RCVD_IN_DNSWL_HI,RP_MATCHES_RCVD,T_DKIM_INVALID,UNPARSEABLE_RELAY autolearn=ham version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Instead of representing the states "visible in sysfs" and "has been removed from the target list" by a single state variable, use two variables to represent this information. This patch avoids that SCSI device removal can trigger the following soft lockup: NMI watchdog: BUG: soft lockup - CPU#1 stuck for 22s! [kworker/1:1:29] CPU: 1 PID: 29 Comm: kworker/1:1 Tainted: G O 4.4.0-rc5-2.g1e923a3-default #1 Workqueue: fc_wq_4 fc_rport_final_delete [scsi_transport_fc] Call Trace: [] scsi_remove_target+0x167/0x1c0 [] fc_rport_final_delete+0x9d/0x1e0 [scsi_transport_fc] [] process_one_work+0x155/0x3e0 [] worker_thread+0x37/0x490 [] kthread+0x9b/0xb0 [] ret_from_kernel_thread+0x21/0x40 See also commit bc3f02a795d3 ("scsi_remove_target: fix softlockup regression on hot remove"). Reported-by: Sebastian Herbszt Tested-by: Sebastian Herbszt Fixes: commit 40998193560d ("scsi: restart list search after unlock in scsi_remove_target") Signed-off-by: Bart Van Assche Cc: Christoph Hellwig Cc: Johannes Thumshirn Cc: Dan Williams Cc: stable Reviewed-by: Johannes Thumshirn --- drivers/scsi/scsi_scan.c | 31 +++---------------------------- drivers/scsi/scsi_sysfs.c | 7 ++++--- include/scsi/scsi_device.h | 9 ++------- 3 files changed, 9 insertions(+), 38 deletions(-) diff --git a/drivers/scsi/scsi_scan.c b/drivers/scsi/scsi_scan.c index 054923e..c455a88 100644 --- a/drivers/scsi/scsi_scan.c +++ b/drivers/scsi/scsi_scan.c @@ -314,7 +314,6 @@ static void scsi_target_destroy(struct scsi_target *starget) struct Scsi_Host *shost = dev_to_shost(dev->parent); unsigned long flags; - starget->state = STARGET_DEL; transport_destroy_device(dev); spin_lock_irqsave(shost->host_lock, flags); if (shost->hostt->target_destroy) @@ -379,19 +378,15 @@ static void scsi_target_reap_ref_release(struct kref *kref) struct scsi_target *starget = container_of(kref, struct scsi_target, reap_ref); - /* - * if we get here and the target is still in the CREATED state that - * means it was allocated but never made visible (because a scan - * turned up no LUNs), so don't call device_del() on it. - */ - if (starget->state != STARGET_CREATED) { + if (starget->is_visible) { + starget->is_visible = false; transport_remove_device(&starget->dev); device_del(&starget->dev); } scsi_target_destroy(starget); } -static void scsi_target_reap_ref_put(struct scsi_target *starget) +void scsi_target_reap(struct scsi_target *starget) { kref_put(&starget->reap_ref, scsi_target_reap_ref_release); } @@ -437,7 +432,6 @@ static struct scsi_target *scsi_alloc_target(struct device *parent, starget->can_queue = 0; INIT_LIST_HEAD(&starget->siblings); INIT_LIST_HEAD(&starget->devices); - starget->state = STARGET_CREATED; starget->scsi_level = SCSI_2; starget->max_target_blocked = SCSI_DEFAULT_TARGET_BLOCKED; retry: @@ -498,25 +492,6 @@ static struct scsi_target *scsi_alloc_target(struct device *parent, } /** - * scsi_target_reap - check to see if target is in use and destroy if not - * @starget: target to be checked - * - * This is used after removing a LUN or doing a last put of the target - * it checks atomically that nothing is using the target and removes - * it if so. - */ -void scsi_target_reap(struct scsi_target *starget) -{ - /* - * serious problem if this triggers: STARGET_DEL is only set in the if - * the reap_ref drops to zero, so we're trying to do another final put - * on an already released kref - */ - BUG_ON(starget->state == STARGET_DEL); - scsi_target_reap_ref_put(starget); -} - -/** * sanitize_inquiry_string - remove non-graphical chars from an INQUIRY result string * @s: INQUIRY result string to sanitize * @len: length of the string diff --git a/drivers/scsi/scsi_sysfs.c b/drivers/scsi/scsi_sysfs.c index 21930c9..532c062 100644 --- a/drivers/scsi/scsi_sysfs.c +++ b/drivers/scsi/scsi_sysfs.c @@ -1000,7 +1000,7 @@ static int scsi_target_add(struct scsi_target *starget) { int error; - if (starget->state != STARGET_CREATED) + if (starget->is_visible) return 0; error = device_add(&starget->dev); @@ -1009,7 +1009,7 @@ static int scsi_target_add(struct scsi_target *starget) return error; } transport_add_device(&starget->dev); - starget->state = STARGET_RUNNING; + starget->is_visible = true; pm_runtime_set_active(&starget->dev); pm_runtime_enable(&starget->dev); @@ -1198,10 +1198,11 @@ void scsi_remove_target(struct device *dev) restart: spin_lock_irqsave(shost->host_lock, flags); list_for_each_entry(starget, &shost->__targets, siblings) { - if (starget->state == STARGET_DEL) + if (starget->reaped) continue; if (starget->dev.parent == dev || &starget->dev == dev) { kref_get(&starget->reap_ref); + starget->reaped = true; spin_unlock_irqrestore(shost->host_lock, flags); __scsi_remove_target(starget); scsi_target_reap(starget); diff --git a/include/scsi/scsi_device.h b/include/scsi/scsi_device.h index fe89d7c..f11c794 100644 --- a/include/scsi/scsi_device.h +++ b/include/scsi/scsi_device.h @@ -236,12 +236,6 @@ scmd_printk(const char *, const struct scsi_cmnd *, const char *, ...); sdev_dbg((scmd)->device, fmt, ##a); \ } while (0) -enum scsi_target_state { - STARGET_CREATED = 1, - STARGET_RUNNING, - STARGET_DEL, -}; - /* * scsi_target: representation of a scsi target, for now, this is only * used for single_lun devices. If no one has active IO to the target, @@ -267,6 +261,8 @@ struct scsi_target { unsigned int expecting_lun_change:1; /* A device has reported * a 3F/0E UA, other devices on * the same target will also. */ + unsigned int is_visible:1; /* visible in sysfs */ + unsigned int reaped:1; /* removed from target list */ /* commands actually active on LLD. */ atomic_t target_busy; atomic_t target_blocked; @@ -280,7 +276,6 @@ struct scsi_target { #define SCSI_DEFAULT_TARGET_BLOCKED 3 char scsi_level; - enum scsi_target_state state; void *hostdata; /* available to low-level driver */ unsigned long starget_data[0]; /* for the transport */ /* starget_data must be the last element!!!! */