On Monday 23 February 2009, Matthew Wilcox wrote: > On Sun, Feb 22, 2009 at 09:43:36PM -0500, Carlos O'Donell wrote: > > flock is not POSIX, it's an interface invented by 4.2BSD, and was > > previously emulated by glibc. The glibc wrapper implemented flock > > with fcntl and made sure to return EWOULDBLOCK. As an additional data point, openbsd's flock man page also says it should return EWOULDBLOCK. > We actually can do better than this ... > > #ifdef __KERNEL__ > #define EWOULDBLOCK EAGAIN > #else > #define EWOULDBLOCK /* whatever the fuck HPUX uses */ > #endif > > Now our kernel never returns -EWOULDBLOCK, only -EAGAIN. Correct > applications must check for both. Incorrect applications tend to > only check for AGAIN, not WOULDBLOCK. Problem solved. This seems to be the current behaviour WRT flock(). But this is broken. An application (like apr in this case) that checks for the documented and well established return code is _not_ incorrect. For apr in Debian, I will simply add the check for EAGAIN. But this is cannot be the general solution. Cheers, Stefan -- To unsubscribe from this list: send the line "unsubscribe linux-arch" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html