*** /pg/tools/fsync/test_fsync.c Fri Oct 13 10:18:33 2006 --- test_fsync.c Thu Nov 23 00:24:49 2006 *************** *** 14,19 **** --- 14,20 ---- #include #include #include + #include #ifdef WIN32 #define FSYNC_FILENAME "./test_fsync.out" *************** *** 21,40 **** #define FSYNC_FILENAME "/var/tmp/test_fsync.out" #endif ! /* O_SYNC and O_FSYNC are the same */ #if defined(O_SYNC) ! #define OPEN_SYNC_FLAG O_SYNC #elif defined(O_FSYNC) ! #define OPEN_SYNC_FLAG O_FSYNC ! #elif defined(O_DSYNC) ! #define OPEN_DATASYNC_FLAG O_DSYNC #endif #if defined(OPEN_SYNC_FLAG) ! #if defined(O_DSYNC) && (O_DSYNC != OPEN_SYNC_FLAG) ! #define OPEN_DATASYNC_FLAG O_DSYNC #endif #endif #define WAL_FILE_SIZE (16 * 1024 * 1024) --- 22,54 ---- #define FSYNC_FILENAME "/var/tmp/test_fsync.out" #endif ! /* This logic comes from src/backend/access/transam/xlog.c where it's ! better documented */ ! #ifdef O_DIRECT ! #define PG_O_DIRECT O_DIRECT ! #else ! #define PG_O_DIRECT 0 ! #endif ! #if defined(O_SYNC) ! #define BARE_OPEN_SYNC_FLAG O_SYNC #elif defined(O_FSYNC) ! #define BARE_OPEN_SYNC_FLAG O_FSYNC ! #endif ! #ifdef BARE_OPEN_SYNC_FLAG ! #define OPEN_SYNC_FLAG (BARE_OPEN_SYNC_FLAG | PG_O_DIRECT) #endif + #if defined(O_DSYNC) #if defined(OPEN_SYNC_FLAG) ! #if O_DSYNC != BARE_OPEN_SYNC_FLAG ! #define OPEN_DATASYNC_FLAG (O_DSYNC | PG_O_DIRECT) ! #endif ! #else ! #define OPEN_DATASYNC_FLAG (O_DSYNC | PG_O_DIRECT) #endif #endif + #define WAL_FILE_SIZE (16 * 1024 * 1024)