On 05/19/2014 05:55 PM, Howard Chu wrote:
Hallvard Breien Furuseth wrote:
> Right... Though I can think of one non-kernel possibility:
> Previous process wrote something and got killed - maybe while
> fsyncing the changes. Then rapidly open and closed another mdb
> env - and close(sync descriptor) waits for the old changes to be
> synced in order to decide whether to return success or failure.
POSIX defines no such behavior for close(). In particular, close()'s
success/failure result cannot depend on some other process's state.
There is no other process. The point would be that the system's
only descriptor to a file with outstanding syncs is being closed.
And I wasn't thinking of POSIX particular, just trying to think
of reasons an OS might want to wait in close().
But "non-kernel" I said was wrong, more like it might be found
in some spec and not just the source.
Anyway, it was just a loose guess about what to look for, I'll
survive being proved wrong:-)