From: Oleg Nesterov <oleg@redhat.com>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Andrew Morton <akpm@linux-foundation.org>,
David Howells <dhowells@redhat.com>,
Thomas Gleixner <tglx@linutronix.de>,
Alexander Gordeev <agordeev@redhat.com>,
Chris Zankel <chris@zankel.net>, David Smith <dsmith@redhat.com>,
"Frank Ch. Eigler" <fche@redhat.com>,
Geert Uytterhoeven <geert@linux-m68k.org>,
Larry Woodman <lwoodman@redhat.com>,
Peter Zijlstra <peterz@infradead.org>, Tejun Heo <tj@kernel.org>,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH v4 1/3] task_work_add: generic process-context callbacks
Date: Sat, 14 Apr 2012 22:27:08 +0200 [thread overview]
Message-ID: <20120414202708.GA8656@redhat.com> (raw)
In-Reply-To: <CA+55aFxSyCmxv=fZTMgnq3OSTQjj5R4izKFotBExpAu1M5BsQg@mail.gmail.com>
On 04/14, Linus Torvalds wrote:
>
> On Fri, Apr 13, 2012 at 8:39 PM, Oleg Nesterov <oleg@redhat.com> wrote:
> >>
> > Once the caller does task_work_add(twork), it no longer "owns" this
> > twork.
> >
> > But, if task_work_cancel() succeeds - you own it again.
>
> *IF* it succeeds.
Sure.
> >> But then you can't allocate it on the stack any more, and have to
> >> allocate it separately.
> >
> > Yes, unless you do task_work_add/cancel(current).
>
> Ok, your argument seems to be that "current" is special, and can not
> race, because the work execution is always synchronous with the task
> it got scheduled on.
Yes, exactly.
> And that whole "run_task_work()" function should *not* take a "task"
> pointer, because it would be horribly horribly wrong to ever run it in
> any context than "current".
And it was task_work_queue(void) initially. But then I decided to
micro-optimize this, the callers already have this task_struct in
the register. And we have other examples like this, say, exit_mm().
However. I agree that it would be more understandable and clean
to use current in task_work_run(void), and percpu_read is cheap.
So I'll remove this argument and send v5 after David reviews 3/3.
Oleg.
next prev parent reply other threads:[~2012-04-14 20:27 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-04-14 2:12 [PATCH v4 0/3] task_work_add (was: task_work_queue) Oleg Nesterov
2012-04-14 2:12 ` [PATCH v4 1/3] task_work_add: generic process-context callbacks Oleg Nesterov
2012-04-14 2:40 ` Linus Torvalds
2012-04-14 3:05 ` Oleg Nesterov
2012-04-17 13:53 ` David Howells
2012-04-17 16:16 ` Oleg Nesterov
2012-04-14 3:39 ` Oleg Nesterov
2012-04-14 8:00 ` Linus Torvalds
2012-04-14 20:27 ` Oleg Nesterov [this message]
2012-04-14 2:12 ` [PATCH v4 2/3] genirq: reimplement exit_irq_thread() hook via task_work_add() Oleg Nesterov
2012-04-17 14:11 ` David Howells
2012-04-17 16:29 ` Oleg Nesterov
2012-04-14 2:12 ` [PATCH v4 3/3] cred: change keyctl_session_to_parent() to use task_work_add() Oleg Nesterov
2012-04-17 14:23 ` David Howells
2012-04-17 16:36 ` Oleg Nesterov
2012-04-17 19:34 ` Oleg Nesterov
2012-04-19 16:52 ` David Howells
2012-04-19 17:34 ` Oleg Nesterov
2012-04-19 17:36 ` Oleg Nesterov
2012-04-19 17:55 ` David Howells
2012-04-19 18:10 ` Oleg Nesterov
2012-04-19 18:40 ` Oleg Nesterov
2012-04-19 19:34 ` David Howells
2012-04-19 19:47 ` Oleg Nesterov
2012-04-19 22:26 ` David Howells
2012-04-14 2:32 ` [PATCH v4 0/3] task_work_add (was: task_work_queue) Linus Torvalds
2012-04-14 3:28 ` Oleg Nesterov
2012-04-14 18:08 ` Peter Zijlstra
2012-04-14 20:17 ` Oleg Nesterov
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=20120414202708.GA8656@redhat.com \
--to=oleg@redhat.com \
--cc=agordeev@redhat.com \
--cc=akpm@linux-foundation.org \
--cc=chris@zankel.net \
--cc=dhowells@redhat.com \
--cc=dsmith@redhat.com \
--cc=fche@redhat.com \
--cc=geert@linux-m68k.org \
--cc=linux-kernel@vger.kernel.org \
--cc=lwoodman@redhat.com \
--cc=peterz@infradead.org \
--cc=tglx@linutronix.de \
--cc=tj@kernel.org \
--cc=torvalds@linux-foundation.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.