From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id BB507C001E0 for ; Thu, 27 Jul 2023 09:13:25 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 2BF388D0001; Thu, 27 Jul 2023 05:13:25 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 26F386B0074; Thu, 27 Jul 2023 05:13:25 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 1373C8D0001; Thu, 27 Jul 2023 05:13:25 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id 037396B0072 for ; Thu, 27 Jul 2023 05:13:25 -0400 (EDT) Received: from smtpin11.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id C939AA0463 for ; Thu, 27 Jul 2023 09:13:24 +0000 (UTC) X-FDA: 81056828328.11.57A5E71 Received: from mail-pf1-f178.google.com (mail-pf1-f178.google.com [209.85.210.178]) by imf05.hostedemail.com (Postfix) with ESMTP id DF36F100012 for ; Thu, 27 Jul 2023 09:13:22 +0000 (UTC) Authentication-Results: imf05.hostedemail.com; dkim=pass header.d=bytedance.com header.s=google header.b=DcofMrRn; dmarc=pass (policy=quarantine) header.from=bytedance.com; spf=pass (imf05.hostedemail.com: domain of zhengqi.arch@bytedance.com designates 209.85.210.178 as permitted sender) smtp.mailfrom=zhengqi.arch@bytedance.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1690449202; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=ab3i02uMNDVjAVrJgavtDQnv7B+TbSMr9u4LPtdCXIk=; b=QNCEB7u+m5w5k6zbn9hoaICv8DJdG6n0Nu/eUdRCiKewW1Aye6aJ0qAqFGFkCyuAFmlxOC pEyu655iSs/ngcDLdpubTMJ2xT9Dkq6O3kV/LnolFTUOOgur6B7GMAnRg5e5vXr0im6aLs PAgSB42+adKo4UmAlgQ0FHzutPc5+J4= ARC-Authentication-Results: i=1; imf05.hostedemail.com; dkim=pass header.d=bytedance.com header.s=google header.b=DcofMrRn; dmarc=pass (policy=quarantine) header.from=bytedance.com; spf=pass (imf05.hostedemail.com: domain of zhengqi.arch@bytedance.com designates 209.85.210.178 as permitted sender) smtp.mailfrom=zhengqi.arch@bytedance.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1690449202; a=rsa-sha256; cv=none; b=hvagXTvEWwpM5KOxNyEg2Dy//fCOEreB/1akjmnkmnszyR6C6kxFJSoNyPGclgProK86z4 NH8KA3RvVXMKaLyPC8sR8VuBJ6Euc7Na0YtgVgkMDw9yggbOO85YoM08xkWMiI1XrckBGf ghzVaVdEtfMrTyeo8I5NqrtZz/b5NVw= Received: by mail-pf1-f178.google.com with SMTP id d2e1a72fcca58-6862d4a1376so201870b3a.0 for ; Thu, 27 Jul 2023 02:13:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bytedance.com; s=google; t=1690449201; x=1691054001; h=content-transfer-encoding:in-reply-to:from:references:cc:to :content-language:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=ab3i02uMNDVjAVrJgavtDQnv7B+TbSMr9u4LPtdCXIk=; b=DcofMrRnwJynNkdGxtjH9DqKXau2yqZGatjPtAtzn+O56nMmwXuVd7ToeAQUojKhyr PVIHt52Ove4HfRkW5Jz6nWPZD9BmVLc7SbBBPIeMe8wFyfKaQIk+EbU0k3nRPfOKNwBh oCNv2ZD1HFVJTkxvMKWyxXL9Onk9dGrGolbp1H25aJz81J4GYNUwPghcXVGUuE5zAHUa mP22aBPwBQ4pP/D5mY0ghxG8TnuQLNORwYORdeX0ZvQJ20+Z3LaIninEXnknTqruUQCo Za3jxS8cFIItCGBaY6f3hGkZx+gttPFDrR9vIxhOGVxid7Al6RP9znkmq9WOz9AcYgeV IdKg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1690449201; x=1691054001; h=content-transfer-encoding:in-reply-to:from:references:cc:to :content-language:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=ab3i02uMNDVjAVrJgavtDQnv7B+TbSMr9u4LPtdCXIk=; b=HibWmCXMfam+pBh2H1FaphOIL59orRyHPib9pWPrtMnbz9TyOnzJ+IEF1remdqn9y/ n9iey1mGYts3b65MlrtyoQ3BflWlHgp3cDen8OL3kypjnMD95EzLo4e1P8S9I05RQmZV 8pkl56a/CLJXDKRYul4LnkNpYTQzP9KXaXR79XYSp9dxleHupRTj1i/9bHIVdRPLYHUg LyGToogphBuycZ8JrJQT4X0WvjQdBEiMKiEiH5v6xh8ZWC9gmzhIV1jkp82vGUNn4isB swOalE83pAa6eXq+R1+LbTbIDcPW6DbPUpwnLr41dtvVcrqc3yPkNYe03lBvCv0w2dho mxog== X-Gm-Message-State: ABy/qLZCkzccyK1ns2W7nEJ5VOdwoIx29f7F0N7woWF6KK1h2/u/PLyv 0IANqJE/6WKwf0KnYGyOtQsy/w== X-Google-Smtp-Source: APBJJlGBn5Xl2QFHzxgRMihSAaLd28csKz8Em946xGdOgBfe3ljiGqu5+YaMyvDFvdIkqmZPd3zpbQ== X-Received: by 2002:a05:6a00:4792:b0:668:834d:4bd with SMTP id dh18-20020a056a00479200b00668834d04bdmr4787709pfb.0.1690449201600; Thu, 27 Jul 2023 02:13:21 -0700 (PDT) Received: from [10.70.252.135] ([203.208.167.147]) by smtp.gmail.com with ESMTPSA id m26-20020a056a00165a00b006687b41c4dasm1017146pfc.110.2023.07.27.02.13.09 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 27 Jul 2023 02:13:21 -0700 (PDT) Message-ID: <961f6055-a395-8490-4c22-765a30668460@bytedance.com> Date: Thu, 27 Jul 2023 17:13:07 +0800 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:102.0) Gecko/20100101 Thunderbird/102.12.0 Subject: Re: [PATCH v3 27/49] dm: dynamically allocate the dm-bufio shrinker Content-Language: en-US To: akpm@linux-foundation.org, david@fromorbit.com, tkhai@ya.ru, vbabka@suse.cz, roman.gushchin@linux.dev, djwong@kernel.org, brauner@kernel.org, paulmck@kernel.org, tytso@mit.edu, steven.price@arm.com, cel@kernel.org, senozhatsky@chromium.org, yujie.liu@intel.com, gregkh@linuxfoundation.org, muchun.song@linux.dev Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org, x86@kernel.org, kvm@vger.kernel.org, xen-devel@lists.xenproject.org, linux-erofs@lists.ozlabs.org, linux-f2fs-devel@lists.sourceforge.net, cluster-devel@redhat.com, linux-nfs@vger.kernel.org, linux-mtd@lists.infradead.org, rcu@vger.kernel.org, netdev@vger.kernel.org, dri-devel@lists.freedesktop.org, linux-arm-msm@vger.kernel.org, dm-devel@redhat.com, linux-raid@vger.kernel.org, linux-bcache@vger.kernel.org, virtualization@lists.linux-foundation.org, linux-fsdevel@vger.kernel.org, linux-ext4@vger.kernel.org, linux-xfs@vger.kernel.org, linux-btrfs@vger.kernel.org, Muchun Song References: <20230727080502.77895-1-zhengqi.arch@bytedance.com> <20230727080502.77895-28-zhengqi.arch@bytedance.com> From: Qi Zheng In-Reply-To: <20230727080502.77895-28-zhengqi.arch@bytedance.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Rspam-User: X-Stat-Signature: soo18ytp565jjrgdxgrnht5ubtkba8rh X-Rspamd-Server: rspam07 X-Rspamd-Queue-Id: DF36F100012 X-HE-Tag: 1690449202-406440 X-HE-Meta: U2FsdGVkX18BDN8IsuzROlGq0QO44NbG0P+f27aiqve2nwP7N9tX+qMtlaY6qK0zOvcL4lBISjXS5LIAfR19eZojMbpWnX7iuvaXeAcAwRdMfBRrQYabls/ztt8LiKlL6InMWHiaI4jb6B33pmPeR6PHVe6M5yEkFIHLfZ4IatyAQKZ4ADNPWa1SBfJVlxXsXcyf8wTpVLLE+HRoJGUnG9lmaFxY8YiwGEQKDhloUpHQGQsC4I1IGDM2XuneBjZpA0oDNGpyE2SxoctdHR2r5/Sy68YJlyMQOHrOr0MYwfeXO7Z8A5pAfzV+XL9hgycMN2J0lnUhmehT5huYyDK5QhHhhxGHyHx13Nnj799lmIe9hrC2mkK+1lrqC5Cvrj/gOMrnSWq1xksgilzOz2HQQKyPZYiLBmdA6ROhTqoI4simBz6iK0hgb0gqBGjRgxIunW27Ddu+o/ZxrOlPUn9BA0+IPo/nfyG3Wy6se/hEmUgzqdesbzca25yTMK1y8Y8omnsWxVfGWv3myyFBo84PO5xVY/BtSmlQ7G1GCTsSCI6tJt17XZY81l6p5cLEBneln07qqu3MxixliM2Pv7S7CS4nF8mzXqHfxPE2UuOnZucVQEQYL3Mesva6Aeci4doD7TDH05/gNh1mZlSnIkno9YGw1ZNyUQk57kFKCGSzjEdvpH9s0nOozTCusvbBelXUQ7SI2TszeXyjlZAHPqRAFwNGA49Lk+55r96Ev29siz3BBTfyD492D4WY7sCS31exQOoN21XDBxfqUBALt4balNlDJst2hBGTTdh4khmTyxIYvy8TmyQHyXQoXitbQLv7/1xX4jj1I1r+BLDhfvmbwECkDjPE8ujtLg6dRV6bmG+S6fsUVxMD5qP3y8CAlYyeGiaWd2WoATUyLlZfhspBPSTeLB4aggjU34gJbq6hFIn5n2rUumZJv+R7BnG7yqFPlr6SMiPAJC5Lgrsrx2Z Se6Bdt1e ZvrQKd5gMkz7V0ojEd5Ss2gCuzIx6+yl/gouOs343cvMCYVKu3a0kktEWZ0LbujXMRz7UnnQ/rIQjy5nCg2YoUvCrmHJL4FRPtTS/zMHJfNe24//1k2XJuU9uJEgGGNuQYIeg4DZEIc5nCPnO9IMHeMhkLW34Xm/msd+Xsy+AFVn6BwFln6Yi/SVhGCKO18clYxL5+RwmuuC28tYK5Bidl6XZBdEM/X9QxUbl37ocAl6wDtKBLQYjh3ydm7B3yJ3vxGHJWyJV8AmfrTzjvR33KyE7ss/mJNd2d6/wgNBUxGZ7XSttBQC7QGMX/3d/rg5hOyjVP3q9p+lZSN8UJRAyx/KV9GbQTAiqqWGNAAyKP+PbX8jWmzvOPY39JtY5v++T+REXqICb3GP5Qm7wlcJWSJwwByhUDs+tx+4lqI7jfcgpRVs= X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: On 2023/7/27 16:04, Qi Zheng wrote: > In preparation for implementing lockless slab shrink, use new APIs to > dynamically allocate the dm-bufio shrinker, so that it can be freed > asynchronously using kfree_rcu(). Then it doesn't need to wait for RCU > read-side critical section when releasing the struct dm_bufio_client. > > Signed-off-by: Qi Zheng > Reviewed-by: Muchun Song > --- > drivers/md/dm-bufio.c | 26 +++++++++++++++----------- > 1 file changed, 15 insertions(+), 11 deletions(-) > > diff --git a/drivers/md/dm-bufio.c b/drivers/md/dm-bufio.c > index bc309e41d074..5a9124b83d53 100644 > --- a/drivers/md/dm-bufio.c > +++ b/drivers/md/dm-bufio.c > @@ -963,7 +963,7 @@ struct dm_bufio_client { > > sector_t start; > > - struct shrinker shrinker; > + struct shrinker *shrinker; > struct work_struct shrink_work; > atomic_long_t need_shrink; > > @@ -2368,7 +2368,7 @@ static unsigned long dm_bufio_shrink_scan(struct shrinker *shrink, struct shrink > { > struct dm_bufio_client *c; > > - c = container_of(shrink, struct dm_bufio_client, shrinker); > + c = shrink->private_data; > atomic_long_add(sc->nr_to_scan, &c->need_shrink); > queue_work(dm_bufio_wq, &c->shrink_work); > > @@ -2377,7 +2377,7 @@ static unsigned long dm_bufio_shrink_scan(struct shrinker *shrink, struct shrink > > static unsigned long dm_bufio_shrink_count(struct shrinker *shrink, struct shrink_control *sc) > { > - struct dm_bufio_client *c = container_of(shrink, struct dm_bufio_client, shrinker); > + struct dm_bufio_client *c = shrink->private_data; > unsigned long count = cache_total(&c->cache); > unsigned long retain_target = get_retain_buffers(c); > unsigned long queued_for_cleanup = atomic_long_read(&c->need_shrink); > @@ -2490,15 +2490,19 @@ struct dm_bufio_client *dm_bufio_client_create(struct block_device *bdev, unsign > INIT_WORK(&c->shrink_work, shrink_work); > atomic_long_set(&c->need_shrink, 0); > > - c->shrinker.count_objects = dm_bufio_shrink_count; > - c->shrinker.scan_objects = dm_bufio_shrink_scan; > - c->shrinker.seeks = 1; > - c->shrinker.batch = 0; > - r = register_shrinker(&c->shrinker, "dm-bufio:(%u:%u)", > - MAJOR(bdev->bd_dev), MINOR(bdev->bd_dev)); > - if (r) > + c->shrinker = shrinker_alloc(0, "dm-bufio:(%u:%u)", > + MAJOR(bdev->bd_dev), MINOR(bdev->bd_dev)); > + if (!c->shrinker) Here should set r to -ENOMEM, will fix. > goto bad; > > + c->shrinker->count_objects = dm_bufio_shrink_count; > + c->shrinker->scan_objects = dm_bufio_shrink_scan; > + c->shrinker->seeks = 1; > + c->shrinker->batch = 0; > + c->shrinker->private_data = c; > + > + shrinker_register(c->shrinker); > + > mutex_lock(&dm_bufio_clients_lock); > dm_bufio_client_count++; > list_add(&c->client_list, &dm_bufio_all_clients); > @@ -2537,7 +2541,7 @@ void dm_bufio_client_destroy(struct dm_bufio_client *c) > > drop_buffers(c); > > - unregister_shrinker(&c->shrinker); > + shrinker_free(c->shrinker); > flush_work(&c->shrink_work); > > mutex_lock(&dm_bufio_clients_lock);