From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1763587AbdDSNVY (ORCPT ); Wed, 19 Apr 2017 09:21:24 -0400 Received: from mail-eopbgr50118.outbound.protection.outlook.com ([40.107.5.118]:23616 "EHLO EUR03-VE1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1763562AbdDSNVU (ORCPT ); Wed, 19 Apr 2017 09:21:20 -0400 Authentication-Results: kvack.org; dkim=none (message not signed) header.d=none;kvack.org; dmarc=none action=none header.from=virtuozzo.com; Subject: Re: [PATCH 2/4] fs/block_dev: always invalidate cleancache in invalidate_bdev() To: Nikolay Borisov , Alexander Viro , References: <20170414140753.16108-1-aryabinin@virtuozzo.com> <20170414140753.16108-3-aryabinin@virtuozzo.com> <705067e3-eb15-ce2a-cfc8-d048dfc8be4f@gmail.com> CC: Konrad Rzeszutek Wilk , Eric Van Hensbergen , Ron Minnich , Latchesar Ionkov , Steve French , Matthew Wilcox , Ross Zwisler , Trond Myklebust , Anna Schumaker , Andrew Morton , Jan Kara , Jens Axboe , Johannes Weiner , Alexey Kuznetsov , Christoph Hellwig , , , , , , From: Andrey Ryabinin Message-ID: Date: Wed, 19 Apr 2017 16:22:42 +0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.8.0 MIME-Version: 1.0 In-Reply-To: <705067e3-eb15-ce2a-cfc8-d048dfc8be4f@gmail.com> Content-Type: text/plain; charset="windows-1252" Content-Transfer-Encoding: 7bit X-Originating-IP: [195.214.232.6] X-ClientProxiedBy: AM5PR0101CA0013.eurprd01.prod.exchangelabs.com (10.169.240.23) To DB5PR0801MB2728.eurprd08.prod.outlook.com (10.166.176.24) X-MS-Office365-Filtering-Correlation-Id: 00abbba9-9eaf-4640-6f6e-08d48726f3f2 X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(201703131423075)(201703031133081);SRVR:DB5PR0801MB2728; X-Microsoft-Exchange-Diagnostics: 1;DB5PR0801MB2728;3:9Y4h23hu0aE9eONsUw3a1aki4PsgRJVSKdHMHE0XzxXr9u/xoPoHqM32rsvd2Mm9LTIOol09h2ArmHvRTl4CJECbmA6pgCcwT7SnZHu+y3GOOFbq+txmZ+d191pU13W2xkRSEHvq0BRNecqAVdzd3qQYgmjgOyp3rhVYZEgUalkaFyR2BxajIz7zM2MPD7HPRQqB1PtlgxHKo940OWuMtoNwl4mDbYrO46dH9vSeph6qhJJYo/0yu12G77GaeKjCuOq63fi3GOkPS534hqqZEbG8SjJnDOH+BC49oYNQyeSUZy4asyUFKIMBiQZO76pXUaDn42M5XXE6InsqWceKqw==;25:DqZMDLRsmyCsEfzsIc+rsDSWffcm0Fb/xbX+hgLRUfWz69wlmFVKiB1vLpDMt92PtE7ZqLL4y0ATHWr0dpFTaC/YZ8Zzugp1/XXT2+6uqSdgf/fC7VvEbEMWJXAIeyRHAAdaISqWh1TjnBvkSia9sK6P4wlveVpD4Mbp+DRBAZNmznsSsrxO4eCdZfTQAC12UH3pbPbufaqPfISmvEfHLkbFH4zDhzN5uaC+CtJUlgTPIf3KW9hy1yiVbXcXz7xUNUsmcGIoNogKO2whYN1XTkUTa/8GKDXLO1YF/nvgjucJR3GNPKlN4YLr4sePn5h4QYEvD8AWrhC6pvD1vBLkoOkQVGihxGVEG4SddSxy+Qri9xDJQHlAyraCWAV7mYYMbm+ElbKPCXV/hqiCTwn/G1xxlRUszChn7iOmKLcZn0kJl3RGLIdelmHxZel4y/Ufsloi8Gbp75DVhrsT2TStgg== X-Microsoft-Exchange-Diagnostics: 1;DB5PR0801MB2728;31:RULJwf/0eNG8VSmIW6ePbXzo3IFmi/w0iw3cKHbPf01ngX6G+wcU2js6t494XdNorhu8smELzXQ9UGTMwCvSADDfKMZNJah6ttY7MFNlpUFfoqU4dUDZglRau3OE5eSBP8KWXIyefM8l3p35epRjoHEFrxdClobBs9cMBEOGODH4hr4jnHJhbkAV+tY25QkEVumZOT+Q29RSSDZpSTF+ADz55JD2DG81Ntondldq/3RpDlOYTqT5Sbcug+1egl+4;20:vixQME+vLHfKeDC4lpphvhC+pI7ShVNEgx3iILL0K7bpFSCZnq1mURqKKPeLmz2mB32SZbsw0+SgekRli5yUUijg9tNKiKCpzpuAxMIo7oFLOMrk5jloU/twm05SdzQBjwGM5PpsdsJR+WJhm95B3BWX+bjE6dL58kFJU5+bGpaiYunSPAQdUDANQIn6z6EFVMHpqRxaglsvqLM+jZXtyt36dvWbakgTz2MegiqrrfZzSxGndoR09iJkevrE+P2l5yGjee0Dh4tMnwRTKhNGasVpC/v5HjTCu6XE1pE1sJG9NMljl2HHD+erCoJGNz/oPMwa2Cbr9CyKLjiflHPjU94sON/F1F1lu2y4RZx3TUnxZca2I4IwSUYISHfFxnfuua9S4Zade7ETATOy0P747rdR2STXAEar67kukx+LqwI= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040450)(601004)(2401047)(8121501046)(5005006)(93006095)(93001095)(3002001)(10201501046)(6041248)(201703131423075)(201702281528075)(201703061421075)(20161123562025)(20161123560025)(20161123555025)(20161123564025)(6072148);SRVR:DB5PR0801MB2728;BCL:0;PCL:0;RULEID:;SRVR:DB5PR0801MB2728; X-Microsoft-Exchange-Diagnostics: 1;DB5PR0801MB2728;4:4/zWlofaC2ck6A+8+dfw/oUZXD/eLM/PvK7TU+lUzFimvaIz+x5kwEllGdohgr3xSLS5+NrIrdd5M5SPtGBXJPO3dFeZvympwIxPa3NQn/fxXrlmbwgdCMRAlfikRFctDGUgSjsMvcDjE8rXOEv2SJVUWmbOxa5qyyM11hOGtuVXVgyS4X6PXeCxypw4SNlD8URa6alGKDrm0cFImoNVyig1d3bdz8NYXhSf4LWsbvNdym6daCE7xEhHo/JD04UM2XNTKMGs88UhW4FpDC0tLRR5mTHAB8wa4CbEmIePc61V+qiHmmlNhbE1aFgimEKjlfEL6pEunSdFdvo+kKkT64uAgH9HU6/lnbWq7ziHYCKBWRplgsH37YFNoKrruOTHwTQxW62OORgploQOvWPXspErXlv2wH2KCQUvf5mlNPeG6+zCoulB2yFJe+tUa+YPloJHrF57ztpxRiPfxBcuT2jgQdXMHMSIRsHRpXiCjGLmw3hOYI9GkgIhlpaZ6SKr4cru0rxME1epGeJwzDMamn+Z+4lMj5jKfubaOX9jodz9FW0P7a93FyhU0Q4+BsBSCC2jDbt0+EJTvQ7GHgFC/2anralPu3S7/5gukrlR1MAchtKOLVKZ/XX/LdzgypaYddNr3AVEERR25Wi9dM7Y/hrY2fdQyZAjp5ORHiD9RnypJ5/7Kb539WzyowFnp/5tH5+aXP4C9QehMlyOGzT/qw== X-Forefront-PRVS: 028256169F X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(4630300001)(6009001)(6049001)(39450400003)(39410400002)(39400400002)(39830400002)(377454003)(24454002)(4326008)(38730400002)(50466002)(5660300001)(64126003)(66066001)(47776003)(7416002)(2906002)(83506001)(8676002)(33646002)(53546009)(25786009)(230700001)(81166006)(3846002)(6116002)(189998001)(53936002)(229853002)(76176999)(50986999)(86362001)(575784001)(54356999)(36756003)(31696002)(305945005)(7736002)(42186005)(23746002)(6486002)(4001350100001)(6666003)(31686004)(54906002)(77096006)(90366009)(2950100002)(8666007);DIR:OUT;SFP:1102;SCL:1;SRVR:DB5PR0801MB2728;H:[172.16.25.12];FPR:;SPF:None;MLV:sfv;LANG:en; X-Microsoft-Exchange-Diagnostics: =?Windows-1252?Q?1;DB5PR0801MB2728;23:E5Fbl70u4bOJT4QxcKkaqs2NChQWR4elpRw?= =?Windows-1252?Q?K8ZOMx2L90CEm3oLRCInjeEtRstdTrOgXpTwgWDqBpbK/6QVetKEs9tZ?= =?Windows-1252?Q?liFXjik6mXJDUyHBeB5kJnLZHJV4qF8JNcAiogNbBMVvdb7zMnZRGm/M?= =?Windows-1252?Q?cp2dSR15KGx0EW+ZdeotDZVIEvhhLSOFayB0TURArUUA93JXUwfBUIZD?= =?Windows-1252?Q?O+VD59tgkSciNWQUI91o7levHvfzDw/5BiTzCfQvKSBka20idJzvzy+4?= =?Windows-1252?Q?+7yCdPmNNsYei4+Uq+p8lHibjukLb388+l3/CxANdbdn47MQu8mxJjnp?= =?Windows-1252?Q?vnKUIb5z2i2949b0J7iDJdRSdtW6M6WStHrW7R4YpjKGgDwmnj0RUhGj?= =?Windows-1252?Q?8fUIMd3rtErYAu4Q/euzQMWjBSSi91SOpZT2PhdlaO7LwB/vwWCZJGjV?= =?Windows-1252?Q?5S1++Nk6KUNN1qBZJ1tvoFthQIuM9FX9WXj6x1/z9on7VMr5UbfUEjWp?= =?Windows-1252?Q?iWMWYFv0tcDp1JH1QT9/02mCYeMA57Y8DvR2OgTAVS0wqHS6MN6j1ebv?= =?Windows-1252?Q?+6paC8z6lbS1UzD7vkVTMVPrxM1mwzNSsnpp3/DEt/R5epQvmPeMhQwK?= =?Windows-1252?Q?5wuoYEiZWfCnFgMZbHJrB00CBK7qScN+pJIZXnxsuA2VWMAoAZGqxlLr?= =?Windows-1252?Q?0pJYjcyaxAg6EbjilGJfpyiDHzqv/FMrHRVLF7VkzhLR6eyrm0vZWTTV?= =?Windows-1252?Q?LxRK9yIeM7+kFmjhoUBltgyX7ckiAxUHU4vn/Mfp45JH1zE0hrEGVwPd?= =?Windows-1252?Q?xZPOPFKs5oyiMEkXkl+bmHI5TWwi9QsddnrWcN1WWY5Dt6s2MkExIjL8?= =?Windows-1252?Q?9SYRHFPv1Y80Up0B/WqTwQ4TSag4l8XE7HHZwzhqBoIXf+GxYEqJ1Znh?= =?Windows-1252?Q?egCnlzehuPx8y2dacS/E20GGp0gksCcXHVBeTXW56zVra4gqefPX15Ex?= =?Windows-1252?Q?/SIQEpsRQu2JjEgcQ1xU5RvErq42QUlKOuHicKk/E1FeAv09pCE/asKD?= =?Windows-1252?Q?WPhhaRExx3UngbVUsOpTS7U7qIRqFHwOd6PHm+HSzZx+TgGZ7LoXjqFv?= =?Windows-1252?Q?H1a+P00Txqt2wUiQ0U4rG1D3sJ308OP2icEb28PN2AgQ5NvCL8j3LmLz?= =?Windows-1252?Q?xuF+aTCUSjAd8i8FC0mAmbogd1o5f/xOnQe6auGEMO3l5Veaw+5XdA7b?= =?Windows-1252?Q?MBwyWzgayximhILg+GrFqDSXzjLoIwFY1YUEVHftRbGqKIjCtBZ1KiX2?= =?Windows-1252?Q?T4ThJESSUOn/rA0dJqFkc5b1660/WzguXeHJKd0kpe55I/PI=3D?= X-Microsoft-Exchange-Diagnostics: 1;DB5PR0801MB2728;6:QBME0SeFSEg6J7VKkRvly0uIAfr50uv13qEkldJ0TSMlkB3HFpSrAqDhcuvkXM1S1OA3pDesYr5Ruzt6UtPLf6fUBYrQ7IhSV9dG2ZZl34Fbtm5B7F0MFvVWx9ESTZozq3Drlo7NFboQU3p+b2A3jnyQ6+H8im0hcu9801jraNIx/Qj3PGe0XkdX3fnMBj2DvzcHChLqk+Kq/c6olQcB9bBu+qEN1trzhg/dcpuSGQgRFu73mZgENYZtubP7zOds/X2mXY44g0y71QKf0fUmXCXqHdZUiUZh60Wg6GqeWe8Zvn7+yaeiVpZyI4+96EPtdVj1vwHxoAXw05Wr5BliPnCc2EAK0gQ5eLox0sBcRMgQXDJ3jc2b7kUvcj1RzVIKnVm9gPWXnreDyT8zfjLcN19/wMKdRua6xZJZapuAKPRXr9q77+dkFJoP/uR6CXnw3RXo2ASqVjjE+UbkPczdE0M9wViQFL9iUU1c2OIgLgS2SAex0Qma1fyvMJge86Plo+asI2KwJ8OBtsUi5TdG0Q==;5:hWfOjL57Ulh/b+CpJgQ03ksGWX9449ONYKQcz84tTvxBCTRYNXxnuZypMjbu59iwGEQjzRGkB2/6/NClFv3WCF2cWuqEWLOg9SxsnLkwRYUaYJANjPmaYO/vwgG24vSJpE/GikfZ6hzHcHqvo5QOoQ==;24:CCCHp2u+xdOk4zFWwZ0qHpcjR6oNWwWfpMPfFrF2ZH6RcBkBasm6jPkz0Mxjv1WhTwZE51c0PkT70J6XfGDr2t3V2xYW9Dk/el9JrP968Ns= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;DB5PR0801MB2728;7:SWm3o8YXgsi1PHbZWsgHUQ3HpHHVw7mY0GPiHtVbvBRwhpwIhEiy/LtTKlp2Z5aZqeIEZnVwdvpVYP+0sFSt9qgz+qCYrFh+9BOH9fds6cadyR6cK7hNNnj4B3DWBogtZCpeiD74AwKbJOrOLIBxhq6gzIKrFwc0xVg9AEJZk9vyQLJ98DUFnAMjPth41Eu1sDCjp5Js4m/BTEnueZKq54nG90jcYLqTJg/2b0ZPY6YxXlM6WiPoOUO9ex7iIx/1/f+b639eA0JWF3nqYabaUifBmp/ijzOeux4X0cDygEV7HMnKPJYgaPXiGHNbcKtEA356WhcZGSh64yHqaSOfIw==;20:fuGK8oPseP9ZXfIf2WwIQqh+jYg3cTSpTxNQO/1qFQcxMeBDB11YxmVcRD8xzHpLqDz0BQUx2aJuJnYPu13n7gUGnaUuzOXxoHDDwpZjwWBImA7jtWjboDcijnnP5YkOHkercnWbQ/2XgMmUiBZwPIYKZ3aOsAwu/CHBncUsD9M= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 Apr 2017 13:21:11.9796 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB5PR0801MB2728 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 04/18/2017 09:51 PM, Nikolay Borisov wrote: > > > On 14.04.2017 17:07, Andrey Ryabinin wrote: >> invalidate_bdev() calls cleancache_invalidate_inode() iff ->nrpages != 0 >> which doen't make any sense. >> Make invalidate_bdev() always invalidate cleancache data. >> >> Fixes: c515e1fd361c ("mm/fs: add hooks to support cleancache") >> Signed-off-by: Andrey Ryabinin >> --- >> fs/block_dev.c | 11 +++++------ >> 1 file changed, 5 insertions(+), 6 deletions(-) >> >> diff --git a/fs/block_dev.c b/fs/block_dev.c >> index e405d8e..7af4787 100644 >> --- a/fs/block_dev.c >> +++ b/fs/block_dev.c >> @@ -103,12 +103,11 @@ void invalidate_bdev(struct block_device *bdev) >> { >> struct address_space *mapping = bdev->bd_inode->i_mapping; >> >> - if (mapping->nrpages == 0) >> - return; >> - >> - invalidate_bh_lrus(); >> - lru_add_drain_all(); /* make sure all lru add caches are flushed */ >> - invalidate_mapping_pages(mapping, 0, -1); >> + if (mapping->nrpages) { >> + invalidate_bh_lrus(); >> + lru_add_drain_all(); /* make sure all lru add caches are flushed */ >> + invalidate_mapping_pages(mapping, 0, -1); >> + } > > How is this different than the current code? You will only invalidate > the mapping iff ->nrpages > 0 ( I assume it can't go down below 0) ? The difference is that invalidate_bdev() now always calls cleancache_invalidate_inode() (you won't see it in this diff, it's placed after this if(mapping->nrpages){} block,) > Perhaps just remove the if altogether? > Given that invalidate_mapping_pages() invalidates exceptional entries as well, it certainly doesn't look right that we look only at mapping->nrpages and completely ignore ->nrexceptional. So maybe removing if() would be a right thing to do. But I think that should be a separate patch as it would fix a another bug probably introduced by commit 91b0abe36a7b ("mm + fs: store shadow entries in page cache") My intention here was to fix only cleancache case. >> /* 99% of the time, we don't need to flush the cleancache on the bdev. >> * But, for the strange corners, lets be cautious >> */ >>