From: "Michael Kerrisk (man-pages)" <mtk.manpages-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
To: Darren Hart <dvhart-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org>,
Thomas Gleixner <tglx-hfZtesqFncYOwBW4kG4KsQ@public.gmane.org>
Cc: mtk.manpages-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org,
Torvald Riegel <triegel-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>,
Carlos O'Donell <carlos-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>,
Ingo Molnar <mingo-X9Un+BFzKDI@public.gmane.org>,
Jakub Jelinek <jakub-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>,
linux-man <linux-man-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
lkml <linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
Davidlohr Bueso <dave-h16yJtLeMjHk1uMJSBkQmQ@public.gmane.org>,
Arnd Bergmann <arnd-r2nGTMty4D4@public.gmane.org>,
Steven Rostedt <rostedt-nx8X9YLhiw1AfugRpC6u6w@public.gmane.org>,
Peter Zijlstra <peterz-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org>,
Linux API <linux-api-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
Roland McGrath <roland-/Z5OmTQCD9xF6kxbq+BtvQ@public.gmane.org>,
Anton Blanchard <anton-eUNUBHrolfbYtjvyW6yDsg@public.gmane.org>,
Eric Dumazet <edumazet-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org>,
bill o gallmeister
<bgallmeister-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>,
Jan Kiszka <jan.kiszka-kv7WeFo6aLtBDgjK7y7TUQ@public.gmane.org>,
Daniel Wagner <wagi-kQCPcA+X3s7YtjvyW6yDsg@public.gmane.org>,
Rich Felker <dalias-8zAoT0mYgF4@public.gmane.org>,
Andy Lutomirski <luto-kltTT9wpgjJwATOyAt5JVQ@public.gmane.org>,
bert hubert <bert.hubert-dxZxOz86jR8sYtaaK7K+xw@public.gmane.org>,
Rusty Russell <rusty-8n+1lVoiYb80n/F98K4Iww@public.gmane.org>,
Heinrich Schuchardt <xypron.glpk-Mmb7MZpHnFY@public.gmane.org>
Subject: Re: Next round: revised futex(2) man page for review
Date: Thu, 30 Jul 2015 10:19:03 +0200 [thread overview]
Message-ID: <55B9DDF7.4010308@gmail.com> (raw)
In-Reply-To: <20150729042141.GA62059@vmdeb7>
On 07/29/2015 06:21 AM, Darren Hart wrote:
> On Tue, Jul 28, 2015 at 09:11:41PM -0700, Darren Hart wrote:
>> On Tue, Jul 28, 2015 at 10:23:51PM +0200, Thomas Gleixner wrote:
>>> On Mon, 27 Jul 2015, Michael Kerrisk (man-pages) wrote:
>>
>> ...
>>
>>>> FUTEX_REQUEUE (since Linux 2.6.0)
>>>> .\" FIXME(Torvald) Is there some indication that FUTEX_REQUEUE is broken
>>>> .\" in general, or is this comment implicitly speaking about the
>>>> .\" condvar (?) use case? If the latter we might want to weaken the
>>>> .\" advice below a little.
>>>> .\" [Anyone else have input on this?]
>>>
>>> The condvar use case exposes the flaw nicely, but that's pretty much
>>> true for everything which wants a sane requeue operation.
>>
>> In an earlier discussion I argued this point (that FUTURE_REQUEUE is broken and
>> should not be used in new code) and someone argued strongly against... stating
>> that there were legitimate uses for it. Of course I'm struggling to find the
>> thread and the reference at the moment - immensely useful, I know.
>>
>> I'll continue trying to find it and see if it can be useful here. I believe
>> Torvald was on the thread as well.
>>
>
> Found it on libc-alpha, here it is for reference:
>
> From: Rich Felker <dalias-8zAoT0mYgF4@public.gmane.org>
> Date: Wed, 29 Oct 2014 22:43:17 -0400
> To: Darren Hart <dvhart-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org>
> Cc: Carlos O'Donell <carlos-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>, Roland McGrath <roland-/Z5OmTQCD9xF6kxbq+BtvQ@public.gmane.org>,
> Torvald Riegel <triegel-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>, GLIBC Devel <libc-alpha-9JcytcrH/bA+uJoB2kUjGw@public.gmane.org>,
> Michael Kerrisk <mtk.manpages-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
> Subject: Re: Add futex wrapper to glibc?
>
> On Wed, Oct 29, 2014 at 06:59:15PM -0700, Darren Hart wrote:
> > > We are IMO at the stage where futex is stable, few things are
> > > changing, and with documentation in place, I would consider adding a
> > > futex wrapper.
> >
> > Yes, at least for the defined OP codes. New OPs may be added of
> > course, but that isn't a concern for supporting what exists today, and
> > doesn't break compatibility.
> >
> > I wonder though... can we not wrap FUTEX_REQUEUE? It's fundamentally
> > broken. FUTEX_CMP_REQUEUE should *always* be used instead. The glibc
> > wrapper is one way to encourage developers to do the right thing
> > (don't expose the bad op in the header).
>
> You're mistaken here. There are plenty of valid ways to use
> FUTEX_REQUEUE - for example if the calling thread is requeuing the
> target(s) to a lock that the calling thread owns. Just because it
> doesn't meet the needs of the way glibc was using it internally
> doesn't mean it's useless for other applications.
>
> In any case, I don't think there's a proposal to intercept/modify the
> commands to futex, just to pass them through (and possibly do a
> cancellable syscall for some of them).
>
> Rich
>
>
>>>
>>>> Avoid using this operation. It is broken for its intended
>>>> purpose. Use FUTEX_CMP_REQUEUE instead.
>>>>
>>>> This operation performs the same task as
>>>> FUTEX_CMP_REQUEUE, except that no check is made using the
>>>> value in val3. (The argument val3 is ignored.)
Thanks, Darren, that's really helpful! I've removed the statement in the man
page that FUTEX_REQUEUE is broken.
By the way, Darren. There were a couple of FIXMEs in the page where you are
explicitly mentioned by name. Could you take a look at those? Specifically,
the large block of text starting at:
>> .\" FIXME XXX The following is my attempt at a definition of PI futexes,
>> .\" based on mail discussions with Darren Hart. Does it seem okay?
(tglx looked at this and blessed it, but I'd like you also to check.)
Cheers,
Michael
--
Michael Kerrisk
Linux man-pages maintainer; http://www.kernel.org/doc/man-pages/
Linux/UNIX System Programming Training: http://man7.org/training/
WARNING: multiple messages have this Message-ID (diff)
From: "Michael Kerrisk (man-pages)" <mtk.manpages@gmail.com>
To: Darren Hart <dvhart@infradead.org>, Thomas Gleixner <tglx@linutronix.de>
Cc: mtk.manpages@gmail.com, Torvald Riegel <triegel@redhat.com>,
"Carlos O'Donell" <carlos@redhat.com>,
Ingo Molnar <mingo@elte.hu>, Jakub Jelinek <jakub@redhat.com>,
linux-man <linux-man@vger.kernel.org>,
lkml <linux-kernel@vger.kernel.org>,
Davidlohr Bueso <dave@stgolabs.net>,
Arnd Bergmann <arnd@arndb.de>,
Steven Rostedt <rostedt@goodmis.org>,
Peter Zijlstra <peterz@infradead.org>,
Linux API <linux-api@vger.kernel.org>,
Roland McGrath <roland@hack.frob.com>,
Anton Blanchard <anton@samba.org>,
Eric Dumazet <edumazet@google.com>,
bill o gallmeister <bgallmeister@gmail.com>,
Jan Kiszka <jan.kiszka@siemens.com>,
Daniel Wagner <wagi@monom.org>, Rich Felker <dalias@libc.org>,
Andy Lutomirski <luto@amacapital.net>,
bert hubert <bert.hubert@netherlabs.nl>,
Rusty Russell <rusty@rustcorp.com.au>,
Heinrich Schuchardt <xypron.glpk@gmx.de>
Subject: Re: Next round: revised futex(2) man page for review
Date: Thu, 30 Jul 2015 10:19:03 +0200 [thread overview]
Message-ID: <55B9DDF7.4010308@gmail.com> (raw)
In-Reply-To: <20150729042141.GA62059@vmdeb7>
On 07/29/2015 06:21 AM, Darren Hart wrote:
> On Tue, Jul 28, 2015 at 09:11:41PM -0700, Darren Hart wrote:
>> On Tue, Jul 28, 2015 at 10:23:51PM +0200, Thomas Gleixner wrote:
>>> On Mon, 27 Jul 2015, Michael Kerrisk (man-pages) wrote:
>>
>> ...
>>
>>>> FUTEX_REQUEUE (since Linux 2.6.0)
>>>> .\" FIXME(Torvald) Is there some indication that FUTEX_REQUEUE is broken
>>>> .\" in general, or is this comment implicitly speaking about the
>>>> .\" condvar (?) use case? If the latter we might want to weaken the
>>>> .\" advice below a little.
>>>> .\" [Anyone else have input on this?]
>>>
>>> The condvar use case exposes the flaw nicely, but that's pretty much
>>> true for everything which wants a sane requeue operation.
>>
>> In an earlier discussion I argued this point (that FUTURE_REQUEUE is broken and
>> should not be used in new code) and someone argued strongly against... stating
>> that there were legitimate uses for it. Of course I'm struggling to find the
>> thread and the reference at the moment - immensely useful, I know.
>>
>> I'll continue trying to find it and see if it can be useful here. I believe
>> Torvald was on the thread as well.
>>
>
> Found it on libc-alpha, here it is for reference:
>
> From: Rich Felker <dalias@libc.org>
> Date: Wed, 29 Oct 2014 22:43:17 -0400
> To: Darren Hart <dvhart@infradead.org>
> Cc: Carlos O'Donell <carlos@redhat.com>, Roland McGrath <roland@hack.frob.com>,
> Torvald Riegel <triegel@redhat.com>, GLIBC Devel <libc-alpha@sourceware.org>,
> Michael Kerrisk <mtk.manpages@gmail.com>
> Subject: Re: Add futex wrapper to glibc?
>
> On Wed, Oct 29, 2014 at 06:59:15PM -0700, Darren Hart wrote:
> > > We are IMO at the stage where futex is stable, few things are
> > > changing, and with documentation in place, I would consider adding a
> > > futex wrapper.
> >
> > Yes, at least for the defined OP codes. New OPs may be added of
> > course, but that isn't a concern for supporting what exists today, and
> > doesn't break compatibility.
> >
> > I wonder though... can we not wrap FUTEX_REQUEUE? It's fundamentally
> > broken. FUTEX_CMP_REQUEUE should *always* be used instead. The glibc
> > wrapper is one way to encourage developers to do the right thing
> > (don't expose the bad op in the header).
>
> You're mistaken here. There are plenty of valid ways to use
> FUTEX_REQUEUE - for example if the calling thread is requeuing the
> target(s) to a lock that the calling thread owns. Just because it
> doesn't meet the needs of the way glibc was using it internally
> doesn't mean it's useless for other applications.
>
> In any case, I don't think there's a proposal to intercept/modify the
> commands to futex, just to pass them through (and possibly do a
> cancellable syscall for some of them).
>
> Rich
>
>
>>>
>>>> Avoid using this operation. It is broken for its intended
>>>> purpose. Use FUTEX_CMP_REQUEUE instead.
>>>>
>>>> This operation performs the same task as
>>>> FUTEX_CMP_REQUEUE, except that no check is made using the
>>>> value in val3. (The argument val3 is ignored.)
Thanks, Darren, that's really helpful! I've removed the statement in the man
page that FUTEX_REQUEUE is broken.
By the way, Darren. There were a couple of FIXMEs in the page where you are
explicitly mentioned by name. Could you take a look at those? Specifically,
the large block of text starting at:
>> .\" FIXME XXX The following is my attempt at a definition of PI futexes,
>> .\" based on mail discussions with Darren Hart. Does it seem okay?
(tglx looked at this and blessed it, but I'd like you also to check.)
Cheers,
Michael
--
Michael Kerrisk
Linux man-pages maintainer; http://www.kernel.org/doc/man-pages/
Linux/UNIX System Programming Training: http://man7.org/training/
next prev parent reply other threads:[~2015-07-30 8:19 UTC|newest]
Thread overview: 45+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-07-27 12:07 Next round: revised futex(2) man page for review Michael Kerrisk (man-pages)
2015-07-27 12:07 ` Michael Kerrisk (man-pages)
[not found] ` <55B61EF3.7080302-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2015-07-28 20:23 ` Thomas Gleixner
2015-07-28 20:23 ` Thomas Gleixner
2015-07-28 20:45 ` Peter Zijlstra
2015-07-28 20:45 ` Peter Zijlstra
[not found] ` <20150728204508.GG19282-ndre7Fmf5hadTX5a5knrm8zTDFooKrT+cvkQGrU6aU0@public.gmane.org>
2015-07-28 21:03 ` Thomas Gleixner
2015-07-28 21:03 ` Thomas Gleixner
2015-08-08 6:56 ` Michael Kerrisk (man-pages)
2015-08-08 6:56 ` Michael Kerrisk (man-pages)
2015-07-29 2:09 ` Davidlohr Bueso
2015-07-29 2:09 ` Davidlohr Bueso
2015-07-29 4:11 ` Darren Hart
2015-07-29 4:11 ` Darren Hart
2015-07-29 4:21 ` Darren Hart
2015-07-29 4:21 ` Darren Hart
2015-07-29 12:00 ` Thomas Gleixner
2015-07-29 12:00 ` Thomas Gleixner
2015-07-30 8:19 ` Michael Kerrisk (man-pages) [this message]
2015-07-30 8:19 ` Michael Kerrisk (man-pages)
2015-08-08 6:53 ` Michael Kerrisk (man-pages)
2015-08-08 6:53 ` Michael Kerrisk (man-pages)
[not found] ` <55C5A787.9010806-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2015-08-19 23:17 ` Thomas Gleixner
2015-08-19 23:17 ` Thomas Gleixner
2015-08-26 6:29 ` Darren Hart
2015-08-26 6:29 ` Darren Hart
2015-10-07 8:30 ` Michael Kerrisk (man-pages)
2015-10-07 8:30 ` Michael Kerrisk (man-pages)
[not found] ` <5614D836.7070506-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2015-10-08 14:36 ` Darren Hart
2015-10-08 14:36 ` Darren Hart
2015-08-05 22:21 ` Darren Hart
2015-08-08 6:57 ` Michael Kerrisk (man-pages)
2015-08-08 6:57 ` Michael Kerrisk (man-pages)
[not found] ` <55C5A85F.3020202-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2015-08-24 21:47 ` Darren Hart
2015-08-24 21:47 ` Darren Hart
2015-08-19 22:40 ` Thomas Gleixner
2015-08-19 22:40 ` Thomas Gleixner
2015-08-18 12:45 ` Darren Hart
2015-08-18 12:45 ` Darren Hart
2015-10-07 9:34 ` Michael Kerrisk (man-pages)
2015-10-07 9:34 ` Michael Kerrisk (man-pages)
[not found] ` <5614E71B.3040500-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2015-10-08 14:46 ` Darren Hart
2015-10-08 14:46 ` Darren Hart
[not found] <trinity-f9a7a25f-09e9-4409-b656-0e035dfca0b5-1438006633780@msvc-mesg-gmx010>
2015-07-27 14:44 ` Michael Kerrisk (man-pages)
2015-07-27 14:44 ` Michael Kerrisk (man-pages)
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=55B9DDF7.4010308@gmail.com \
--to=mtk.manpages-re5jqeeqqe8avxtiumwx3w@public.gmane.org \
--cc=anton-eUNUBHrolfbYtjvyW6yDsg@public.gmane.org \
--cc=arnd-r2nGTMty4D4@public.gmane.org \
--cc=bert.hubert-dxZxOz86jR8sYtaaK7K+xw@public.gmane.org \
--cc=bgallmeister-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \
--cc=carlos-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org \
--cc=dalias-8zAoT0mYgF4@public.gmane.org \
--cc=dave-h16yJtLeMjHk1uMJSBkQmQ@public.gmane.org \
--cc=dvhart-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org \
--cc=edumazet-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org \
--cc=jakub-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org \
--cc=jan.kiszka-kv7WeFo6aLtBDgjK7y7TUQ@public.gmane.org \
--cc=linux-api-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=linux-man-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=luto-kltTT9wpgjJwATOyAt5JVQ@public.gmane.org \
--cc=mingo-X9Un+BFzKDI@public.gmane.org \
--cc=peterz-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org \
--cc=roland-/Z5OmTQCD9xF6kxbq+BtvQ@public.gmane.org \
--cc=rostedt-nx8X9YLhiw1AfugRpC6u6w@public.gmane.org \
--cc=rusty-8n+1lVoiYb80n/F98K4Iww@public.gmane.org \
--cc=tglx-hfZtesqFncYOwBW4kG4KsQ@public.gmane.org \
--cc=triegel-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org \
--cc=wagi-kQCPcA+X3s7YtjvyW6yDsg@public.gmane.org \
--cc=xypron.glpk-Mmb7MZpHnFY@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 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.