From: Tejun Heo <tj-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
To: Petr Mladek <pmladek-AlSwsSmVLrQ@public.gmane.org>
Cc: Andrew Morton
<akpm-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org>,
Oleg Nesterov <oleg-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>,
Ingo Molnar <mingo-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>,
Peter Zijlstra <peterz-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org>,
Richard Weinberger <richard-/L3Ra7n9ekc@public.gmane.org>,
Steven Rostedt <rostedt-nx8X9YLhiw1AfugRpC6u6w@public.gmane.org>,
David Woodhouse <dwmw2-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org>,
linux-mtd-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org,
Trond Myklebust
<trond.myklebust-7I+n7zu2hftEKMMhf/gKZA@public.gmane.org>,
Anna Schumaker
<anna.schumaker-HgOvQuBEEgTQT0dZR+AlfA@public.gmane.org>,
linux-nfs-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
Chris Mason <clm-b10kYP2dOMg@public.gmane.org>,
"Paul E. McKenney"
<paulmck-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.org>,
Thomas Gleixner <tglx-hfZtesqFncYOwBW4kG4KsQ@public.gmane.org>,
Linus Torvalds
<torvalds-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org>,
Jiri Kosina <jkosina-AlSwsSmVLrQ@public.gmane.org>,
Borislav Petkov <bp-l3A5Bk7waGM@public.gmane.org>,
Michal Hocko <mhocko-AlSwsSmVLrQ@public.gmane.org>,
live-patching-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
linux-api-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
Subject: Re: [RFC PATCH 07/18] kthread: Make iterant kthreads freezable by default
Date: Tue, 9 Jun 2015 16:20:03 +0900 [thread overview]
Message-ID: <20150609072003.GY21465@mtj.duckdns.org> (raw)
In-Reply-To: <1433516477-5153-8-git-send-email-pmladek-AlSwsSmVLrQ@public.gmane.org>
Hello, Petr.
On Fri, Jun 05, 2015 at 05:01:06PM +0200, Petr Mladek wrote:
> Many kthreads already calls set_freezable() before they enter the main
> cycle. One of the reasons for creating iterant kthreads is to create
> a safe point for freezing and make even more kthreads properly
> freezable. Therefore it would make sense to set all iterant
> kthreads freezable by default.
Actually, for most cases, making kthreads freezable is unnecessary and
often indicative of something going wrong. This is a crude mechanism
which goes along the line of "if all threads are stopped, the machine
should be safe to be put into whatever state", which isn't true at all
as there usually are a lot of stuff going on asynchronously especially
when interacting with hardware.
In most cases, we want to implement proper power management callbacks
which plug new issuance of whatever work-unit the code is dealing with
and drain in-flight ones. Whether the worker threads are frozen or
not doesn't matter once that's implemented.
It seems that people have been marking kthreads freezable w/o really
thinking about it - some of them are subtly broken due to missing
drainage of in-flight things while others simply don't need freezing
for correctness.
We do want to clean up freezer usage in the kernel but definitely do
not want to make kthreads freezable by default especially given that
the freezer essentially is one giant lockdep-less system-wide lock.
> However some kthreads might be hard to make properly freezable.
> For example, if they do non-interruptible sleeps. They would
> need to explicitly clear PF_NOFREEZE flag in the init() call.
> But it should be avoided whenever possible.
So, big no here.
Thanks.
--
tejun
--
To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
next prev parent reply other threads:[~2015-06-09 7:20 UTC|newest]
Thread overview: 62+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-06-05 15:00 [RFC PATCH 00/18] kthreads/signal: Safer kthread API and signal handling Petr Mladek
2015-06-05 15:01 ` [RFC PATCH 01/18] kthread: Allow to call __kthread_create_on_node() with va_list args Petr Mladek
2015-06-05 15:01 ` [RFC PATCH 03/18] kthread: Add kthread_stop_current() Petr Mladek
2015-06-05 15:01 ` [RFC PATCH 04/18] signal: Rename kernel_sigaction() to kthread_sigaction() and clean it up Petr Mladek
[not found] ` <1433516477-5153-1-git-send-email-pmladek-AlSwsSmVLrQ@public.gmane.org>
2015-06-05 15:01 ` [RFC PATCH 02/18] kthread: Add API for iterant kthreads Petr Mladek
[not found] ` <1433516477-5153-3-git-send-email-pmladek-AlSwsSmVLrQ@public.gmane.org>
2015-06-09 6:23 ` Tejun Heo
[not found] ` <20150609062349.GW21465-qYNAdHglDFBN0TnZuCh8vA@public.gmane.org>
2015-06-15 12:46 ` Petr Mladek
2015-06-05 15:01 ` [RFC PATCH 05/18] freezer/scheduler: Add freezable_cond_resched() Petr Mladek
2015-06-05 15:01 ` [RFC PATCH 06/18] signal/kthread: Initial implementation of kthread signal handling Petr Mladek
[not found] ` <1433516477-5153-7-git-send-email-pmladek-AlSwsSmVLrQ@public.gmane.org>
2015-06-06 21:58 ` Oleg Nesterov
[not found] ` <20150606215816.GB15591-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2015-06-08 13:51 ` Petr Mladek
[not found] ` <20150608135107.GB3135-KsEp0d+Q8qECVLCxKZUutA@public.gmane.org>
2015-06-08 21:13 ` Oleg Nesterov
[not found] ` <20150608211336.GB24869-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2015-06-15 13:13 ` Petr Mladek
[not found] ` <20150615131341.GN9409-KsEp0d+Q8qECVLCxKZUutA@public.gmane.org>
2015-06-15 19:14 ` Oleg Nesterov
[not found] ` <20150615191429.GA29727-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2015-06-16 7:54 ` Petr Mladek
2015-06-09 7:10 ` Tejun Heo
[not found] ` <20150609071022.GX21465-qYNAdHglDFBN0TnZuCh8vA@public.gmane.org>
2015-06-09 12:15 ` Jiri Kosina
[not found] ` <alpine.LNX.2.00.1506091405360.12753-ztGlSCb7Y1iN3ZZ/Hiejyg@public.gmane.org>
2015-06-10 3:13 ` Tejun Heo
2015-06-05 15:01 ` [RFC PATCH 08/18] kthread: Allow to get struct kthread_iterant from task_struct Petr Mladek
2015-06-05 15:01 ` [RFC PATCH 12/18] lockd: Convert the central lockd service to kthread_iterant API Petr Mladek
2015-06-05 15:01 ` [RFC PATCH 15/18] ring_buffer: Allow to exit the ring buffer benchmark immediately Petr Mladek
[not found] ` <1433516477-5153-16-git-send-email-pmladek-AlSwsSmVLrQ@public.gmane.org>
2015-06-08 17:44 ` Steven Rostedt
[not found] ` <20150608134417.3fb7a811-f9ZlEuEWxVcJvu8Pb33WZ0EMvNT87kid@public.gmane.org>
2015-06-15 15:23 ` Petr Mladek
[not found] ` <20150615152313.GC3135-KsEp0d+Q8qECVLCxKZUutA@public.gmane.org>
2015-06-15 15:33 ` Steven Rostedt
2015-06-15 15:54 ` Petr Mladek
2015-06-05 15:01 ` [RFC PATCH 17/18] ring_buffer: Use the new API for a sleep with a timeout in the benchmark Petr Mladek
2015-06-09 6:10 ` [RFC PATCH 00/18] kthreads/signal: Safer kthread API and signal handling Tejun Heo
[not found] ` <20150609061025.GU21465-qYNAdHglDFBN0TnZuCh8vA@public.gmane.org>
2015-06-09 7:58 ` Tejun Heo
2015-06-17 11:34 ` Christoph Hellwig
2015-06-05 15:01 ` [RFC PATCH 07/18] kthread: Make iterant kthreads freezable by default Petr Mladek
[not found] ` <1433516477-5153-8-git-send-email-pmladek-AlSwsSmVLrQ@public.gmane.org>
2015-06-09 7:20 ` Tejun Heo [this message]
[not found] ` <20150609072003.GY21465-qYNAdHglDFBN0TnZuCh8vA@public.gmane.org>
2015-06-09 15:53 ` Petr Mladek
[not found] ` <20150609155313.GC9409-KsEp0d+Q8qECVLCxKZUutA@public.gmane.org>
2015-06-10 4:31 ` Tejun Heo
[not found] ` <20150610043154.GG11955-qYNAdHglDFBN0TnZuCh8vA@public.gmane.org>
2015-06-12 13:24 ` Petr Mladek
[not found] ` <20150612132440.GH9409-KsEp0d+Q8qECVLCxKZUutA@public.gmane.org>
2015-06-13 23:22 ` Tejun Heo
[not found] ` <20150613232222.GB346-qYNAdHglDFBN0TnZuCh8vA@public.gmane.org>
2015-06-15 9:28 ` Petr Mladek
2015-06-05 15:01 ` [RFC PATCH 09/18] kthread: Make it easier to correctly sleep in iterant kthreads Petr Mladek
[not found] ` <1433516477-5153-10-git-send-email-pmladek-AlSwsSmVLrQ@public.gmane.org>
2015-06-05 16:10 ` Peter Zijlstra
[not found] ` <20150605161021.GJ19282-ndre7Fmf5hadTX5a5knrm8zTDFooKrT+cvkQGrU6aU0@public.gmane.org>
2015-06-08 10:01 ` Petr Mladek
2015-06-08 11:39 ` Peter Zijlstra
2015-06-09 15:25 ` Petr Mladek
[not found] ` <20150609152526.GB9409-KsEp0d+Q8qECVLCxKZUutA@public.gmane.org>
2015-06-10 9:05 ` Peter Zijlstra
[not found] ` <20150608100107.GA3135-KsEp0d+Q8qECVLCxKZUutA@public.gmane.org>
2015-06-09 7:32 ` Tejun Heo
2015-06-08 17:48 ` Steven Rostedt
[not found] ` <20150608134810.3abd862b-f9ZlEuEWxVcJvu8Pb33WZ0EMvNT87kid@public.gmane.org>
2015-06-10 9:07 ` Peter Zijlstra
2015-06-10 14:07 ` Steven Rostedt
[not found] ` <20150610100729.6a674c15-f9ZlEuEWxVcJvu8Pb33WZ0EMvNT87kid@public.gmane.org>
2015-06-11 4:28 ` Jiri Kosina
2015-06-05 15:01 ` [RFC PATCH 10/18] jffs2: Remove forward definition of jffs2_garbage_collect_thread() Petr Mladek
2015-06-05 15:01 ` [RFC PATCH 11/18] jffs2: Convert jffs2_gcd_mtd kthread into the iterant API Petr Mladek
[not found] ` <1433516477-5153-12-git-send-email-pmladek-AlSwsSmVLrQ@public.gmane.org>
2015-06-06 21:16 ` Oleg Nesterov
[not found] ` <20150606211648.GA15591-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2015-06-06 21:32 ` Jiri Kosina
[not found] ` <alpine.LNX.2.00.1506062322550.12753-ztGlSCb7Y1iN3ZZ/Hiejyg@public.gmane.org>
2015-06-06 22:30 ` Oleg Nesterov
[not found] ` <20150606223001.GA18838-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2015-06-06 22:44 ` Jiri Kosina
[not found] ` <alpine.LNX.2.00.1506070034100.12753-ztGlSCb7Y1iN3ZZ/Hiejyg@public.gmane.org>
2015-06-06 22:58 ` Oleg Nesterov
2015-06-05 15:01 ` [RFC PATCH 13/18] ring_buffer: Use iterant kthreads API in the ring buffer benchmark Petr Mladek
2015-06-05 15:01 ` [RFC PATCH 14/18] ring_buffer: Allow to cleanly freeze the ring buffer benchmark kthreads Petr Mladek
2015-06-05 15:01 ` [RFC PATCH 16/18] kthread: Support interruptible sleep with a timeout by iterant kthreads Petr Mladek
2015-06-05 15:01 ` [RFC PATCH 18/18] jffs2: Use the new API for a sleep with a timeout Petr Mladek
2015-06-05 16:22 ` [RFC PATCH 00/18] kthreads/signal: Safer kthread API and signal handling Peter Zijlstra
[not found] ` <20150605162216.GK19282-ndre7Fmf5hadTX5a5knrm8zTDFooKrT+cvkQGrU6aU0@public.gmane.org>
2015-06-09 6:14 ` Tejun Heo
[not found] ` <20150609061446.GV21465-qYNAdHglDFBN0TnZuCh8vA@public.gmane.org>
2015-06-10 10:40 ` Peter Zijlstra
[not found] ` <20150610104057.GE3644-ndre7Fmf5hadTX5a5knrm8zTDFooKrT+cvkQGrU6aU0@public.gmane.org>
2015-06-11 22:02 ` Tejun Heo
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=20150609072003.GY21465@mtj.duckdns.org \
--to=tj-dgejt+ai2ygdnm+yrofe0a@public.gmane.org \
--cc=akpm-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org \
--cc=anna.schumaker-HgOvQuBEEgTQT0dZR+AlfA@public.gmane.org \
--cc=bp-l3A5Bk7waGM@public.gmane.org \
--cc=clm-b10kYP2dOMg@public.gmane.org \
--cc=dwmw2-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org \
--cc=jkosina-AlSwsSmVLrQ@public.gmane.org \
--cc=linux-api-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=linux-mtd-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org \
--cc=linux-nfs-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=live-patching-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=mhocko-AlSwsSmVLrQ@public.gmane.org \
--cc=mingo-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org \
--cc=oleg-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org \
--cc=paulmck-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.org \
--cc=peterz-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org \
--cc=pmladek-AlSwsSmVLrQ@public.gmane.org \
--cc=richard-/L3Ra7n9ekc@public.gmane.org \
--cc=rostedt-nx8X9YLhiw1AfugRpC6u6w@public.gmane.org \
--cc=tglx-hfZtesqFncYOwBW4kG4KsQ@public.gmane.org \
--cc=torvalds-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org \
--cc=trond.myklebust-7I+n7zu2hftEKMMhf/gKZA@public.gmane.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).