From patchwork Tue Aug 7 15:38:12 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kirill Tkhai X-Patchwork-Id: 10558809 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id D878114E5 for ; Tue, 7 Aug 2018 15:38:28 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id C7FBD2A464 for ; Tue, 7 Aug 2018 15:38:28 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id BBF3E2A46E; Tue, 7 Aug 2018 15:38:28 +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=-8.0 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI autolearn=unavailable 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 5442D2A464 for ; Tue, 7 Aug 2018 15:38:28 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2403809AbeHGRxR (ORCPT ); Tue, 7 Aug 2018 13:53:17 -0400 Received: from mail-eopbgr40116.outbound.protection.outlook.com ([40.107.4.116]:10284 "EHLO EUR03-DB5-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S2388677AbeHGRxQ (ORCPT ); Tue, 7 Aug 2018 13:53:16 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=virtuozzo.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=KHhaKK0koKcZB5yc5yD4q+dXe27lzN4IMJnbu8sfryo=; b=NvZYqm3R5ZRyUy/fhsA7+bAZmeal9lo6kN5g7RnWoNlBNxFSELkWKbUxGb9E4Lh6EhC46j8NQXIclX/wcqC0Ay0SZfSuKmQqLrqCA0dqmsyJ4I49SQO1nFTWei0qzEtVafHLC3B7TtbijUhId8PYessrW29JUPOBR6l0QyRxaNM= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=ktkhai@virtuozzo.com; Received: from localhost.localdomain (185.231.240.5) by DB6PR0801MB2021.eurprd08.prod.outlook.com (2603:10a6:4:76::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1017.14; Tue, 7 Aug 2018 15:38:15 +0000 Subject: [PATCH RFC 04/10] mm: Split unregister_shrinker() From: Kirill Tkhai To: akpm@linux-foundation.org, gregkh@linuxfoundation.org, rafael@kernel.org, viro@zeniv.linux.org.uk, darrick.wong@oracle.com, paulmck@linux.vnet.ibm.com, josh@joshtriplett.org, rostedt@goodmis.org, mathieu.desnoyers@efficios.com, jiangshanlai@gmail.com, hughd@google.com, shuah@kernel.org, robh@kernel.org, ulf.hansson@linaro.org, aspriel@gmail.com, vivek.gautam@codeaurora.org, robin.murphy@arm.com, joe@perches.com, heikki.krogerus@linux.intel.com, ktkhai@virtuozzo.com, sfr@canb.auug.org.au, vdavydov.dev@gmail.com, mhocko@suse.com, chris@chris-wilson.co.uk, penguin-kernel@I-love.SAKURA.ne.jp, aryabinin@virtuozzo.com, willy@infradead.org, ying.huang@intel.com, shakeelb@google.com, jbacik@fb.com, mingo@kernel.org, mhiramat@kernel.org, linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-mm@kvack.org Date: Tue, 07 Aug 2018 18:38:12 +0300 Message-ID: <153365629257.19074.5257843346605031007.stgit@localhost.localdomain> In-Reply-To: <153365347929.19074.12509495712735843805.stgit@localhost.localdomain> References: <153365347929.19074.12509495712735843805.stgit@localhost.localdomain> User-Agent: StGit/0.18 MIME-Version: 1.0 X-Originating-IP: [185.231.240.5] X-ClientProxiedBy: AM4PR07CA0006.eurprd07.prod.outlook.com (2603:10a6:205:1::19) To DB6PR0801MB2021.eurprd08.prod.outlook.com (2603:10a6:4:76::14) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: bf64a4f9-e62d-4738-0b7a-08d5fc7bcc24 X-Microsoft-Antispam: BCL:0;PCL:0;RULEID:(7020095)(4652040)(8989117)(5600074)(711020)(4534165)(4627221)(201703031133081)(201702281549075)(8990107)(2017052603328)(7153060)(7193020);SRVR:DB6PR0801MB2021; X-Microsoft-Exchange-Diagnostics: 1;DB6PR0801MB2021;3:Jjhg9hl0PGi28VW6MlST5xLkv/Ty7ADCqvbMngxBQu84Vwzr5Zaera4aOmMK8iAJJ29Sk7G8HXByex7QxY8L7BhwxZcF0IRm1iaYMEtfrwaqwEN3l6ZuFTrYY5zG4YY5ZJVJynqYXNOcW7hZk4TeaE3q95gGt//1SaCDIE8PHHojQ8TrvXs4cC7wQ9niW+6zRoTKKuxuK4mYC2mo8pNaIbC+fgEMUe8Nlm7ieVWO7fiyGyZVeI0c9cj9qrue3LL+;25:KFMPtMMXE3FX+W0mdlXXrY/w7UqtEt9D86fJsKvfYGbUP0S/nzJQ1qDuuSdqAmKojfuVBe29d9zFuWCDQabz32/97+WwyN2n299boCE+KuI6InZ6avMpm/+Dpo2ReeBW24SHv2U5iO58RVoPWOSpOinvEuMjzHc40y58127oMjDbmJNMQzaj73A+hBLI7o+ZmHekMUej5eXAqHYiQcwMk15yQSV54rPGWu0VAKO4uaQiQ+qEG+OhKzz0UWk0NXaDAvJ5p/uiYDNzo1hSPvXEeh0tG+T4K1ORbKMhjrB70BXVF54OHzR8AY787g0ZJEBVZ1TiuyUQX8sngpvGjiH8pQ==;31:SudW5iZls7TBUlcnMc+NFnHwZwAtVxvtq+Pz8g1MYV4Wu9/wNIQZYXphpb+Ko43gbAi6q8e0Os11MHV0QesWBlclYYtmJ44/oqd/M6DvRmFTRRsLsZFVzMaHVo5HH1vmoH5QvZCF1JfG/Mb0yObU5tmfW7Qk3yIfZWLlRoBRgVATjV+s4Zo4XeHUkhnqzJrpqsSpOAGtj95RPS9fDEA6ld6Y02Ew3XQ6i85mv8W8ME0= X-MS-TrafficTypeDiagnostic: DB6PR0801MB2021: X-Microsoft-Exchange-Diagnostics: 1;DB6PR0801MB2021;20:bixY5YPhwxHC7MZg/YJIqMO5o5QusYhX1IAYqL179vI737N5tLB9+XQtEDEsm3uatwc3gjYrD3sfx90319jcPkdFTDSu9oKQH0hPNZv9OEfbdQnT8OvW3Hv2yfqcNhxiqtbVJVKGNW00cpnEDU7H/unjUW9Ao4hiQ36+kWXrTtZO9rGj9tk2ee0S6WZqNQOnn7Pm1vg/8neD63PygcY50JsHAiuTJb1h6lyQkXdz5coN9DB94nAFvTXzUTBQ6NtiKlSpuIcg36+GidF/007LsaLwmxSDK6JJd6a4qY4/7kkkRPs+2I4cz4NuT/MYB25uiJpizCtJxiu9Cu2XdsVZsQ1xCRsN7WID+mND7VugMyoDcW+OHFOGURk40955fV4qeRFczq4pGEc71yGwiSCnBjgm32J41IUUOViZgKBwOgyKK81T4ixHOS+Nas0r546BBK91/xWPQbri4EWYGNfrbVpjyp1b8lCO47dwvPo04Fzn/yabAyT9gj8vCk3mry4a;4:11X7L1Le/UcOwOI8Tz0ypLJ0f0rc55hjZtcf19Z4ZiestZ/NqTNLLuSnVFARmJLbfkk9//k2fOX+7AVT32w6Hqdov3jt08vt8Mhf8voi4bUvh6GBslXsjzhtH/4KCChgYJFj2EOyntSMIWYwEtp6QlQAxqal9NcMIQzJLYEh7kgPf1rzyut1QIIDJSrjwCvY5X/T4C7WB6is/s5AoOGd9mAgsMlcD48V1awvR6Y+D8JLU6CeW+/eBICugFTF2AuRNJyVNln75jO3Bk6R1xgipA== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040522)(2401047)(5005006)(8121501046)(10201501046)(93006095)(93001095)(3002001)(3231311)(944501410)(52105095)(149027)(150027)(6041310)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123564045)(20161123562045)(20161123558120)(6072148)(201708071742011)(7699016);SRVR:DB6PR0801MB2021;BCL:0;PCL:0;RULEID:;SRVR:DB6PR0801MB2021; X-Forefront-PRVS: 0757EEBDCA X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(6069001)(346002)(376002)(39850400004)(136003)(396003)(366004)(199004)(189003)(230700001)(3846002)(7406005)(47776003)(7736002)(316002)(105586002)(6666003)(58126008)(97736004)(6116002)(7416002)(305945005)(5660300001)(66066001)(86362001)(61506002)(8676002)(50466002)(6506007)(446003)(11346002)(386003)(81166006)(486006)(956004)(2906002)(217873002)(52116002)(25786009)(76176011)(39060400002)(476003)(23676004)(68736007)(103116003)(186003)(55016002)(106356001)(9686003)(7696005)(8936002)(14444005)(16526019)(26005)(53936002)(81156014)(478600001)(2486003)(33896004)(921003)(1121003);DIR:OUT;SFP:1102;SCL:1;SRVR:DB6PR0801MB2021;H:localhost.localdomain;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;A:1;MX:1; Received-SPF: None (protection.outlook.com: virtuozzo.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?utf-8?q?1=3BDB6PR0801MB2021=3B23=3AMZBaY?= =?utf-8?q?NmU0Iu7APnOsxeH1zVD4fCxXvwqQrLjCz4cPcZvFzw3yHgXG+cOV5a8XuWFwwsp8x?= =?utf-8?q?UO9ZQCvESvLt894oAUfDtTNIp0z3udoUaPbjbEcEoAAWJoqyw466X9y/aQImKUNYw?= =?utf-8?q?hpLWlU1LvWSWQrV9gJtuD1hhZ+eyiTiSyR8F3SfqXuk2ZQZYqqv96K+f75Qus2S4Y?= =?utf-8?q?1cLx+C2PYmKPznCxVPgkIPeW7SJJFU5HVkmcITMme+YJOtcI7EF3TVDOs/GGcuZ1T?= =?utf-8?q?07opcDXwSew+SKrAY+I87QOTcaDxNaTD6Wb5D/RXnS70uEp/ZQzl7kdw1FfPgZSQO?= =?utf-8?q?kf47IHmqnzyCszZLbRc8cCzUEPZTmJAZhNwOu2QW8oCgXFGbfOaSJBPDGAXTiYpaM?= =?utf-8?q?jNBfQhtxP9xaMSYjT1tNAWoD4N9hiP9G6UJ7V92/kzkPKzauKc6W1gVtQp14bzkSs?= =?utf-8?q?2siz8BMorUh5M1jmO07SZkGVuKYL6NJMrcoOV3p367cVxugjeOHGZdcFqKmPAztlW?= =?utf-8?q?Rr8USVv29DkHE+QO3ee1tQ7ijnMGOwk7MBdVjoQqXF+449vx0qrsr6SOHJuAuZs46?= =?utf-8?q?ik/Inrn8gQ03bLT+oz7vU6fX+u7oydgO26dPMAyJeP1ZIKWEoNEDvVnQWYtiUgpZO?= =?utf-8?q?yRIADXl497VcpSX8Us49j28k1HXXUpQt0mpqlUAoiWTwssbrvK2DN1PnbysG84WHr?= =?utf-8?q?v9MsiXGO9pjFvRmdAuvcmfy8+82twErqLxqikMA/KRqcZymn6n8BhXAkA0DEmpNY8?= =?utf-8?q?pNvjQS9CzY6ssWSB5P5cs8TbiQ2qu5sxkG1Sr+DNw1btLLBpHDTdKNfAox19yiWZe?= =?utf-8?q?ZHwRwFln68MmCZtrEeytCHuS0DhXrc9yFR8KXa6mmkcPhv3uuQaoQtdHJI9mD2t1F?= =?utf-8?q?XKD4l7m0DMPvdh9dnhEXRjV03Xcl3f6YImBtoFNbBJzQ4HVA9hvGpA814v9fW48no?= =?utf-8?q?MWufVxGoIRHjSlsetiWMcdXUdEvwX7xA9LMfpJXnXqfHRZFOT+tZMmoWT5mmyIfQK?= =?utf-8?q?+XApnec+G43AkE4rf5/UOKYE10/PudvvvkihQmaCfAz7Dm3cmNHzr9CSXl1XqUDrW?= =?utf-8?q?iZC4USlES9unQgDfKmYuSicvHCm+W9tcdtbLZgHS2j7V7FRADHVXXq2wMD1WZ3Zy0?= =?utf-8?q?qygNwo7UbxDL9oIRKGb1wt/URRexT5R/Acjq7+ysfEYPR1HsJ4DvfAUlgo2W5TCfF?= =?utf-8?q?TqnQNDPhbu9IH7ahBuWaFuQiEBTXLhLC8iYO2mEfnt3ALIMS+sQfYfSuDpc6pTtgs?= =?utf-8?q?bZR4JlEHwyUWMCdxYWQAmzzzDWQZZqCYv+lNJay?= X-Microsoft-Antispam-Message-Info: OMFluMWMRcSl+wetwMsTxL/++GIyV0lHEYzw4/xHDbL3HsiofPcJXH59YAmihE6Yazf8DI42wJ8SsHEKL1SXyf+nTQB3ASw0Mw+jfmg8FxV8m8n/OdQhd3Ws+nBatRcf4NiaQX4aq3vM2Vasouv7yXVFF5g8eY5eJXSlI/cLFlE4494FZOi1vb3O7gvRRG3ZohNVwvJshpqRkJOcdlEag8gdljV1F8usXm4XDscc8Kbm65hASTBeW3amlaf34QpMAwV8wagG/GYrQGnHSRQ7RNgp2I0JVVKq13IiQzFuijhutn3VQKJOgZlD2cxj9WhMG1lYssd+2HqNR7CLCdKM3wDK8c9DsEQJPb7l8DDWwZ8= X-Microsoft-Exchange-Diagnostics: 1;DB6PR0801MB2021;6:uLY8CQ7TWQL3m3jaeyY2N+ERUcJmZwU6SGO2aBjqOnGwvTtWn2goEw+vQ6KoTSFP/W/7WieQkWhop3oG/oiZx2n/S/0SvxhJi5BGEGIAtkjl5x18cnneMqDXLrX69tWyj0ZlAG9NjX/+wSKYfj4P17zrVCRtAMX7qJ6CD3OIjZVQWxbDxMJhZJdUusAwlPuduAjPa8ykhtt5TUK1Re17lLBvIZHZITmRHQzDeVXo8rwHgrH5plkQCGjKgJlQDkc0X7c2uFlYIxaekU/5omB6lAzB2oKsukJb4A6Hi/pUFUSCZyqvf81jglLrrQsgkpdXz+LZOWU1XdMr4xU9FHtvuUJdv2nCavXB6nO8Jn5pY/P+Pg+sVa00fZJ7TuHAwSD99pJzELy8d2u9F+8ySjj12JC2CZs+ZUznKAWmkHc4wapnejVLP7+y2V8E9MVzvyNu/+/GUXRMpbLB+HXhekJuqw==;5:nokdg+a4sJl05bXVoFbhB10Cem79XuOD+0vldx+yiPLLXPVsiYPue3KCgEyFwsPdB2bgi533FqIx0aCWjLKQSwSeWfc9XQ23h8DVBOy6arqKMWw2p5qMVpdU+OrPrzfxxiEDYXklQMVbfYv3DjaXN2SzB3cveloVgZMuQNFgHQs=;7:tfztc9dpudgYGMMFel6T9i/H91SzF1E0A/zhyTysCcX7IOwhV97qHd4KYkWTB3NcPnQCdT1oBh8P1qUuwG+GWUk2bNL5OcTZTNAYlHPUpNx7YjS4aQw5xZibRc9PljPw/3bH7ArScG/TgAnNcjnqGPFY7O1mZ29znRiXw9ruaNou3Io2hE6N+V75NAg3pap0o/Bka7vuImkUL0X7r0Q1VutOLP2Vpg1BAGNnZJPG9XvC+xqx7yEXNZeXte6HnMh4 SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;DB6PR0801MB2021;20:QV+9fHQEYBZUWbFr7haq41cnk9W3UpdOzydwRd5ttHkV+1R250GxwQ5r45YFvkaeiuqQKB2TB1SYr3Zf7EeZqQmfQMwWgl9xoBguDv3jhZmFM2DFhoiNBiUGHcEwIwzAoVbv70CaOu5RXisdFRo6DpLDta3ly/jXBloHlv1niEM= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Aug 2018 15:38:15.4293 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: bf64a4f9-e62d-4738-0b7a-08d5fc7bcc24 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 0bc7f26d-0264-416e-a6fc-8352af79c58f X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB6PR0801MB2021 Sender: linux-fsdevel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-fsdevel@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP This and the next patches in this series aim to make time effect of synchronize_srcu() invisible for user. The patch splits unregister_shrinker() in two functions: unregister_shrinker_delayed_initiate() unregister_shrinker_delayed_finalize() and shrinker users may make the second of them to be called asynchronous (e.g., from workqueue). Next patches make superblock shrinker to follow this way, so user-visible umount() time won't contain delays from synchronize_srcu(). Signed-off-by: Kirill Tkhai --- include/linux/shrinker.h | 2 ++ mm/vmscan.c | 22 ++++++++++++++++++---- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/include/linux/shrinker.h b/include/linux/shrinker.h index 9443cafd1969..92062d1239c2 100644 --- a/include/linux/shrinker.h +++ b/include/linux/shrinker.h @@ -86,5 +86,7 @@ extern int prealloc_shrinker(struct shrinker *shrinker); extern void register_shrinker_prepared(struct shrinker *shrinker); extern int register_shrinker(struct shrinker *shrinker); extern void unregister_shrinker(struct shrinker *shrinker); +extern void unregister_shrinker_delayed_initiate(struct shrinker *shrinker); +extern void unregister_shrinker_delayed_finalize(struct shrinker *shrinker); extern void free_prealloced_shrinker(struct shrinker *shrinker); #endif diff --git a/mm/vmscan.c b/mm/vmscan.c index 2dc274a385b9..fba4996dfe25 100644 --- a/mm/vmscan.c +++ b/mm/vmscan.c @@ -422,10 +422,7 @@ int register_shrinker(struct shrinker *shrinker) } EXPORT_SYMBOL(register_shrinker); -/* - * Remove one - */ -void unregister_shrinker(struct shrinker *shrinker) +void unregister_shrinker_delayed_initiate(struct shrinker *shrinker) { if (!shrinker->nr_deferred) return; @@ -434,12 +431,29 @@ void unregister_shrinker(struct shrinker *shrinker) mutex_lock(&shrinker_mutex); list_del_rcu(&shrinker->list); mutex_unlock(&shrinker_mutex); +} +EXPORT_SYMBOL(unregister_shrinker_delayed_initiate); + +void unregister_shrinker_delayed_finalize(struct shrinker *shrinker) +{ + if (!shrinker->nr_deferred) + return; synchronize_srcu(&srcu); kfree(shrinker->nr_deferred); shrinker->nr_deferred = NULL; } +EXPORT_SYMBOL(unregister_shrinker_delayed_finalize); + +/* + * Remove one + */ +void unregister_shrinker(struct shrinker *shrinker) +{ + unregister_shrinker_delayed_initiate(shrinker); + unregister_shrinker_delayed_finalize(shrinker); +} EXPORT_SYMBOL(unregister_shrinker); #define SHRINK_BATCH 128