[PATCH] Fix ETIME handling for Solaris event ports
Ralph Boehme
rb at sernet.de
Thu Feb 4 21:33:30 UTC 2016
On Thu, Feb 04, 2016 at 01:32:51PM -0800, Jeremy Allison wrote:
> On Wed, Feb 03, 2016 at 03:24:48PM -0700, Nathan Huff wrote:
> > Turns out EINTR is even more messed up than ETIME. It is possible to not
> > get an event and not have nget updated either so you have to actually check
> > the event structure you get back. I have attached an updated patch to deal
> > with that situation as well.
>
> Reviewed-by: Jeremy Allison <jra at samba.org>
>
> Nice work Nathan, good catch.
>
> Can I get a second Team reviewer ?
Nack, I'm not convinced this is the correct fix. The EINTR handling
still seems wrong.
> > From c7790ac220217e4d6c03750e11eb2c03ace4df83 Mon Sep 17 00:00:00 2001
> > From: Nathan Huff <nhuff at acm.org>
> > Date: Wed, 3 Feb 2016 13:06:52 -0700
> > Subject: [PATCH] Handle ETIME and EINTR handling for solaris event ports.
> >
> > It is quite possible to get a return of -1 and a errno of ETIME from
> > port_getn and also get an event returned. The attached patch checks for
> > the number of events returned and if it isn't 0 it falls through to the
> > event handling code.
> >
> > If you get EINTR back it might be possible that you got an event, but it
> > also is possible that you didn't get an event and nget isn't updated so
> > you need to check whether the event list was actually filled in.
If I understand the Illumos libc sources correctly, we should
initialize nget to 0 before calling port_getn(). That way we can check
nget when port_getn returns -1 with ETIME or EINTR.
-Ralph
--
SerNet GmbH, Bahnhofsallee 1b, 37081 Göttingen
phone: +49-551-370000-0, fax: +49-551-370000-9
AG Göttingen, HRB 2816, GF: Dr. Johannes Loxen
http://www.sernet.de,mailto:kontakt@sernet.de
More information about the samba-technical
mailing list