Loading innobase/log/log0log.c +10 −4 Original line number Diff line number Diff line Loading @@ -838,14 +838,18 @@ log_io_complete( /* It was a checkpoint write */ group = (log_group_t*)((ulint)group - 1); if (srv_unix_file_flush_method == SRV_UNIX_LITTLESYNC) { fil_flush(group->space_id); } log_io_complete_checkpoint(group); return; } if (srv_unix_file_flush_method == SRV_UNIX_LITTLESYNC) { fil_flush(group->space_id); } mutex_enter(&(log_sys->mutex)); Loading Loading @@ -1474,7 +1478,9 @@ log_checkpoint( recv_apply_hashed_log_recs(TRUE); } if (srv_unix_file_flush_method == SRV_UNIX_LITTLESYNC) { fil_flush_file_spaces(FIL_TABLESPACE); } mutex_enter(&(log_sys->mutex)); Loading innobase/os/os0file.c +28 −12 Original line number Diff line number Diff line Loading @@ -9,6 +9,7 @@ Created 10/21/1995 Heikki Tuuri #include "os0file.h" #include "os0sync.h" #include "ut0mem.h" #include "srv0srv.h" #ifdef POSIX_ASYNC_IO Loading Loading @@ -345,12 +346,11 @@ os_file_create( UT_NOT_USED(purpose); /* On Linux opening a file in the O_SYNC mode seems to be much more efficient for small writes than calling an explicit fsync or fdatasync after each write, but on Solaris O_SYNC and O_DSYNC is extremely slow in large block writes to a big file. Therefore we do not use these options, but use explicit fdatasync. */ #ifdef O_DSYNC if (srv_unix_file_flush_method == SRV_UNIX_O_DSYNC) { create_flag = create_flag | O_DSYNC; } #endif if (create_mode == OS_FILE_CREATE) { file = open(name, create_flag, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH); Loading Loading @@ -547,6 +547,12 @@ os_file_flush( #else int ret; #ifdef O_DSYNC if (srv_unix_file_flush_method == SRV_UNIX_O_DSYNC) { return(TRUE); } #endif #ifdef HAVE_FDATASYNC ret = fdatasync(file); #else Loading Loading @@ -621,10 +627,15 @@ os_file_pwrite( #ifdef HAVE_PWRITE ret = pwrite(file, buf, n, offs); /* Always do fsync to reduce the probability that when the OS crashes, a database page is only partially physically written to disk. */ if (srv_unix_file_flush_method != SRV_UNIX_LITTLESYNC && srv_unix_file_flush_method != SRV_UNIX_NOSYNC) { /* Always do fsync to reduce the probability that when the OS crashes, a database page is only partially physically written to disk. */ ut_a(TRUE == os_file_flush(file)); } return(ret); #else Loading @@ -645,10 +656,15 @@ os_file_pwrite( ret = write(file, buf, n); /* Always do fsync to reduce the probability that when the OS crashes, a database page is only partially physically written to disk. */ if (srv_unix_file_flush_method != SRV_UNIX_LITTLESYNC && srv_unix_file_flush_method != SRV_UNIX_NOSYNC) { /* Always do fsync to reduce the probability that when the OS crashes, a database page is only partially physically written to disk. */ ut_a(TRUE == os_file_flush(file)); } os_mutex_exit(os_file_seek_mutexes[i]); Loading innobase/srv/srv0start.c +0 −2 Original line number Diff line number Diff line Loading @@ -548,8 +548,6 @@ innobase_start_or_create_for_mysql(void) return(DB_ERROR); } printf("InnoDB file flush method %lu\n", srv_unix_file_flush_method); os_aio_use_native_aio = srv_use_native_aio; err = srv_boot(); Loading Loading
innobase/log/log0log.c +10 −4 Original line number Diff line number Diff line Loading @@ -838,14 +838,18 @@ log_io_complete( /* It was a checkpoint write */ group = (log_group_t*)((ulint)group - 1); if (srv_unix_file_flush_method == SRV_UNIX_LITTLESYNC) { fil_flush(group->space_id); } log_io_complete_checkpoint(group); return; } if (srv_unix_file_flush_method == SRV_UNIX_LITTLESYNC) { fil_flush(group->space_id); } mutex_enter(&(log_sys->mutex)); Loading Loading @@ -1474,7 +1478,9 @@ log_checkpoint( recv_apply_hashed_log_recs(TRUE); } if (srv_unix_file_flush_method == SRV_UNIX_LITTLESYNC) { fil_flush_file_spaces(FIL_TABLESPACE); } mutex_enter(&(log_sys->mutex)); Loading
innobase/os/os0file.c +28 −12 Original line number Diff line number Diff line Loading @@ -9,6 +9,7 @@ Created 10/21/1995 Heikki Tuuri #include "os0file.h" #include "os0sync.h" #include "ut0mem.h" #include "srv0srv.h" #ifdef POSIX_ASYNC_IO Loading Loading @@ -345,12 +346,11 @@ os_file_create( UT_NOT_USED(purpose); /* On Linux opening a file in the O_SYNC mode seems to be much more efficient for small writes than calling an explicit fsync or fdatasync after each write, but on Solaris O_SYNC and O_DSYNC is extremely slow in large block writes to a big file. Therefore we do not use these options, but use explicit fdatasync. */ #ifdef O_DSYNC if (srv_unix_file_flush_method == SRV_UNIX_O_DSYNC) { create_flag = create_flag | O_DSYNC; } #endif if (create_mode == OS_FILE_CREATE) { file = open(name, create_flag, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH); Loading Loading @@ -547,6 +547,12 @@ os_file_flush( #else int ret; #ifdef O_DSYNC if (srv_unix_file_flush_method == SRV_UNIX_O_DSYNC) { return(TRUE); } #endif #ifdef HAVE_FDATASYNC ret = fdatasync(file); #else Loading Loading @@ -621,10 +627,15 @@ os_file_pwrite( #ifdef HAVE_PWRITE ret = pwrite(file, buf, n, offs); /* Always do fsync to reduce the probability that when the OS crashes, a database page is only partially physically written to disk. */ if (srv_unix_file_flush_method != SRV_UNIX_LITTLESYNC && srv_unix_file_flush_method != SRV_UNIX_NOSYNC) { /* Always do fsync to reduce the probability that when the OS crashes, a database page is only partially physically written to disk. */ ut_a(TRUE == os_file_flush(file)); } return(ret); #else Loading @@ -645,10 +656,15 @@ os_file_pwrite( ret = write(file, buf, n); /* Always do fsync to reduce the probability that when the OS crashes, a database page is only partially physically written to disk. */ if (srv_unix_file_flush_method != SRV_UNIX_LITTLESYNC && srv_unix_file_flush_method != SRV_UNIX_NOSYNC) { /* Always do fsync to reduce the probability that when the OS crashes, a database page is only partially physically written to disk. */ ut_a(TRUE == os_file_flush(file)); } os_mutex_exit(os_file_seek_mutexes[i]); Loading
innobase/srv/srv0start.c +0 −2 Original line number Diff line number Diff line Loading @@ -548,8 +548,6 @@ innobase_start_or_create_for_mysql(void) return(DB_ERROR); } printf("InnoDB file flush method %lu\n", srv_unix_file_flush_method); os_aio_use_native_aio = srv_use_native_aio; err = srv_boot(); Loading