From: Tejun Heo <tj@kernel.org>
To: Alan Stern <stern@rowland.harvard.edu>
Cc: Jens Axboe <axboe@kernel.dk>, "Rafael J. Wysocki" <rjw@sisk.pl>,
Linux-pm mailing list <linux-pm@vger.kernel.org>,
Kernel development list <linux-kernel@vger.kernel.org>
Subject: Re: Bug in disk event polling
Date: Fri, 10 Feb 2012 16:23:49 -0800 [thread overview]
Message-ID: <20120211002349.GN19392@google.com> (raw)
In-Reply-To: <Pine.LNX.4.44L0.1202101631180.1179-100000@iolanthe.rowland.org>
Hello,
On Fri, Feb 10, 2012 at 04:44:48PM -0500, Alan Stern wrote:
> > I think it should be nrt. It assumes that no one else is running it
> > concurrently; otherwise, multiple CPUs could jump into
> > disk->fops->check_events() concurrently which can be pretty ugly.
>
> Come to mention it, how can a single work item ever run on more than
> one CPU concurrently? Are you concerned about cases where some other
> thread requeues the work item while it is executing?
Yeah, there are multiple paths which may queue the work item. For
polling work, it definitely was possible but maybe locking changes
afterwards removed that. Even then, it would be better to use nrt wq
as bug caused that way would be very difficult to track down.
> The problem is that these async threads generally aren't freezable.
> They will continue to run and do I/O while a system goes through a
> sleep transition. How should this be handled?
I think it would be better to use wq for most kthreads. A lot of them
aren't strictly correct in the way they deal with
kthread_should_stop() and freezing. kthread in general simply seems
way too difficult to use correctly.
> kthread_run() can be adjusted on a case-by-case basis, by inserting
> calls to set_freezable() and try_to_freeze() at the appropriate places.
> But what about async_schedule()?
Given the stuff async is used for, maybe just make all async execution
freezable?
Thanks.
--
tejun
next prev parent reply other threads:[~2012-02-11 0:23 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-02-10 20:31 Bug in disk event polling Alan Stern
2012-02-10 20:46 ` Tejun Heo
2012-02-10 21:03 ` Alan Stern
2012-02-10 21:12 ` Tejun Heo
2012-02-10 21:44 ` Alan Stern
2012-02-11 0:23 ` Tejun Heo [this message]
2012-02-12 17:48 ` Alan Stern
2012-02-12 21:26 ` Rafael J. Wysocki
2012-02-12 22:02 ` Alan Stern
2012-02-13 17:30 ` 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=20120211002349.GN19392@google.com \
--to=tj@kernel.org \
--cc=axboe@kernel.dk \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pm@vger.kernel.org \
--cc=rjw@sisk.pl \
--cc=stern@rowland.harvard.edu \
/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.