[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <Z7tZTCsQop1Oxk_O@bombadil.infradead.org>
Date: Sun, 23 Feb 2025 09:22:20 -0800
From: Luis Chamberlain <mcgrof@...nel.org>
To: Ruiwu Chen <rwchen404@...il.com>,
Joel Granados <joel.granados@...nel.org>
Cc: linux-kernel@...r.kernel.org, linux-fsdevel@...r.kernel.org,
linux-doc@...r.kernel.org, corbet@....net, viro@...iv.linux.org.uk,
keescook@...omium.org, zachwade.k@...il.com
Subject: Re: [PATCH v2] drop_caches: re-enable message after disabling
On Sat, Feb 22, 2025 at 04:45:13PM +0800, Ruiwu Chen wrote:
> When 'echo 4 > /proc/sys/vm/drop_caches' the message is disabled,
> but there is no interface to enable the message, only by restarting
> the way, so add the 'echo 0 > /proc/sys/vm/drop_caches' way to
> enabled the message again.
>
> Signed-off-by: Ruiwu Chen <rwchen404@...il.com>
You are overcomplicating things, if you just want to re-enable messages
you can just use:
- stfu |= sysctl_drop_caches & 4;
+ stfu = sysctl_drop_caches & 4;
The bool is there as 4 is intended as a bit flag, you can can figure
out what values you want and just append 4 to it to get the expected
result.
Luis
> ---
> v2: - updated Documentation/ to note this new API.
> - renamed the variable.
> - rebase this on top of sysctl-next [1].
> [1] https://git.kernel.org/pub/scm/linux/kernel/git/sysctl/sysctl.git/log/?h=sysctl-next
>
> Documentation/admin-guide/sysctl/vm.rst | 11 ++++++++++-
> fs/drop_caches.c | 11 +++++++----
> 2 files changed, 17 insertions(+), 5 deletions(-)
>
> diff --git a/Documentation/admin-guide/sysctl/vm.rst b/Documentation/admin-guide/sysctl/vm.rst
> index f48eaa98d22d..ef73d36e8b84 100644
> --- a/Documentation/admin-guide/sysctl/vm.rst
> +++ b/Documentation/admin-guide/sysctl/vm.rst
> @@ -266,7 +266,16 @@ used::
> cat (1234): drop_caches: 3
>
> These are informational only. They do not mean that anything is wrong
> -with your system. To disable them, echo 4 (bit 2) into drop_caches.
> +with your system.
> +
> +To disable informational::
> +
> + echo 4 > /proc/sys/vm/drop_caches
> +
> +To enable informational::
> +
> + echo 0 > /proc/sys/vm/drop_caches
> +
>
> enable_soft_offline
> ===================
> diff --git a/fs/drop_caches.c b/fs/drop_caches.c
> index 019a8b4eaaf9..a49af7023886 100644
> --- a/fs/drop_caches.c
> +++ b/fs/drop_caches.c
> @@ -57,7 +57,7 @@ static int drop_caches_sysctl_handler(const struct ctl_table *table, int write,
> if (ret)
> return ret;
> if (write) {
> - static int stfu;
> + static bool silent;
>
> if (sysctl_drop_caches & 1) {
> lru_add_drain_all();
> @@ -68,12 +68,15 @@ static int drop_caches_sysctl_handler(const struct ctl_table *table, int write,
> drop_slab();
> count_vm_event(DROP_SLAB);
> }
> - if (!stfu) {
> + if (!silent) {
> pr_info("%s (%d): drop_caches: %d\n",
> current->comm, task_pid_nr(current),
> sysctl_drop_caches);
> }
> - stfu |= sysctl_drop_caches & 4;
> + if (sysctl_drop_caches == 0)
> + silent = true;
> + else if (sysctl_drop_caches == 4)
> + silent = false;
> }
> return 0;
> }
> @@ -85,7 +88,7 @@ static const struct ctl_table drop_caches_table[] = {
> .maxlen = sizeof(int),
> .mode = 0200,
> .proc_handler = drop_caches_sysctl_handler,
> - .extra1 = SYSCTL_ONE,
> + .extra1 = SYSCTL_ZERO,
> .extra2 = SYSCTL_FOUR,
> },
> };
> --
> 2.27.0
>
Powered by blists - more mailing lists