From patchwork Wed Jun 15 10:58:00 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: 9178155 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 0262A60573 for ; Wed, 15 Jun 2016 10:58:21 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id E4676281FE for ; Wed, 15 Jun 2016 10:58:20 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id D703F2824A; Wed, 15 Jun 2016 10:58:20 +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 20882281FE for ; Wed, 15 Jun 2016 10:58:20 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753055AbcFOK6T (ORCPT ); Wed, 15 Jun 2016 06:58:19 -0400 Received: from mail-by2on0073.outbound.protection.outlook.com ([207.46.100.73]:45888 "EHLO na01-by2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751778AbcFOK6R (ORCPT ); Wed, 15 Jun 2016 06:58:17 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sandiskcorp.onmicrosoft.com; s=selector1-sandisk-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=l5PEh01PGipUH3AFECEdQ6JaIyL7RNjLqL8uU48aqbs=; b=c9q2uYig96KyvOOoWYPu6pTuqS1spiVvokSkKPmLju1x43b6NRxUEo2G0Ctoy4Boe2UnCHYyb52u2+3LEsJqzdGVK6r1kro2PAlGfu31KKVhFxMa2c9qFQgJHofuJOVTM+vjAXjEoYT8mxyQKtawZiGh8ZH0dG43jltHH1c9yH4= Received: from BLUPR02CA047.namprd02.prod.outlook.com (10.160.23.165) by BY2PR0201MB1767.namprd02.prod.outlook.com (10.163.72.21) with Microsoft SMTP Server (TLS) id 15.1.511.8; Wed, 15 Jun 2016 10:58:14 +0000 Received: from BL2FFO11FD032.protection.gbl (2a01:111:f400:7c09::139) by BLUPR02CA047.outlook.office365.com (2a01:111:e400:8ad::37) with Microsoft SMTP Server (TLS) id 15.1.517.8 via Frontend Transport; Wed, 15 Jun 2016 10:58:13 +0000 Authentication-Results: spf=pass (sender IP is 63.163.107.21) smtp.mailfrom=sandisk.com; stratus.com; dkim=none (message not signed) header.d=none;stratus.com; dmarc=bestguesspass action=none header.from=sandisk.com; Received-SPF: Pass (protection.outlook.com: domain of sandisk.com designates 63.163.107.21 as permitted sender) receiver=protection.outlook.com; client-ip=63.163.107.21; helo=milsmgep15.sandisk.com; Received: from milsmgep15.sandisk.com (63.163.107.21) by BL2FFO11FD032.mail.protection.outlook.com (10.173.160.73) with Microsoft SMTP Server (TLS) id 15.1.511.7 via Frontend Transport; Wed, 15 Jun 2016 10:58:12 +0000 Received: from MILHUBIP03.sdcorp.global.sandisk.com (Unknown_Domain [172.22.12.162]) (using TLS with cipher AES256-SHA (256/256 bits)) (Client did not present a certificate) by (Symantec Messaging Gateway) with SMTP id 12.BA.03023.C9331675; Wed, 15 Jun 2016 03:53:17 -0700 (PDT) Received: from milsmgip12.sandisk.com (10.177.8.100) by MILHUBIP03.sdcorp.global.sandisk.com (10.177.9.96) with Microsoft SMTP Server id 14.3.279.2; Wed, 15 Jun 2016 03:58:03 -0700 X-AuditID: ac160c69-6db3098000000bcf-b8-5761339cc6bc Received: from exp-402881.sandisk.com ( [10.177.8.100]) by (Symantec Messaging Gateway) with SMTP id 70.3F.03875.8B431675; Wed, 15 Jun 2016 03:58:02 -0700 (PDT) To: James Bottomley CC: Christoph Hellwig , Hannes Reinecke , "Joe Lawrence" , "linux-scsi@vger.kernel.org" From: Bart Van Assche Subject: [PATCH] Fix an sd reregistration race, v5 Message-ID: <4345e7a0-5487-b122-28ad-7426043259b6@sandisk.com> Date: Wed, 15 Jun 2016 12:58:00 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.1.1 MIME-Version: 1.0 X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFrrDLMWRmVeSWpSXmKPExsWyRoxnke5c48Rwg5+fBSz2LJrEZLFy9VEm i439HBbf3y9gtui+voPNgdVj2qRTbB67bzaweaxebOex+XS1x+dNcgGsUVw2Kak5mWWpRfp2 CVwZ5zbvZytYrFrxYMV8tgbGnfJdjJwcEgImEh8PbmLpYuTiEBKYyyTxZdVyVghnB6PErobD bDBVU3Z3QCWWMkps+L2XBSQhImAN1LGAESTBLLCKUWL1v6/MIAk2ASOJb+9nghUJA9mr778A i/MK2EksvXgZaCoHB4uAqsTdi/kgYVGBCIneX0tYIEoEJU7OfMICUsIsoCmxfpc+SJhZQF5i +9s5zCCrJATmsUrc+fifFSQhJKAucXLJfKYJjIKzkLTPQmifhaR9ASPzKkax3Myc4tz01AJD U73ixLyUzOJsveT83E2MkDDP3MF494n3IUYBDkYlHl4J+4RwIdbEsuLK3EOMEhzMSiK8wgaJ 4UK8KYmVValF+fFFpTmpxYcYpTlYlMR53e59CRMSSE8sSc1OTS1ILYLJMnFwSjUw9rvX/tp1 4Mba6xfcLs6LznCweNBi6zVLULZqifK96Qenuk/8uOCD39+MZm+2yIsvv/SKV2ueXbjoyK33 O5g3bJrG1nNytkDcxYNPN6+UW9LiNE0m1sisd9OcxFTZivW9uy7M0HA6//+A8057OcnIWfyf RSRXeMmWnCxQtJqzt0Pk/O2FtqkrfJRYijMSDbWYi4oTASRlW99vAgAA X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFrrMJMWRmVeSWpSXmKPExsXCtZEjRXeXSWK4wfv/xhZ7Fk1isli5+iiT xcZ+Dovv7xcwW3Rf38HmwOoxbdIpNo/dNxvYPFYvtvPYfLra4/MmuQDWKC6blNSczLLUIn27 BK6Mc5v3sxUsVq14sGI+WwPjTvkuRk4OCQETiSm7O1i7GLk4hAQWM0rMfD6XBSQhImAt8WXV AkaQBLPAKkaJP2/2MoEk2ASMJL69nwlWJAxkr77/ghnE5hWwk1h68TJbFyMHB4uAqsTdi/kg YVGBCIneX0tYIEoEJU7OfAJmMwuoS/yZd4kZwpaX2P52DvMERp5ZSMpmISmbhaRsASPzKkax 3Myc4tz0zAJDI73ixLyUzOJsveT83E2M4GDjjNrBeH2i+SFGJg5OqQZGS7W0CoUVlsah/qem tfoceLTJZI7v5tlWF823sd+c+SOtYULO5CeChRP2eUk5fKy+k5N+3uyWu4TCxPuRTma1xo3F avxCGu/9n74VuzF9hb6DBcuBE2bZ0+bY7cj6+Tp1fcMd7ytry9/2zkiTc1Zb9unBrC/vXvFb 8b7njcjbdH7ZpyZTqcQFSizFGYmGWsxFxYkASCBZQ+YBAAA= X-EOPAttributedMessage: 0 X-Forefront-Antispam-Report: CIP:63.163.107.21; IPV:NLI; CTRY:US; EFV:NLI; SFV:NSPM; SFS:(10009020)(6009001)(7916002)(2980300002)(438002)(51234002)(199003)(189002)(47776003)(53416004)(33646002)(31686004)(86362001)(50466002)(4326007)(356003)(106466001)(2906002)(586003)(8666005)(83506001)(8936002)(81156014)(19580405001)(2270400002)(36756003)(77096005)(64126003)(19580395003)(6806005)(54356999)(189998001)(87936001)(69596002)(5008740100001)(5003600100002)(68736007)(81166006)(92566002)(65806001)(31696002)(230700001)(97736004)(50986999)(23676002)(65956001)(8676002)(110136002)(4001350100001)(229853001)(65826006)(7059030); DIR:OUT; SFP:1101; SCL:1; SRVR:BY2PR0201MB1767; H:milsmgep15.sandisk.com; FPR:; SPF:Pass; PTR:InfoDomainNonexistent; A:1; MX:1; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BL2FFO11FD032; 1:wM4wTWOiKshpeOeAF+1zM0eTM2fpWjiC/zLAYzVVgtlimWHt+MnDuC0oEe/ac1g93aLZJwWRC9DLApIHXresRHQZXHWxevadTMjwwXiAZGxRGZ7AuTnERcqDhsaUQAB+KkmKcLIQAK3t+esb+k6OKriwtddn2J/vO3xJWqIxuNS+Gp4/MV47FbBOn1fKhXcTCl8xIchSoZ+ZEtYNsjq/TMIw9C5WNRl1EmWF5RWWOxkexnVpXzqLDLqqufVkQ4uICY+VYZwu7MxeN7xb23Nh+pp2f2YoM4EDufjrO/cuY7y8oZMKpWs1tUOtLumt2vWrTq2hE10lHNqz0DlNyZ0HaSBd+0Tjxvet56i/Mg3td1qS53WYvQs+XPsiVIYTqK7AwWOoXzGolhvpHIqChx3ugr6h9Lgh5e6yYnwLy7ZYk8za4QOl2e9eofImpx0KRZc+aCymJQdKI4dq8wETsprH7Q== X-MS-Office365-Filtering-Correlation-Id: 0291b6e0-2864-4095-f803-08d3950bf284 X-Microsoft-Exchange-Diagnostics: 1; BY2PR0201MB1767; 2:LzS7UzVx7qGgYpRDE5p7AMkhfMLJHRZUeB3Kyk2c+FiZsZZUCBbOL7GWk0sAL9Npik4BBvG3uCZibMgtNi/wvCcbmX1aofpTCkjakdFZtW894XG25/zrd8vcUkOAayS6XF0w+fGTDDcDTxAfVe4UTftMegTu/RDmHLB/0dcTFBmu/BZJvKenlb5xJl75grC6; 3:O7MU47FBhnahyHRgzCajoFTGHWDXFQFtcgzSAJpMS5pwua+gaobvsKO/9kyCAqT9zRk1bY0/RcDUtIo8eRSRXJZsn+cEf8og25TCKZc1nxTaYzSlsyhHUcnuEfj6hJJ3L8us1Quct6lyVoig7/5lzjRvMbTQN1mMCkrnWYu8JmJJsH80esBGngQGRiT0UKwb5ia4IcTvq20aC0odkLmsZoeIveAjF0E58wQuJLGak89gg9+H7zsg0AV/hBKugvvdF0dhYmLq2GkaDCx2il5cqQ== X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(8251501002); SRVR:BY2PR0201MB1767; X-Microsoft-Exchange-Diagnostics: 1; BY2PR0201MB1767; 25:19CNqNLL4nj/13aK5ZGapbhLmLERnGdptSRqVjr5D4iJUupP9g9YCN8qjc0picuOfxSToRSA/wxRyKaK38iph/yZurgDuXCvpa85rsn4G3YVpFaMkEDvBKTLLdguJTVjt5/hr4XU0BCkGZIgJGtaX9Rdp3H3KUHimv/MeViGZ/ABAIidPeETde/+sFxdezVEULj7tlllDYRuA7xeSUpbPYYTDdISE60Uk/H4BfmzPLEuD6eHGs0TL2Sl/GZCo+pc323aM4R8B+3EoAy60noVWh9zsbOzJBGpA/C55q5kMREP2sm5SyZgt1SeZZ+0aWFrZeZ1WV+ifQu1QlixJRkBKIgGV/0J7b+tWqZY/I6h28fQJcnjOJeOEtyWf5JEY7aPEBZycH/tpgccKrG5jTkdlQePuJ0Wrb+ZPFtpAp2IoIP6w1i+y2ZobglxrfxQyNxjim4ITdMt41wCLq8BILeJ69rGgoDzlC3LTAUdy6jxQ5SJu+Mz41Jbuivq6l8hPe0qpxlIWBuOgP32UHf5+ehZ9CYNJWL78R32/+K+zn5zaEHy8K53j6M+ErYwt2V41eeEK22kQSJMDgQ3xg/HAQ7udEA59LaZ6vUJpae/iYKhfwsQgBntomOoWcF86205Pwr6oy2VNYREeIlkLvyVJryeAqGxh81RWafx0XyhafU6OcRxvN+F1iLqTXKYWK/CjZ7apIt7xs7X1T0Jnzo3irrtEkVb/SnqxVM5+xLBQF2wq/uu1+ilFivTXVjSjATDNZMu+c9UjKTbi+YlikB62ZRAS0QiLluITgzQ61Q7v49TFSU= X-Microsoft-Exchange-Diagnostics: 1; BY2PR0201MB1767; 20:iutSUAIiq5VvGHDTvajOLZw3m8UqjVKZdgyduEsbe0cq7YgvqAtk4JokQ8bDFk8enbtKjwzeAtWRwqJKBb8ZVch2ugxCxkQYOzaxAfCjY/iqhtGHuAXMHyZ00ab7fFmrMaMceFHp3lWyvOJyQlyST1zt1LR1jMbn/3JFdM67BL+1cpmAlb6B0ROzU+lvtlBwBZgDqpo2zTcgfzZD5GVdpCqgKAoaDwUYJOLEzqXse0/PwMYE9kmGfGLoUYmW5igLxIYwoQNAZOB5spaE15oX7gRPpKUvB17zUY/ACm3aZUwUE52Aed0wOG+NvhAnNj0ZCzLCUJ0fUaM18z5yO4HEHKkCqkbrNtIQEKQwMUIVwrWQ+XOQXkAKK62m5pmMOglNKcSC7lWp0wdQSN70atRYssDjiYO0jiqGvQaZCT/dESoRO4JxB2Pp1BEGZyLTUnQLnVdS3Mj8pvVvq1tfCPkIWKF33Arbo8Rh9vqnmBXPPoZ0VlplS8XlstUW/AlMptFW X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(9452136761055)(42932892334569); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(601004)(2401047)(5005006)(8121501046)(13018025)(13016025)(3002001)(10201501046)(6055026); SRVR:BY2PR0201MB1767; BCL:0; PCL:0; RULEID:; SRVR:BY2PR0201MB1767; X-Microsoft-Exchange-Diagnostics: 1; BY2PR0201MB1767; 4:TLmxe1/VGj/ZAaJJhOqmNeTlS+m3n6zyuGAZVag5/vxJPL5Ms4PBEVvh0/sZRaKba+IrgjqrA5NJ5tT3h7r/q8YmsyTpJWgfiU9Gg4YGy43VPATENBpV/PWXhzrvhdmZxy39lrUx9pFoe4Vu863fhUhJNDm0QBa4l88KMOjQ0IHLr64RMw2kmltEBgDi6FqhyH1DL2vud4atiklXcnvXidX/kQw7Dle1f322Hmn0sNSfkyGcjTqAxT6ogcfVuu4o+FWcrCfFX2zrbiORVEklt11Bu+bi2VkcgVrMMpzrKi79K2FJoRX9m8nKCxunpUpWg04NjdhGB+wFwirUrIq9TdHWyjhvp2i8ob4sIQaseo6fpteSWkge/itpS6W/px1JAqiBdvZHo0wHk0blxPA4rOS9Z8hCpeBe1RftqujnJddvV9no1d3XQemLhHAsFK7vo2V/XiJyXXLVmZr35+0LkJdZOsqXYt/P5+xZdAErT045Q2zYCrzglHlVA29IIyzs X-Forefront-PRVS: 09749A275C X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtCWTJQUjAyMDFNQjE3Njc7MjM6dVZ4OWNvS2FGekdoVHpUUERHOUIxY0V3?= =?utf-8?B?djkxY1JYb29yV0IrOUtITitqVTJDOGo3MStkWTFPUlVZNHVuZThNTjlxenNr?= =?utf-8?B?MkNkYXhiUkxmN01Gb3BZVVhWVFBCUWx5ZjFSVUJuN2o0T25ZODJZbzNkSFBD?= =?utf-8?B?RlRING4xSUx4SUxPL1VKWlQ4VWxzZGx2QnNwYlRwajFldnFvelo1RWxrRWI5?= =?utf-8?B?OGJqeFY2em5OOEFSOWt1ODBmTmo3OFN4bDY4Nm1UaEJoYUxJcGlJbzdIenJ5?= =?utf-8?B?emJoeDNrRE5MMVA1ODNlaUVzWDZabHhhMXVkak9EWFJxcU0wK1dGUkd3bWM0?= =?utf-8?B?QklkOXE5NkVqcmlmSkxld1RmTG83RThEanRMVkRGOFBRTVR3NDhFMW9yUXRF?= =?utf-8?B?WWJUWW53cXdoZjJhdDBvOWZVVUw2UnAyN2c5ZUNySzZOSmEreDkrbHVjdGty?= =?utf-8?B?cnJoZ24xQTFTM0tjV1JYT0hkTU5TTHQ4aVA3ODRoTkZwUUc1bkoyTHdoSjBz?= =?utf-8?B?OVBjWE1tU0U1ejNXTGplTy9tcW80L3BXRzRvS2tGTzJKUTh2TmlrekxKWHBW?= =?utf-8?B?ZXJkNFBvUERwSDMyNTdJSGhmbWIrWUFkWkdkMlNLNzNUTU9KY2pkdzBXK0VU?= =?utf-8?B?OG5FWEhydWlDTjVreGMvVUxnZmlXSHQxL0ZRdm5WZnRNTDU1ck9wUUdmT2V1?= =?utf-8?B?UmRvY0dNZkU4YVFLVmtsV2haYmM1UjZlOFloVWxValpMY2lxZDJzSEsydVBT?= =?utf-8?B?V051SEpyRmlJSGl3VjhXRktTVlRwY0V3bHpqQnc1NlBNbzl5TUlHTHVCM3hs?= =?utf-8?B?MzMyTEFQbHgzaG5WNXA0TUV1RCtNTHkybkEwZXBVVEdpVkxUZDVNVlFVbXZU?= =?utf-8?B?TXFvajdSTWZYQkVXckJiSkNjRm1Ib3hkSXhXZ2h1RmhFQjhZcGh1TnVndzNX?= =?utf-8?B?cDhoNFRJdS9kTUViTkxQVU1TWWRRWTFpR3JPZ0xYNER6Yk84STZWeE00dlQ2?= =?utf-8?B?bW9iZ0xmVU4vdVV1YXpReXBXbDV0VlFERytGTTJXb2FLMUc2NEthWWsray9h?= =?utf-8?B?VDRUYXp4RjE4eWFWU1M5cG1jRHZSSGNEUmorenB5UWJFRGNyV3pHT0FUKzdB?= =?utf-8?B?Uk5uMWZLbTRIekNraFoyNFdVcCtmWDhxdG85RFNuNHNJSTVEQ1lwRjB3Yzkw?= =?utf-8?B?cFBmTnd1MEtseGYxNDBFSTdUZ1dJNFhYWHNTWS9KYkJzRFYwLy9BYk9JNGFB?= =?utf-8?B?ajY3c2N0QTY2dDQwZjN1L25BUnM5cTdMZ3p6ejNLeWtaWEVMTlhwblRaZlNM?= =?utf-8?B?YjdGY3NZcG9OZDQ2VTNIYitJN0hGdVg2b3hhRncrYjM3b0tpTDh0cWoxSmxn?= =?utf-8?B?Y3RzV3dCS3dWdDlYMll5SlU2SWNYS2d4bnpBVVlJcXAvMmhlYmFhQXBKMTJh?= =?utf-8?B?bHU0ZDVXTEpBaGdDbXNLQTZNL0tvNXB6cUw2Mmxwby9JaEczWGZjT1JMdWJX?= =?utf-8?B?eFFKQzV1enUrY0lnOXVnK1NDelpGNDN0Smd2LzJSemRETDNnMjFlUEVyanBF?= =?utf-8?B?NSt1dkNrR0lLbFJKTEY5TjYxVXZwUmVHUU9GNVIydVJjeWtFMWtwSWRMVU9H?= =?utf-8?B?UEhqaEk4Mm8vRVZybllacVRtV2VVek1KaDdyVFpaT1JRZ1d4UXRyTlNNRytU?= =?utf-8?Q?Qggns5kWVnhAKjvRupOq8LVnWtRQmrXadkhFa7oXP?= X-Microsoft-Exchange-Diagnostics: 1; BY2PR0201MB1767; 5:UcKIBIotmJpIkpZ9JfvOgCbKHTjYgpsVI3M3UsSElEYSs03baSgrIx+lxEecr0SAjAnFY7mgXF1VO0uxhdGVvy61rKoVdnmX+HnbxcyOAXzeIi50Gm8NG9Ad14eMvqm3H7K/hJCxmZKMHtIyK66BRg==; 24:CJMhj03oIuLS2s3VIJQHUuz7nehu+8O+W/8dy4mJwy4zrK0f3CSerAyD7E2988PIfQnlCGNSfKAu7PG1Mai70c3cpkKP8PqY5/CKHSrldmA=; 7:APCVL1tmD3Cw80kTAoCiKSnTyKH4nUNrSRuyf0FiNKNGGzTjPlTq0r3aXWhx+iC06JCThCteHnVV8vLj+tntFFTa6BImKnV8CVLGZTU6F7GV7hEcTNGRIosMwxs6rFZAGah6p94WpznXyxrHLdnbnvDL+4TKYIPz0QrY8A0qYbrqJvWQRjq+YigGCTT0jJ5FmXnl3V08vPpYsgZ2DHQ6wQ==; 20:BzxrEoCGixDdtUtBYimnJbrpnQ29i9AgN7oAJdm7Akf2TPJC8L549Kq32A0R3c4k04FSm7FLJ+HwscAi+69KCkB91Tp9dw2zlZpvKwQUWY75JkGN27XwXHfhzSFlEK43fXxaGyjve2CKed0VUS5MgQTXxAQzjECVcRE0uRoDWsd9C72Qs5y+E+XdHyHuu1x3rK9AeQFvnHEF3gCrrMlRnlKkmqQ4KDRD4AFu/riIrg73CbcxUa9y2g3vqhzIx5BT SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: sandisk.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Jun 2016 10:58:12.9891 (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.21]; Helo=[milsmgep15.sandisk.com] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY2PR0201MB1767 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 Avoid that the sd driver registers a BDI device with a name that is still in use. This patch avoids that the following warning is triggered sporadically: WARNING: CPU: 7 PID: 203 at fs/sysfs/dir.c:31 sysfs_warn_dup+0x68/0x80() sysfs: cannot create duplicate filename '/devices/virtual/bdi/8:32' Workqueue: events_unbound async_run_entry_fn Call Trace: [] dump_stack+0x4c/0x65 [] warn_slowpath_common+0x8a/0xc0 [] warn_slowpath_fmt+0x46/0x50 [] sysfs_warn_dup+0x68/0x80 [] sysfs_create_dir_ns+0x7e/0x90 [] kobject_add_internal+0xa8/0x320 [] kobject_add+0x60/0xb0 [] device_add+0x107/0x5e0 [] device_create_groups_vargs+0xd8/0x100 [] device_create_vargs+0x1c/0x20 [] bdi_register+0x63/0x2a0 [] bdi_register_dev+0x27/0x30 [] add_disk+0x1a9/0x4e0 [] sd_probe_async+0x119/0x1d0 [sd_mod] [] async_run_entry_fn+0x4a/0x140 [] process_one_work+0x1d8/0x7c0 [] worker_thread+0x114/0x460 [] kthread+0xf8/0x110 [] ret_from_fork+0x3f/0x70 Signed-off-by: Bart Van Assche Cc: Christoph Hellwig Cc: Hannes Reinecke Cc: Joe Lawrence Cc: --- Changes compared to v4: - Renamed the device filter function. - Added test to skip sg child device. Changes between v3 and v4: - Added (dev->class != &sdev_class) test to device filter function. Changes between v2 and v3: - Switched from separating BDI unregistration and deletion to increasing the sd device reference count. Changes between v1 and v2: - Changed the approach from swapping the device_del() and blk_cleanup_queue() calls to separating BDI unregistration and deletion. drivers/scsi/scsi_sysfs.c | 45 ++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 44 insertions(+), 1 deletion(-) diff --git a/drivers/scsi/scsi_sysfs.c b/drivers/scsi/scsi_sysfs.c index 0734927..64cebf5 100644 --- a/drivers/scsi/scsi_sysfs.c +++ b/drivers/scsi/scsi_sysfs.c @@ -1273,9 +1273,41 @@ int scsi_sysfs_add_sdev(struct scsi_device *sdev) return error; } +/** + * scsi_filter_ulpdev - Look up the device created by the ULP SCSI driver + * @dev: A sdev_gendev device + * @data: A struct device pointer + * + * sdev_gendev devices have multiple children: the device(s) that has been + * created by the SCSI ULP driver (e.g. sd), the sdev_dev device and the sg + * device. The sd driver creates one device instance itself and zero or more + * device instances by creating genhd instances. These last devices represent + * partitions. Select the device that has been created by the ULP SCSI driver + * by returning the first device that is not the sdev_dev device nor the sg + * device. + */ +static int scsi_filter_ulpdev(struct device *dev, void *data) +{ + struct device **childp = data; + + if (!*childp && dev->class != &sdev_class && + strncmp(dev_name(dev), "sg", 2) != 0) + *childp = dev; + return 0; +} + +/* Caller must call put_device() if this function does not return NULL. */ +static struct device *scsi_get_ulpdev(struct device *dev) +{ + struct device *child = NULL; + + device_for_each_child(dev, &child, scsi_filter_ulpdev); + return get_device(child); +} + void __scsi_remove_device(struct scsi_device *sdev) { - struct device *dev = &sdev->sdev_gendev; + struct device *dev = &sdev->sdev_gendev, *sdp = NULL; /* * This cleanup path is not reentrant and while it is impossible @@ -1290,6 +1322,7 @@ void __scsi_remove_device(struct scsi_device *sdev) return; bsg_unregister_queue(sdev->request_queue); + sdp = scsi_get_ulpdev(dev); device_unregister(&sdev->sdev_dev); transport_remove_device(dev); scsi_dh_remove_device(sdev); @@ -1306,6 +1339,16 @@ void __scsi_remove_device(struct scsi_device *sdev) blk_cleanup_queue(sdev->request_queue); cancel_work_sync(&sdev->requeue_work); + /* + * blk_cleanup_queue() unregisters the BDI device. The name of the + * BDI device is derived from the dev_t of the /dev/sd device. + * Keep a reference to the /dev/sd device until the BDI device + * has been unregistered to avoid that a BDI device with the same + * name gets registered before blk_cleanup_queue() has finished. + */ + if (sdp) + put_device(sdp); + if (sdev->host->hostt->slave_destroy) sdev->host->hostt->slave_destroy(sdev); transport_destroy_device(dev);