From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751763AbdFTKhI (ORCPT ); Tue, 20 Jun 2017 06:37:08 -0400 Received: from mail-ve1eur01on0125.outbound.protection.outlook.com ([104.47.1.125]:54303 "EHLO EUR01-VE1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1750992AbdFTKhE (ORCPT ); Tue, 20 Jun 2017 06:37:04 -0400 Authentication-Results: redhat.com; dkim=none (message not signed) header.d=none;redhat.com; dmarc=none action=none header.from=virtuozzo.com; Date: Tue, 20 Jun 2017 13:36:50 +0300 From: Kirill Tkhai To: David Howells , Al Viro Cc: David Rientjes , linux-ia64@vger.kernel.org, avagin@virtuozzo.com, peterz@infradead.org, heiko.carstens@de.ibm.com, hpa@zytor.com, gorcunov@virtuozzo.com, linux-arch@vger.kernel.org, linux-s390@vger.kernel.org, x86@kernel.org, mingo@redhat.com, mattst88@gmail.com, fenghua.yu@intel.com, arnd@arndb.de, ink@jurassic.park.msu.ru, tglx@linutronix.de, rth@twiddle.net, tony.luck@intel.com, linux-kernel@vger.kernel.org, linux-alpha@vger.kernel.org, schwidefsky@de.ibm.com, davem@davemloft.net Subject: Re: [PATCH 0/7] rwsem: Implement down_read_killable() Message-ID: <20170620103648.vi7v45mjk63msw72@virtuozzo.com> References: <149789463636.9059.16943955939303454611.stgit@localhost.localdomain> <2406.1497947414@warthog.procyon.org.uk> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <2406.1497947414@warthog.procyon.org.uk> User-Agent: NeoMutt/20170306 (1.8.0) X-Originating-IP: [195.214.232.6] X-ClientProxiedBy: HE1PR0202CA0019.eurprd02.prod.outlook.com (2603:10a6:3:8c::29) To DB6PR0801MB1336.eurprd08.prod.outlook.com (2603:10a6:4:b::8) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: e9142bee-02e8-4f88-8fba-08d4b7c848d1 X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(201703131423075)(201703031133081);SRVR:DB6PR0801MB1336; X-Microsoft-Exchange-Diagnostics: 1;DB6PR0801MB1336;3:16TpU8jKNQdRbWDxPrW/JQ2I/nH6gzCbH2CRyeNE9clOxNYUDAIjgxYauGmzVWVu4c8kGW6Mx0IeypjsgBuDwW7w3jMOlUUjGhRUvh2FTvMgM+MeBmIBU/n4pj1FIjwIFWie6rK3qxgW3XEjNWcazbT0JI5Lsz39dyKZaUcmbWAkMtE9rJuMGsaJHj6KhqJ0HC+fnaDZvOmMzpOXlQBgvL1CD26Ogd36QxqgYLBgl9Unf4/VT1ObIAzY2vUSacMySBQk7SPgmjfsrBhqucFB+gNBF6S00Z0Gm1sAPtgD9CUAmt+Qs/iUymQ7hwa9uQBrbe7XHbBoFqRullpLohAUlA==;25:BZ7CCPnGUxInC+my7LU8+lnIby7syuIftVT2P0s1l4nPuOKXkZY2nkgb7oCZXnYH4l8mQm8R5EVemO3uQadhOSg6OI+2sucXMd0lTeAsV1thfamiCdgVux9xyKBqXvccEMcaJm4OJNAGMm46mqMT/59HMGo6q+DVy7s3v6RlSp3KCo62bjRhKolhXqH4sLMNAQU9Wc7+vnodDd3auRYk/t+Tk5u03Smkh//ekAud6KkJxMI8Fq0BbEeDQUwOfSNV6Ao03ZrIS1sVaJeoLo2HRjX1TEo/+8XCUYeNqdLVloQnu2ZgKRcoKNmoI4kPvc35laU4oxjYtS1iKKazjZx1XZ04cFMolNA3zGqi0y7gHdn9sh3k7Aknwnm61g7ERlaFACNV1LdzrL8+sHRvtUd9yyH+Km89/qaKLt46GEXADrdqa3W+1EfOVXFLj3YALWHFGlL4gOxK+D5kW5z9hkSI/AUHM++5yj2GdJ4BNM6c3NY= X-MS-TrafficTypeDiagnostic: DB6PR0801MB1336: X-Microsoft-Exchange-Diagnostics: 1;DB6PR0801MB1336;31:vCJa9n1/zdUTpjPXNOCrzKPgyGeG2Ub6YgQUF4nB8JD4rdL6fdwubzeSBngkUQPQAhk33TdZ8XtxVWeQMyAoulL902gTg251agD8h5IV+1KoXqqp4xscfzK7Xm6sR+K5WuIeI/BpD5xLdDpezbCqZFOn0ZaFvoZNmNQTd4eQnZ41lkjvIoPfAf1t77/w9AHtEzJ1tS2ViIH5voMAWShlGJl/yMIagaVgYcnoHb3aph0=;20:ZSdcCvHX/0JS2T0iXWnvSsNWWTljGoNwZfDVdOMa0kBpT8DBwq7gknHRiAEzx6nUPmbybrvRRSLnXNpY6RG7b+QJBiYkX8SmPrHBtkWD/5CmH7QbqzFxhcII02OXwUBeN1OGlQ7vR7hsxp2glI9X6qeSqWJwn+1oi0wQPH9NNQ6R38CbNLw4rai7ubNlCRdGvHdPHsqB+ZtG7Nron8hYKfNWYrielhyjem8xVlMCGkdD6UxeODYIA3kUtWxApm4uCuhMBBq7AmfBvXBg1YOI+l44jiQaZvFY482E7xs8npZxjlQPEgshGFUjvdkxh6T1c8P9U3HtlnggXKeiCt/zNfJJoaev9GPeTlZB9RJVte/6V0+1/yH/4zgWgTvMu9xkt1ejtZ12ndeXCscenOzPpjUYmvoygr3NDycweGs5QMc= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(211936372134217); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(601004)(2401047)(5005006)(8121501046)(93006095)(93001095)(3002001)(10201501046)(100000703101)(100105400095)(6041248)(20161123555025)(20161123560025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123562025)(20161123564025)(20161123558100)(6072148)(100000704101)(100105200095)(100000705101)(100105500095);SRVR:DB6PR0801MB1336;BCL:0;PCL:0;RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095);SRVR:DB6PR0801MB1336; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;DB6PR0801MB1336;4:lJsctblgxXLr1NZ4PLrfj1dkJh7k/5XLJ9fAmXvF?= =?us-ascii?Q?FSeWjyYnDREyACQeWd6hoAVQEpKQ0LdJxYH0o1pQa+t00UA4M83RTVd9oQIq?= =?us-ascii?Q?6c1sGLlSAb8YutZZ6R/qD8/MJJysQErBLshNA6XzhkC/z00UZuVuk84R/IXj?= =?us-ascii?Q?rkocqUecJJFPor4+qWJlZhrMKglvcsHRj0Mo7Arbb/G/wXPGJEcwRvho2Lmh?= =?us-ascii?Q?3LVq7OPI3WZ+f5OA13zbfhss2/h2HC6amAPRZTmGCkKKXcuBTsf8JHihb6ML?= =?us-ascii?Q?JHRdUYGdsS41YCFMYBjYiP5KCAEapzDfwg+9KNL+pD7OFaYhTnAVs15+mEUQ?= =?us-ascii?Q?WMVRYoH7l4uisuVKRe96opMr7D6iiC+zAyvr2SDon1kTaYI/g8mf+0pcbuIw?= =?us-ascii?Q?239zlHmXbk9WgKgkCgsTaZoz6U4STeQShajSHey5X04wK3S8/aGO1BAt8w5W?= =?us-ascii?Q?7QJNmgFeTdlejEuz/Z+56w866s2OwbgeYejPQgTwyiH/PsiDS/q/9hMatjnh?= =?us-ascii?Q?CsvpYqP1z3JVzEyAPWymUYTpskBhw4brJMhc6pGDAV8xdTAGNHNrugOO3c0L?= =?us-ascii?Q?3WZoIOLZUJNkRSHFUtjcfd8u9q4CSFgiDpDQmF7369qn9GsZNalVFX1O6mbd?= =?us-ascii?Q?iVK2EZALwg5vaTXqnCrTvVu5itNKpGZYMPnfCzP0PyK5b9i4WPPkpesrDS1X?= =?us-ascii?Q?Y5QjSsQ+WZ4jvdM1prKA6zWclhMpywjILHoInXohVeY80LYsQ+I7InBWqvwu?= =?us-ascii?Q?MLTizw9Ww1t1M5rPTQsKOoHmw6Hs3mWTOZilo5z8dfCCnGEGfyX9Keb+LEWK?= =?us-ascii?Q?CULn8x9m2HHICvWUgrNgMBuxAzIiT/fVOJLm58dmTtVjpu0tTMAcvEp0yVQq?= =?us-ascii?Q?IIK41YVno2l8fNR6FKJjxpzqVysjEVxWl+T4dKw6j/50pz3+Zie6JO+mlwIm?= =?us-ascii?Q?8oqrcRHY4skJIRRsUvXlCzO1icxZB+VyBaxVqnXRUvpLTBkcw2LhW13wS/8V?= =?us-ascii?Q?14oLeYrugN5cUMsCkLMDZUJRFmdTlEa+9mwFd4nJp/R4/LHik2wcj3AZhL8O?= =?us-ascii?Q?aXHKdnfmiRfIt/UjZZBb51n4Ur3y/LRovKCZ26uPCs6jsIy6HNN4ybBnGWKK?= =?us-ascii?Q?HN9OZAq7xj40oRE3A3gevx/ti1ZiAyVwNdHpcgRRswdiHzDVkdOhczsAV3b9?= =?us-ascii?Q?GyOOBYPvmjV6sKI=3D?= X-Forefront-PRVS: 03449D5DD1 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(4630300001)(6009001)(39450400003)(39840400002)(39410400002)(39400400002)(24454002)(50466002)(5660300001)(7736002)(6246003)(6666003)(38730400002)(2950100002)(2906002)(76176999)(189998001)(54356999)(4001350100001)(1076002)(36756003)(66066001)(229853002)(33646002)(23726003)(55016002)(3846002)(6116002)(7416002)(8676002)(42186005)(81166006)(86362001)(53936002)(305945005)(50986999)(4326008)(25786009)(53546009)(83506001)(478600001);DIR:OUT;SFP:1102;SCL:1;SRVR:DB6PR0801MB1336;H:virtuozzo.com;FPR:;SPF:None;MLV:sfv;LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;DB6PR0801MB1336;23:UTQWRViE8OzS1vhV6usurNRNcnbxKxqOtAZdWGt?= =?us-ascii?Q?oxMj5CnFnUlb5G9HgirkEajeOmrcLjXpcuBLV5UKzpz40R5GNhnjmbnxI5R1?= =?us-ascii?Q?4ga7zn/GX8CEJfcjO3q5n6Vlf6VXGyz/yAnqhWj/S8s7Zm44XbgUoLd5wmSt?= =?us-ascii?Q?bcP7Y3NTKdSDqRhkWs5AQ5FSebp1wJOP792pjAdQUMgE9Raqvcel+zgaffrB?= =?us-ascii?Q?AnbJ1RpA50EiWf9cAuTR8d4TyW7Kkx4acmQgCBaPNFEYPtvmZXuv2MnYfvSp?= =?us-ascii?Q?jJO63gn7a4x8/NM+zKliJI3eIDGas5dLLNuPRvCbN4G6U4ZMBRrCYGPgmEOM?= =?us-ascii?Q?yWj/P10rEJAmaealtdXooRYxkzNspgGkNndMybMhge3GDVYN8JhHfgjDUkzV?= =?us-ascii?Q?5emXJgZIw++BA6x962qQpjUnpWA9UVQ16HJshnHbF2ZHepCxo2z63AT+Qc13?= =?us-ascii?Q?18enK3tDYKjSU/Xj8lld8bOd9ANrYP20AyFB+MEy6TyuqvYY0Rq8v3bcobOs?= =?us-ascii?Q?1HJnEE0nvHwxq/JgIUvwc0ncgy7wyX8MMpzGxopDXoZAxA1n1zIeUdZbCKJG?= =?us-ascii?Q?zZ3LgyhuiapvhV6ka2uMZagK5fOvf9vUzbbuoqVy8VSNqR7jbQKPnftcDvhM?= =?us-ascii?Q?hNop1lOxZT4ZSzUfv57Wwy1MBo2V6UmkUvpNPpppbxtTmdhmDy9Txh5NVNuG?= =?us-ascii?Q?Lu8lRt8ordYujw8O+ON78ziMC+AjKxyADqF/yPGx04rd/NN3RGjZ+is9/BH8?= =?us-ascii?Q?P+LnvjVrxVz/AwbE8lYEKlC1fTDwUy3ld2Gpay3D5DH5bhMCGlZTL4A3f75i?= =?us-ascii?Q?5Qaydti1LyvIia8Uju8Ul+ilovUkpOR1ahz8sA8fbpw1IozEh0NQCEsNE6/Q?= =?us-ascii?Q?WYz9xFrzvBd7c9D8UoLgBZv/LPdiZR9MJDZVvdbYzI5A1/o38LgiIwTAfaqK?= =?us-ascii?Q?Vsrhie9WZix1h7tRW5BCBGLVJWXLM4ETMMicRzxsufv3fQUEKJeD5VVnxOV5?= =?us-ascii?Q?9vzHDDWNwlkNxLj99ucjjeAOcvFFqB6TAaNue2ih/DSUtNUCVOCJpgR/LVRh?= =?us-ascii?Q?dB4gncsg=3D?= X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;DB6PR0801MB1336;6:MqMr0QchRtDX1I+UAR7etW0GBnJ5IlQbu+xS+OpM?= =?us-ascii?Q?3OucswkUQvQq/00sDR/2gdIhLud7zd7d4A2f/TbfrbRmI79llKrUltiAlBXP?= =?us-ascii?Q?MQxBrUMw+G84zuue7C2ZJIlhit8tnhNKzTFSPD0JYVbQ7mBp47tDrWH+oVyl?= =?us-ascii?Q?Wg5M/UgmZGBlmuVWDhaqeM7/pjqBX/NJz1CyPgRTMbt6u7/N0VcNLyR0tC78?= =?us-ascii?Q?KKcD450+gZY11EACyPWvo74CrIYSPpLIgfISnchpnkW2plgUzKd9cRFFkMkh?= =?us-ascii?Q?s4FrTfdFl9FnlKzEorQIlB+DgjaIcU1RmASRLEU5Cr2Unq4PXPfWO5ElM54M?= =?us-ascii?Q?UeOCFe2Spk+l0m51XLf4nwh8jkYrtTHlXdv40KMEErevA96WMfrhzKvNFhGc?= =?us-ascii?Q?p3wBJS9/WlTaLLaxpEHpW/qNhGXsmh3CWjFBGpCK21Ymff3kHZQsmxHhIIL/?= =?us-ascii?Q?0QBqOIw0PB5uuCGh0yQAnad9SQw6Cp4RxbFglsqpvRksJEghUG08uTylf8za?= =?us-ascii?Q?R942aIg/fG46Rcl6tAt+25IN7HMAaha+tJwzFks1l16p1mxy5m8fYaAe//VS?= =?us-ascii?Q?x1JQ/njcqKZ5d3iu32v3Yi5GA97rucjv8nNUycjLGkf+eB6LgXPWJZ0AR8A1?= =?us-ascii?Q?+PCE6N9A+24ka0ZTY+WOGunYnQASB+ShMFZgCDKrhBP+wP+dtl7gZcZ/zKeO?= =?us-ascii?Q?r9+chAqiqpQsnMujMgH76a2q53vCJuXjvHpYN6oFKuSoh0/kztEAAdSPyPrJ?= =?us-ascii?Q?q1dA0AXl9zFUozXbSmzz3RmcFiRzM7CJjur8Cx5KH3Sr5E/QfRwl8ehFfkLb?= =?us-ascii?Q?rPNAvK7AgkjhfcQGPRvJIjAuPMe+O87DqG3exyOml+lHl4LNQXT4bMoY2d/X?= =?us-ascii?Q?BgbLFQNUUCzAPFrghpjd/XmObRD8KR8yISeGk2B+jSlzSHpPsY0Js8qbckDP?= =?us-ascii?Q?7LlrBGZyfsp6azkYi6rCAInH5UTzekiiifSaZrnVVa8fOsuF+m2zfulL3NjR?= =?us-ascii?Q?Iu0=3D?= X-Microsoft-Exchange-Diagnostics: 1;DB6PR0801MB1336;5:ju+kTB/pSa9IsxnQBgo4/9wXvi3i8ghKFGrSWTHWPGIRCgeSZ8b0zd0C+ihpj+ua4Epuuubauw9MnI8Bwv+/FP1fm6TYubs6qBGslnJoI2dE9za92xdbdSXqm+rQup60gWDq4fpGE+rivYWdocju4tSqlFOVy8SN4W78aiI8dHsyPj3sbHtA5z2JmpR1cIgGvrW4a3Pjqt8xlcbCji263fJdPKOXON4GUpRZaez/iqN2oeyq2dGgARDiEwhFsKUPoTkYP3jvhsUHufZWvp3UW3vtVcGrTkwBT9v8Nivk5WSgx/6BIun9/JMNbMI8llatvAJ2XlmfGqXPjfqg9vyp1hP5kDRMi887KbUNLSD9KBIAPZyArfH+jU9FFuZ9kG1+q6x2YXCEREo8HPi+20fzl6yhEm7jPnGH4E00RsK1kExvW7/bMl97ZSmRMJwva9cltBNxmBVtDduTT2q3OKSTbI8pg+AvNxNO+O8DdVTahE9BZkl6P2RczHOY6VYhvFPd;24:BhiMkW3csglvy0olhAqoOzBa4Ezl/K3DyezKNTMz6xz5tWirkVmWT+MLaYQoPRLF/PC79kgULHX4tGP+88zlSMeygxsO0Bw57aYt6ZYzMjo= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;DB6PR0801MB1336;7:A+++DR4CsQQIRXanwXR5RKKM6eVniR90F7J+Sy/HTcDh2LjoIeKkKPUjGbscGK91e/QK4cF092Z98T19gaw6oQjjlcr7t+6TKf+sYzpKBuTbUSmdB/SeWa7M+VDIrzD6byzx2dMEgbl0baReHfk3ErUq+U3CMF+Arty3t2FejpPiE0H354QfNXa1KzkpdgFb9y1kGycH9aoYMI71EZjSfe1ZQ/0mT1fGDe/eaN731HKnotX8mMYImnEjaMUTRHAH+U01kNqMR8XhX7P03ICYn0QaFYXQGa0ZsIdCFUaf/Dy7tLSBmx93yZqZbXbbTOx+q2eJ9cO8F7ZNmHSLPaYwhAEX6ffgnF6nm7jS4KvfIZiANNh6Kg0HvknuJ2ze8bysSK3rxmhADJD9caVFeDBDUqTL4F5w3HL8uvalvKrJIhkx7nMrYnmNak8OVZ/Ct1Oo9UdlLw1E1Kz82enX0chEJZQHW9DlVlFJqYBRH1rUChdq861fqGvrrClkRIpOSKA5V21Y7Cj1J0cuc62RnPBbs420Z4Ncoka7jDitsUuEzpoz1uIMWkwXD7KxBkdc2QunEMHRke4Px98rQ0a6yUglTxNGrLK/UotwAyj8IZ6YQNi5zPGIG+2YsaU80HydxQMX36Qh5o2+DX11fFiVZKDZaZ1lwfUcdhBwS3KOVFHK+XFq+cLWm6upZMcLw+zTtpn1Bhzw2XxWmoyfwPUBGQPQZgTUKVhbFxkHODveAgKDJNOe7NoiJ3LLOGwn9KHJ4BXZiAr5CS8AATShnhqosdBaN2R9+VON/uyTv/+VzT1I+Q8= X-Microsoft-Exchange-Diagnostics: 1;DB6PR0801MB1336;20:IDFTMn3ixHiaIxVKaRe7B7saI9K73f5lvkV74thD4Kdkvo2M4eKaopj2AVEh+BDfp19ez0xn9qA2OwHr37qfdgkgtuCVXHd0hf+IWsE34IdcSW2rU7jhn43FDchQ13Lq3wyR/Hppp82pLX3Qh+6u7LcMPJ6czJEZWvYQ41ApFto= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Jun 2017 10:36:55.9116 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB6PR0801MB1336 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, Jun 20, 2017 at 09:30, David Howells wrote: > David Rientjes wrote: > > > I would have expected to see down_read_killable() actually used somewhere > > after its implementation as part of this patchset. > > There are some places we should be using down_{read|write}_interruptible(), if > it existed, dressed as inode_lock{,_shared}_interruptible(). Then let's use it in iterate_dir(): [PATCH]fs: Use killable down_read() in iterate_dir() There was mutex_lock_interruptible() initially, and it was changed to rwsem, but there were not killable rwsem primitives that time. >>From commit 9902af79c01a: "The main issue is the lack of down_write_killable(), so the places like readdir.c switched to plain inode_lock(); once killable variants of rwsem primitives appear, that'll be dealt with" Use down_read_killable() same as down_write_killable() in !shared case, as concurrent inode_lock() may take much time, that may be wanted to be interrupted by user. Signed-off-by: Kirill Tkhai --- fs/readdir.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/fs/readdir.c b/fs/readdir.c index 89659549c09d..7c584bbb4ce3 100644 --- a/fs/readdir.c +++ b/fs/readdir.c @@ -36,13 +36,12 @@ int iterate_dir(struct file *file, struct dir_context *ctx) if (res) goto out; - if (shared) { - inode_lock_shared(inode); - } else { + if (shared) + res = down_read_killable(&inode->i_rwsem); + else res = down_write_killable(&inode->i_rwsem); - if (res) - goto out; - } + if (res) + goto out; res = -ENOENT; if (!IS_DEADDIR(inode)) {