[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