00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #include "db_config.h"
00011
00012 #ifndef NO_SYSTEM_INCLUDES
00013 #include <sys/types.h>
00014
00015 #include <fcntl.h>
00016 #include <string.h>
00017 #endif
00018
00019 #include "db_int.h"
00020
00021
00022
00023
00024
00025 int
00026 __os_fsync(dbenv, fhp)
00027 DB_ENV *dbenv;
00028 DB_FH *fhp;
00029 {
00030 int ret;
00031
00032
00033
00034
00035
00036 if (F_ISSET(fhp, DB_FH_NOSYNC))
00037 return (0);
00038
00039 if (DB_GLOBAL(j_fsync) != NULL)
00040 ret = DB_GLOBAL(j_fsync)(fhp->fd);
00041 else
00042 RETRY_CHK((!FlushFileBuffers(fhp->handle)), ret);
00043
00044 if (ret != 0)
00045 __db_err(dbenv, "fsync %s", strerror(ret));
00046 return (ret);
00047 }