> It happens often enough and the episodes last long enough > that grabbing a handle dump while this is going on should be > easily done. > > Regarding the Win32 error code, backend/storage/file/fd.c > calls _commit(). > http://msdn2.microsoft.com/en-us/library/17618685(VS.80).aspx > It looks > like it is already using errno to report errors. Will > GetLastError() return something useful there?
Good point. Ran a quick test. If I open the file read-only and then fsync, I get errno=9 (EBADF) and GetLastError()=5. Which explains the fact that we got the wrong error-code. The *underlying API call* to _commit() returns access denied... Looking at the source to _commit(), if the call to FlushFileBuffers() returns an error, it will set _doserrno to that value,and then return with errno=EBADF. So, this basicalliyu means that FlushFileBuffers() returns ACCESS DENIED. //Magnus ---------------------------(end of broadcast)--------------------------- TIP 5: don't forget to increase your free space map settings