On Tue, Sep 8, 2009 at 12:42 PM, Michael Burk<bur...@gmail.com> wrote: > Sorry - here they are.
OK, I don't see anything funny there. I think it's finally time to take this to the OpenBSD list and see if they can find anything in this wilderness. It might help to provide a pointer to the archive of this (now *very* long) thread. I took a look at the kernel source.. EAGAIN only appears in a few places, and from what I can tell is adequately protected by O_NONBLOCK/FNONBLOCK in sys_pipe.c. Looking at sys_fcntl, the F_GETFL path is very simple and doesn't do any kind of caching that might change behavior. At this point, I'm guessing that this may be a race condition, and that the fcntl() calls are just enough to change the winner of the race. File flags are global to the open file -- they are not duplicated on a fork, and do not track with a particular process. So, hypothetically, if amandad opens a file descriptor, hands it off to sendbackup, and then sets it to nonblocking mode, then we would see this behavior. The only wrinkle in this theory is that amandad very quickly closes its copy of the file, and doesn't ever set it to nonblocking mode. At this point, I'm out of options. Dustin -- Open Source Storage Engineer http://www.zmanda.com