On 01/06/2012 07:10 AM, Joerg Schilling wrote: >> The question is not why an archiver opens a FIFO file, but what it does >> after opening a file O_NONBLOCK (the TOCTTOU race is eliminated by >> switching stat()/open() to open()/fstat() filtering, and once we have >> ascertained that an open fd is not a FIFO, if we can then use fcntl() to >> remove the O_NONBLOCK, hopefully that will resolve the situation with DMF). > >>From the mail from the OP, this will still trigger the problem as the open >>will > already return EWOULDBLOCK instead of fetching the file from the background > storage.
Huh? From the OP: openat(AT_FDCWD, "qsub_allocation.patch", O_RDONLY|O_NOCTTY|O_NONBLOCK|O_NOFOLLOW|O_CLOEXEC) = 4 ... read(4, 0x654200, 2986) = -1 EAGAIN (Resource temporarily unavailable) The open() succeeded, not failing with EWOULDBLOCK. It wasn't until the read() that things failed, and that was only because there was no intervening fcntl() on fd 4 to clear the O_NONBLOCK flag. -- Eric Blake [email protected] +1-919-301-3266 Libvirt virtualization library http://libvirt.org
signature.asc
Description: OpenPGP digital signature
