All of lore.kernel.org
 help / color / mirror / Atom feed
From: Lance Yang <lance.yang@linux.dev>
To: Aaron Tomlin <atomlin@atomlin.com>
Cc: sean@ashe.io, linux-kernel@vger.kernel.org, pmladek@suse.com,
	gregkh@linuxfoundation.org, mhiramat@kernel.org,
	akpm@linux-foundation.org
Subject: Re: [PATCH v2 2/2] hung_task: Enable runtime reset of hung_task_detect_count
Date: Thu, 11 Dec 2025 13:14:38 +0800	[thread overview]
Message-ID: <d243b030-ef26-4fc0-b88c-b27b7cd80880@linux.dev> (raw)
In-Reply-To: <20251211033004.1628875-3-atomlin@atomlin.com>



On 2025/12/11 11:30, Aaron Tomlin wrote:
> Introduce support for writing to /proc/sys/kernel/hung_task_detect_count.
> 
> Writing any value to this file atomically resets the counter of detected
> hung tasks to zero. This grants system administrators the ability to clear
> the cumulative diagnostic history after resolving an incident, simplifying
> monitoring without requiring a system restart.
> 
> Signed-off-by: Aaron Tomlin <atomlin@atomlin.com>
> ---
>   Documentation/admin-guide/sysctl/kernel.rst |  2 +-
>   kernel/hung_task.c                          | 30 +++++++++++++++++++--
>   2 files changed, 29 insertions(+), 3 deletions(-)
> 
> diff --git a/Documentation/admin-guide/sysctl/kernel.rst b/Documentation/admin-guide/sysctl/kernel.rst
> index 239da22c4e28..43c17b919969 100644
> --- a/Documentation/admin-guide/sysctl/kernel.rst
> +++ b/Documentation/admin-guide/sysctl/kernel.rst
> @@ -418,7 +418,7 @@ hung_task_detect_count
>   ======================
>   
>   Indicates the total number of tasks that have been detected as hung since
> -the system boot.
> +the system boot. The counter can be reset to zero when written to.
>   
>   This file shows up if ``CONFIG_DETECT_HUNG_TASK`` is enabled.
>   
> diff --git a/kernel/hung_task.c b/kernel/hung_task.c
> index 6f3fb26378b5..979b7e2fcc19 100644
> --- a/kernel/hung_task.c
> +++ b/kernel/hung_task.c
> @@ -377,6 +377,32 @@ static long hung_timeout_jiffies(unsigned long last_checked,
>   }
>   
>   #ifdef CONFIG_SYSCTL
> +
> +/**
> + * proc_dohung_task_detect_count - proc handler for hung_task_detect_count
> + *
> + * Handles read access for the hung task counter. For write access, it
> + * accepts any successfully parsed value and atomically resets the counter
> + * to zero. Returns the byte count written on success or a negative error
> + * code on failure.
> + */
> +static int proc_dohung_task_detect_count(const struct ctl_table *table, int write,
> +					 void *buffer, size_t *lenp, loff_t *ppos)
> +{
> +	int ret;
> +
> +	if (!write)
> +		return proc_doulongvec_minmax(table, write, buffer, lenp, ppos);
> +
> +	ret = proc_doulongvec_minmax(table, write, buffer, lenp, ppos);

Since the intent is "any write resets to zero", we could skip parsing
the input entirely (untested):

	WRITE_ONCE(sysctl_hung_task_detect_count, 0);
	*ppos += *lenp;
	return 0;

See vmstat_refresh() for a similar pattern :)

> +	if (ret)
> +		return ret;
> +
> +	WRITE_ONCE(sysctl_hung_task_detect_count, 0);
> +
> +	return ret;
> +}

Cheers,
Lance

> +
>   /*
>    * Process updating of timeout sysctl
>    */
> @@ -459,8 +485,8 @@ static const struct ctl_table hung_task_sysctls[] = {
>   		.procname	= "hung_task_detect_count",
>   		.data		= &sysctl_hung_task_detect_count,
>   		.maxlen		= sizeof(unsigned long),
> -		.mode		= 0444,
> -		.proc_handler	= proc_doulongvec_minmax,
> +		.mode		= 0644,
> +		.proc_handler	= proc_dohung_task_detect_count,
>   	},
>   	{
>   		.procname	= "hung_task_sys_info",


  reply	other threads:[~2025-12-11  5:14 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-12-11  3:30 [PATCH v2 0/2] hung_task: Provide runtime reset interface for hung task detector Aaron Tomlin
2025-12-11  3:30 ` [PATCH v2 1/2] hung_task: Consolidate hung task warning into an atomic log block Aaron Tomlin
2025-12-11  8:02   ` Greg KH
2025-12-15 23:44     ` Aaron Tomlin
2025-12-11  3:30 ` [PATCH v2 2/2] hung_task: Enable runtime reset of hung_task_detect_count Aaron Tomlin
2025-12-11  5:14   ` Lance Yang [this message]
2025-12-15 23:38     ` Aaron Tomlin
2025-12-11 15:49   ` kernel test robot
2025-12-15  5:00   ` kernel test robot

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=d243b030-ef26-4fc0-b88c-b27b7cd80880@linux.dev \
    --to=lance.yang@linux.dev \
    --cc=akpm@linux-foundation.org \
    --cc=atomlin@atomlin.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mhiramat@kernel.org \
    --cc=pmladek@suse.com \
    --cc=sean@ashe.io \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.