From patchwork Thu Jul 27 08:04:26 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Qi Zheng X-Patchwork-Id: 13329201 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 47D75C0015E for ; Thu, 27 Jul 2023 08:08:32 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id E4D216B0085; Thu, 27 Jul 2023 04:08:31 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id DFDEF8D0001; Thu, 27 Jul 2023 04:08:31 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id CC3EA6B0088; Thu, 27 Jul 2023 04:08:31 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id BD9C76B0085 for ; Thu, 27 Jul 2023 04:08:31 -0400 (EDT) Received: from smtpin06.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id 94A6F140FC8 for ; Thu, 27 Jul 2023 08:08:31 +0000 (UTC) X-FDA: 81056664822.06.B77CDAE Received: from mail-pf1-f172.google.com (mail-pf1-f172.google.com [209.85.210.172]) by imf14.hostedemail.com (Postfix) with ESMTP id B9CA2100005 for ; Thu, 27 Jul 2023 08:08:29 +0000 (UTC) Authentication-Results: imf14.hostedemail.com; dkim=pass header.d=bytedance.com header.s=google header.b=Xysv3RsP; spf=pass (imf14.hostedemail.com: domain of zhengqi.arch@bytedance.com designates 209.85.210.172 as permitted sender) smtp.mailfrom=zhengqi.arch@bytedance.com; dmarc=pass (policy=quarantine) header.from=bytedance.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1690445309; 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-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=PjmSZHUI5/Kx8ZOfBbo02iydikdUH/y22dszJBbwnrc=; b=Iath2tAqaN3GR35Somgm/3UFjWV7T5FDi5opE4MwElU5rxSFvVW3bWKGUeHQYmnUIQzAiv /q6sRvt1jZlg48CIiZcKMKoEKfoi3B5fh8lb5av/xk77wyf7j3raPUXZnZyqapoVsfRtvq 5Nlg3ww/j1QT+UtMiJH2HbADwk0H8nA= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1690445309; a=rsa-sha256; cv=none; b=7bE4B8sjCHm/EC7uQDHNCEentqKZG7MF3TpC5+zP4Y+yEZTRY0Mxj3rqLQMpyQlhunteWW x91uFu4xMi3X2BVeTK04dLGekV8HZlKbnOW95UgprO7uNcgol/Hw0CMjhK9k9ajwFgpE+Q ak5FWk8qFcV4BBftdWV4M5tFfZiTeZU= ARC-Authentication-Results: i=1; imf14.hostedemail.com; dkim=pass header.d=bytedance.com header.s=google header.b=Xysv3RsP; spf=pass (imf14.hostedemail.com: domain of zhengqi.arch@bytedance.com designates 209.85.210.172 as permitted sender) smtp.mailfrom=zhengqi.arch@bytedance.com; dmarc=pass (policy=quarantine) header.from=bytedance.com Received: by mail-pf1-f172.google.com with SMTP id d2e1a72fcca58-686f6231bdeso112718b3a.1 for ; Thu, 27 Jul 2023 01:08:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bytedance.com; s=google; t=1690445308; x=1691050108; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=PjmSZHUI5/Kx8ZOfBbo02iydikdUH/y22dszJBbwnrc=; b=Xysv3RsPsBshttSMBUyUOf01pFj7ACJomxAeSKClYNtUM/IzDnc+1qcVpxKo3Yk7lI PMJO/0QAsBuNTHH31vZSyAI+mqZzOZhxUKyEZ0z882UMy5ds0dV7wjv4n79QhgQIluxL 7aiFKUJGI5uVRXEWRoqfDwEepuojrPx+nt9lSRf3+jabTyI60DcKdVq5RfgL5+gSsYt+ gIHfo7xL/z2KDHdpCbDlWUD9Wlzvl0HFxAouF/jEEZTs97EVMQFcZk2wLBhFoNV93wDr cOODQ3G+tMDc7b4BNamRJNYxJL3PiF9jIw3/5zQqa59OSVfyqIzXn4AyZmUz4TWVr103 SUHw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1690445308; x=1691050108; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=PjmSZHUI5/Kx8ZOfBbo02iydikdUH/y22dszJBbwnrc=; b=dM87kg+ENnUo1k7nX7m72kaFZVCCxwMcXejraFBcRw1fZzj3HUzSFbtSFu3UjHa5e6 GCrd3qJlSd5EwsnSQjIxmdXzKwyWX8SIcwcY5aitifppcFwNaHpl2EOOWkhSwSEGynCQ RyNaOiCjeewAl8QTBOek5iy7k9ryhHzvTWtvqeOxX8Q6AjURZS+KsUMlDiVOTjEJORLc 2L7LddrN6bzYZMhwYYio/n6S9LPT5w3pDgu23a0vDVI0ydQmi8zeeZx5/XD+iDwmRTma 2FBJ4E88GnWGS/khXGTy/gDQsiKW5CSW/RuGNDeMJEF5a+sjn0Ie5zObmEMMfHjwZ9p3 HawA== X-Gm-Message-State: ABy/qLbRdfB/j3LmFRSQeiUne0pb+fITHhPEuuVuVRnwc/ljuUaIBvbe WFkBZvr8H7mBHotIdLE0iZRhCg== X-Google-Smtp-Source: APBJJlEap1sNysOWJSQnWaDnt336ll2X4eQUWxGjP7f0SXFaJg3Iw5H2LPNpa2qt6BR3D4CNzXfNwg== X-Received: by 2002:a05:6a00:4a0e:b0:677:3439:874a with SMTP id do14-20020a056a004a0e00b006773439874amr5196539pfb.3.1690445308627; Thu, 27 Jul 2023 01:08:28 -0700 (PDT) Received: from C02DW0BEMD6R.bytedance.net ([203.208.167.147]) by smtp.gmail.com with ESMTPSA id j8-20020aa78d08000000b006828e49c04csm885872pfe.75.2023.07.27.01.08.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 27 Jul 2023 01:08:28 -0700 (PDT) From: Qi Zheng 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, Qi Zheng Subject: [PATCH v3 13/49] gfs2: dynamically allocate the gfs2-qd shrinker Date: Thu, 27 Jul 2023 16:04:26 +0800 Message-Id: <20230727080502.77895-14-zhengqi.arch@bytedance.com> X-Mailer: git-send-email 2.24.3 (Apple Git-128) In-Reply-To: <20230727080502.77895-1-zhengqi.arch@bytedance.com> References: <20230727080502.77895-1-zhengqi.arch@bytedance.com> MIME-Version: 1.0 X-Rspamd-Queue-Id: B9CA2100005 X-Rspam-User: X-Stat-Signature: dxa314xy7gn671z8zkotd84xbs563g5a X-Rspamd-Server: rspam03 X-HE-Tag: 1690445309-1323 X-HE-Meta: U2FsdGVkX18jV/FCuIiZ3t6xPj1yNW8qGV/aOmEA89/BOfuJ7CKbTVs/oWzjRr5C9toq4k0kXcBRRDHBrxFsJYe8h0qmP144+AcQYdii5Insgo99yCDikbQBf9nT/prMzguRIHN7hvWtWVTAq/Xevw9Qwad+eGZr9VdQuKsrl70VrR2H/nw5U9LQmdUvZBVJ8iCAwhBnAWNAJbR2hqJhyF5csMQXYtX6j+7HWi1HkkSmGeJEjV1MFa/EtsK8KZStXfE9pWfzgJKNK6tS3DLBHA59G+DALPH7X7yk56aP6etZKFcTmdHicgwSiSK39NBrHK/S/07gn3mi5YPjzPhGfjrdrDXxfxU0ylaj9m0gO4bdiVYD3DRyyajIEnh/kY9vvYaIiTt/pvNcZu+n8vEDgupVKdnptS2COCtD5MmcKRe0JqZXi7FJi9NDd0d4g3MxM/qRlVzZSRWTr1GajvT086hzGt4AKNyFFm1g2BwsGYXXD3msQTFfH6GcHKMNaCFXBQywN5mQILNtLfAxsMH0fV4BbaYCCDeuK6uGpjSjbR/KQrteSwD4hdI+6nWLxCuZK7cGVETpqW9qoAeRyCnMGTZ4Wy5Ib3Mwc3w4IDKcV01wqsDGPy92wUnvOprVhir3D2bnPH3F9a1q3nak3xAHb+MhUgYsh58A/7sRJ8dQBCqhrtyn/awFU4h8u6VTHX9wOHub3e5tXXXElC+vZ/UQdqiOnych5/hDG7/PgABHHa8J+LTIvPkwrKxWVcF0GcwlGQNMvJf2QjGsm9mHQnfj+r1tE0bzpuBZf8dkJCY3leVgJcf138S2hD2R/3xryD0Vp3P22eFUGlxQ6Z/FYeaBHhCHFThww2JfXiJ5f9QeucIHn2PTCS/au7oJg9wh0jBd7Ly5l7M9odO5ITjeEOHzjz3puqCHOavh0Rnmtm7wnWl6uSpxyEayJTFBO7WFkxSAN0ouhAyqSzFzYIn/NBC XRaprQqO msUYZhzuJd85n7cwzP7KodZLj1Bqt+N7zr7Jj/YHENFGRJ9efutsRRXisRl8OIrvReAFA2WPbNMt6aP7w8XI67jqQzRC4KeMVEele88+cUYw1EzJlVj/Bu4kELAB8wZpNHgIID8Wn7gPG4EuzTEx5aTB79oNWgQQywbuGc145EUb1w/b4GiKkEJ0fi+6aWuFiRRbFhN44wACIOnGZF3BdhcwFqQTrRVJn5cKBI9vWTAMaZMDt3mvmCZLQkS1NnDdcBeJwAAtvK2ceZ6RcHeuVOEVZy2wwnqMULtQhI9nLsnCI0Mx72jKRrwqKVLC5nYYw8SXGcWvjqGecmG9xLbzbeKOwJkUhqwVa/UxZNXaeJMQ+VeMdsuLiD4EASVQ36dtQ36AScw6zwPAatyGGk2PWfUe9t+IjGCtxVEqXa61i7eNRx/d6ThRyG2A/rnqi6Klv4eRqpzNhVdQTkjU= 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: Use new APIs to dynamically allocate the gfs2-qd shrinker. Signed-off-by: Qi Zheng --- fs/gfs2/main.c | 6 +++--- fs/gfs2/quota.c | 26 ++++++++++++++++++++------ fs/gfs2/quota.h | 3 ++- 3 files changed, 25 insertions(+), 10 deletions(-) diff --git a/fs/gfs2/main.c b/fs/gfs2/main.c index afcb32854f14..e47b1cc79f59 100644 --- a/fs/gfs2/main.c +++ b/fs/gfs2/main.c @@ -147,7 +147,7 @@ static int __init init_gfs2_fs(void) if (!gfs2_trans_cachep) goto fail_cachep8; - error = register_shrinker(&gfs2_qd_shrinker, "gfs2-qd"); + error = gfs2_qd_shrinker_init(); if (error) goto fail_shrinker; @@ -196,7 +196,7 @@ static int __init init_gfs2_fs(void) fail_wq2: destroy_workqueue(gfs_recovery_wq); fail_wq1: - unregister_shrinker(&gfs2_qd_shrinker); + gfs2_qd_shrinker_exit(); fail_shrinker: kmem_cache_destroy(gfs2_trans_cachep); fail_cachep8: @@ -229,7 +229,7 @@ static int __init init_gfs2_fs(void) static void __exit exit_gfs2_fs(void) { - unregister_shrinker(&gfs2_qd_shrinker); + gfs2_qd_shrinker_exit(); gfs2_glock_exit(); gfs2_unregister_debugfs(); unregister_filesystem(&gfs2_fs_type); diff --git a/fs/gfs2/quota.c b/fs/gfs2/quota.c index aa5fd06d47bc..6cbf323bc4d0 100644 --- a/fs/gfs2/quota.c +++ b/fs/gfs2/quota.c @@ -186,13 +186,27 @@ static unsigned long gfs2_qd_shrink_count(struct shrinker *shrink, return vfs_pressure_ratio(list_lru_shrink_count(&gfs2_qd_lru, sc)); } -struct shrinker gfs2_qd_shrinker = { - .count_objects = gfs2_qd_shrink_count, - .scan_objects = gfs2_qd_shrink_scan, - .seeks = DEFAULT_SEEKS, - .flags = SHRINKER_NUMA_AWARE, -}; +static struct shrinker *gfs2_qd_shrinker; + +int __init gfs2_qd_shrinker_init(void) +{ + gfs2_qd_shrinker = shrinker_alloc(SHRINKER_NUMA_AWARE, "gfs2-qd"); + if (!gfs2_qd_shrinker) + return -ENOMEM; + + gfs2_qd_shrinker->count_objects = gfs2_qd_shrink_count; + gfs2_qd_shrinker->scan_objects = gfs2_qd_shrink_scan; + gfs2_qd_shrinker->seeks = DEFAULT_SEEKS; + + shrinker_register(gfs2_qd_shrinker); + return 0; +} + +void gfs2_qd_shrinker_exit(void) +{ + shrinker_free(gfs2_qd_shrinker); +} static u64 qd2index(struct gfs2_quota_data *qd) { diff --git a/fs/gfs2/quota.h b/fs/gfs2/quota.h index 21ada332d555..f0d54dcbbc75 100644 --- a/fs/gfs2/quota.h +++ b/fs/gfs2/quota.h @@ -59,7 +59,8 @@ static inline int gfs2_quota_lock_check(struct gfs2_inode *ip, } extern const struct quotactl_ops gfs2_quotactl_ops; -extern struct shrinker gfs2_qd_shrinker; +int __init gfs2_qd_shrinker_init(void); +void gfs2_qd_shrinker_exit(void); extern struct list_lru gfs2_qd_lru; extern void __init gfs2_quota_hash_init(void);