All of lore.kernel.org
 help / color / mirror / Atom feed
From: Aaron Tomlin <atomlin@redhat.com>
To: Ulrich Obergfell <uobergfe@redhat.com>
Cc: linux-kernel@vger.kernel.org, akpm@linux-foundation.org,
	dzickus@redhat.com
Subject: Re: [PATCH 3/5] watchdog: implement error handling in update_watchdog_all_cpus() and callers
Date: Tue, 29 Sep 2015 07:40:46 +0100	[thread overview]
Message-ID: <20150929064046.GI25024@atomlin.usersys.redhat.com> (raw)
In-Reply-To: <1443473052-3053-4-git-send-email-uobergfe@redhat.com>

[-- Attachment #1: Type: text/plain, Size: 2278 bytes --]

On Mon 2015-09-28 22:44 +0200, Ulrich Obergfell wrote:
> update_watchdog_all_cpus() now passes errors from watchdog_park_threads()
> up to functions in the call chain. This allows watchdog_enable_all_cpus()
> and proc_watchdog_update() to handle such errors too.
> 
> Signed-off-by: Ulrich Obergfell <uobergfe@redhat.com>
> ---
>  kernel/watchdog.c | 30 +++++++++++++++++++++++-------
>  1 file changed, 23 insertions(+), 7 deletions(-)
> 
> diff --git a/kernel/watchdog.c b/kernel/watchdog.c
> index eb9527c..457113c 100644
> --- a/kernel/watchdog.c
> +++ b/kernel/watchdog.c
> @@ -731,10 +731,17 @@ void lockup_detector_resume(void)
>  	mutex_unlock(&watchdog_proc_mutex);
>  }
>  
> -static void update_watchdog_all_cpus(void)
> +static int update_watchdog_all_cpus(void)
>  {
> -	watchdog_park_threads();
> +	int ret;
> +
> +	ret = watchdog_park_threads();
> +	if (ret)
> +		return ret;
> +
>  	watchdog_unpark_threads();
> +
> +	return 0;
>  }
>  
>  static int watchdog_enable_all_cpus(void)
> @@ -753,9 +760,17 @@ static int watchdog_enable_all_cpus(void)
>  		 * Enable/disable the lockup detectors or
>  		 * change the sample period 'on the fly'.
>  		 */
> -		update_watchdog_all_cpus();
> +		err = update_watchdog_all_cpus();
> +
> +		if (err) {
> +			watchdog_disable_all_cpus();
> +			pr_err("Failed to update lockup detectors, disabled\n");
> +		}
>  	}
>  
> +	if (err)
> +		watchdog_enabled = 0;
> +
>  	return err;
>  }
>  
> @@ -851,12 +866,13 @@ static int proc_watchdog_common(int which, struct ctl_table *table, int write,
>  		} while (cmpxchg(&watchdog_enabled, old, new) != old);
>  
>  		/*
> -		 * Update the run state of the lockup detectors.
> -		 * Restore 'watchdog_enabled' on failure.
> +		 * Update the run state of the lockup detectors. There is _no_
> +		 * need to check the value returned by proc_watchdog_update()
> +		 * and to restore the previous value of 'watchdog_enabled' as
> +		 * both lockup detectors are disabled if proc_watchdog_update()
> +		 * returns an error.
>  		 */
>  		err = proc_watchdog_update();
> -		if (err)
> -			watchdog_enabled = old;
>  	}
>  out:
>  	mutex_unlock(&watchdog_proc_mutex);

Reviewed-by: Aaron Tomlin <atomlin@redhat.com>

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 819 bytes --]

  reply	other threads:[~2015-09-29  6:40 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-09-28 20:44 [PATCH 0/5] improve handling of errors returned by kthread_park() Ulrich Obergfell
2015-09-28 20:44 ` [PATCH 1/5] watchdog: fix error handling in proc_watchdog_thresh() Ulrich Obergfell
2015-09-29  6:39   ` Aaron Tomlin
2015-09-28 20:44 ` [PATCH 2/5] watchdog: move watchdog_disable_all_cpus() outside of ifdef Ulrich Obergfell
2015-09-29  6:40   ` Aaron Tomlin
2015-09-29 23:37   ` Andrew Morton
2015-09-28 20:44 ` [PATCH 3/5] watchdog: implement error handling in update_watchdog_all_cpus() and callers Ulrich Obergfell
2015-09-29  6:40   ` Aaron Tomlin [this message]
2015-09-28 20:44 ` [PATCH 4/5] watchdog: implement error handling in lockup_detector_suspend() Ulrich Obergfell
2015-09-29  6:41   ` Aaron Tomlin
2015-09-28 20:44 ` [PATCH 5/5] watchdog: do not unpark threads in watchdog_park_threads() on error Ulrich Obergfell
2015-09-29  6:41   ` Aaron Tomlin
2015-09-29 23:30 ` [PATCH 0/5] improve handling of errors returned by kthread_park() Andrew Morton
2015-09-30 10:54   ` Ulrich Obergfell
2015-10-12 21:13 ` Don Zickus

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=20150929064046.GI25024@atomlin.usersys.redhat.com \
    --to=atomlin@redhat.com \
    --cc=akpm@linux-foundation.org \
    --cc=dzickus@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=uobergfe@redhat.com \
    /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.