On Mon, 7 Nov 2011, Howard Chu wrote:
It seems that back-mdb really expects FDSYNC and fdatasync be available on target system. Currently FreeBSD does not have implemented these semantics (yet).
I've made a workaround in the FreeBSD port to make it work; it would be nice to have configure script test if FDSYNC and fdatasync is available and make the corresponding workaround (FSYNC and fsync) if not so building from source would just work.
You're welcome to submit appropriate patches for configure.in and any affected code.
Do you envision issues with using msync() instead, across the board? I would think that, given that back-mdb only makes sense when _POSIX_MAPPED_FILES, msync would present a more portable way of getting to the underlying fsync()/fdatasync() calls. (Heck, on Linux, it's just a couple lines of error checking wrapping a vfs_fsync().)
Xin: is msync() available on FreeBSD? You're mentioning fsync as the proposed patch...