> The problem is that when EAGAIN is returned by sendmsg,
BTW this is already problem. UDP should not hit EAGAIN case, if the
predicate is right.
> requests), and then reactivate it as soon as sock_wspace() reports
> that the available free buffer space is large enough to fit the next
> request.
sock_wspace() is OK. sock_writable() is bad.
> released and that sock_wspace() does indeed reflect more or less the
> maximum message size for which there is free buffer space (I allow a
> couple of kilobytes for extra padding)
Do not economize. :-) The longer you wait the less you scheduled.
We used to wait for half of sndbuf to be freed.
> then the current UDP code
> should be correct and race-free.
BTW recently I was reported it deadlocks on some spinlock...
Alexey
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/