[ovs-dev] [PATCH 4/4] netlink-socket: Simplify multithreaded dumping to match Linux reality.
Joe Stringer
joestringer at nicira.com
Wed Jul 16 05:12:58 UTC 2014
On 16 July 2014 05:55, Ben Pfaff <blp at nicira.com> wrote:
>
> The kernel shouldn't ever return EAGAIN if there's more data to dump.
> When dumping is single-threaded (as in branch-1.11) or serialized (as
> post-commit 0791315e4d), the kernel implements that correctly. When
> dumping is multithreaded, the kernel has races that screw it up, and
> each thread can get EAGAIN if it loses a race. (I tried to explain
> this in the commit message for commit 0791315e4d.) I'm pretty sure
> that this is OK because that's how OVS worked throughout the whole OVS
> 1.x series.
>
Thanks for explaining. Is it worth commenting this assumption in the code?
> * Current master, if a different error code is returned, will store the
> > error code and stop dumping. This code appears to fall through and
> continue
> > reading from the buffer. Maybe the '0' is meant to be 'error'?
>
> Oops. Yes.
>
> I think that the other return could just pass along EAGAIN instead of
> converting it to EPROTO.
>
That sounds fine.
> EOF has a negative value (which is guaranteed by ANSI C and by POSIX),
> normally -1 (but that part isn't guaranteed).
>
Now I know :-)
More information about the dev
mailing list