From: Kent Overstreet <kmo@daterainc.com>
To: Benjamin LaHaise <bcrl@kvack.org>
Cc: Chris Mason <clm@fb.com>,
linux-fsdevel@vger.kernel.org, linux-aio@kvack.org,
Peter Zijlstra <peterz@infradead.org>
Subject: Re: [PATCH RFC] fs/aio: fix sleeping while TASK_INTERRUPTIBLE
Date: Wed, 24 Dec 2014 19:29:36 -0800 [thread overview]
Message-ID: <20141225032936.GC4415@kmo-pixel> (raw)
In-Reply-To: <20141225031134.GI17185@kvack.org>
On Wed, Dec 24, 2014 at 10:11:34PM -0500, Benjamin LaHaise wrote:
> On Wed, Dec 24, 2014 at 06:59:58PM -0800, Kent Overstreet wrote:
> > On Tue, Dec 23, 2014 at 04:58:47PM -0500, Benjamin LaHaise wrote:
> > > Hi Chris,
> > >
> > > On Tue, Dec 23, 2014 at 01:55:26PM -0500, Chris Mason wrote:
> > > > Works for me, the patch is mostly a (somewhat commented) list of all
> > > > the places we're currently doing it wrong.
> > >
> > > I think the following change should suffice to fix this issue, and it's a
> > > lot easier to review, too. I've given this a quick test, and it works for
> > > me. I do have one concern: is it safe to call mutex_lock() when the current
> > > task is already on other wait queues? If the answer is no, then it may be
> > > necessary to convert ->ring_lock back into spinlock as it was prior to 3.10
> > > to avoid using mutex_lock(). The same question applies to kmap() and
> > > copy_to_user(), and those concerns might have implications across the rest
> > > of the kernel. Thoughts?
> > >
> > > + __set_current_state(state);
> >
> > I don't think this is safe - if we race, and another thread wakes us up, we're
> > setting our state back to TASK_INTERRUPTIBLE _without_ us being on the waitlist.
>
> It should be -- the conditions for going to sleep are checked after current's
> state is set here.
Ah - and then you set the task state back to TASK_RUNNING if _any_ events were
found... yeah, I guess that seems safe. Probably worth a few comments, though :)
--
To unsubscribe, send a message with 'unsubscribe linux-aio' in
the body to majordomo@kvack.org. For more info on Linux AIO,
see: http://www.kvack.org/aio/
Don't email: <a href=mailto:"aart@kvack.org">aart@kvack.org</a>
next prev parent reply other threads:[~2014-12-25 3:29 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-12-23 0:16 [PATCH RFC] fs/aio: fix sleeping while TASK_INTERRUPTIBLE Chris Mason
2014-12-23 18:43 ` Benjamin LaHaise
2014-12-23 18:55 ` Chris Mason
2014-12-23 21:58 ` Benjamin LaHaise
2014-12-25 2:59 ` Kent Overstreet
2014-12-25 3:11 ` Benjamin LaHaise
2014-12-25 3:29 ` Kent Overstreet [this message]
2014-12-29 1:24 ` Chris Mason
2014-12-25 2:56 ` Kent Overstreet
2014-12-25 14:27 ` Sedat Dilek
2015-01-04 10:16 ` Sedat Dilek
2014-12-29 15:08 ` Chris Mason
2014-12-29 22:08 ` Kent Overstreet
2015-01-13 16:06 ` Benjamin LaHaise
2015-01-13 16:20 ` Chris Mason
2015-01-21 10:13 ` Dave Chinner
2015-01-21 21:42 ` Chris Mason
2015-02-03 9:14 ` Sedat Dilek
2015-02-03 9:54 ` Sedat Dilek
2015-02-09 3:08 ` Sedat Dilek
2015-02-09 4:21 ` Sedat Dilek
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=20141225032936.GC4415@kmo-pixel \
--to=kmo@daterainc.com \
--cc=bcrl@kvack.org \
--cc=clm@fb.com \
--cc=linux-aio@kvack.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=peterz@infradead.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 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.