Re: [RFC][PATCH 3/3] ipc/sem: Rework wakeup scheme

From: Manfred Spraul
Date: Sat Sep 17 2011 - 08:26:00 EST


On 09/16/2011 02:18 PM, Peter Zijlstra wrote:
On Thu, 2011-09-15 at 19:29 +0200, Manfred Spraul wrote:
What is broken?
So basically sembench was broken and the futex patch is causing spurious
wakeups.

I've got the below patch to fix up the sem code.

One more question, do the sem wakeups need to be issued in FIFO order?
There's a comment in there:

* User space visible behavior:
* - FIFO ordering for semop() operations (just FIFO, not starvation
* protection)

that seems to suggest the sem ops processing is in FIFO order, but does
the user visible effect propagate to the wakeup order?
I'd ask the question the other way arould:
Is the wakeup order user visible?
IMHO: No, the scheduler might reorder the tasks anyway.


/*
* If an interrupt occurred we have to clean up the queue
*/
if (timeout&& jiffies_left == 0)
error = -EAGAIN;
+
+ if (error == -EINTR&& !signal_pending(current))
+ goto retry;
+
unlink_queue(sma,&queue);

out_unlock_free:
Good solution.
-ERESTARTNOHAND would be even better, but this is definitively better than the current code.

--
Manfred
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/