summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorunknown <marko@hundin.mysql.fi>2005-07-26 14:43:48 +0300
committerunknown <marko@hundin.mysql.fi>2005-07-26 14:43:48 +0300
commit2e4283e05342d6aeb0d3c92b43bdfc7856a5e220 (patch)
tree8fcd234e093b835bfbdd17820b6b4a1ee36fa78f
parent3521daed379a809a13d7fb61c45a5a102bae4797 (diff)
parentaee8de3527f8f14262c2c3151659f9aef77d1cf6 (diff)
downloadmariadb-git-2e4283e05342d6aeb0d3c92b43bdfc7856a5e220.tar.gz
Merge hundin.mysql.fi:/home/marko/mysql-4.1
into hundin.mysql.fi:/home/marko/mysql-5.0 innobase/include/os0file.h: Automerge and manual fix innobase/os/os0file.c: Automerged innobase/trx/trx0sys.c: Automerged
-rw-r--r--innobase/include/os0file.h2
-rw-r--r--innobase/os/os0file.c14
-rw-r--r--innobase/trx/trx0sys.c3
3 files changed, 18 insertions, 1 deletions
diff --git a/innobase/include/os0file.h b/innobase/include/os0file.h
index 362e3552411..adbc4afafd2 100644
--- a/innobase/include/os0file.h
+++ b/innobase/include/os0file.h
@@ -19,7 +19,9 @@ Created 10/21/1995 Heikki Tuuri
typedef struct fil_node_struct fil_node_t;
+#ifdef UNIV_DO_FLUSH
extern ibool os_do_not_call_flush_at_each_write;
+#endif /* UNIV_DO_FLUSH */
extern ibool os_has_said_disk_full;
extern ibool os_aio_print_debug;
diff --git a/innobase/os/os0file.c b/innobase/os/os0file.c
index 48dc808e36c..9c87b59f018 100644
--- a/innobase/os/os0file.c
+++ b/innobase/os/os0file.c
@@ -40,9 +40,13 @@ ulint os_innodb_umask = S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP;
ulint os_innodb_umask = 0;
#endif
+#ifdef UNIV_DO_FLUSH
/* If the following is set to TRUE, we do not call os_file_flush in every
os_file_write. We can set this TRUE when the doublewrite buffer is used. */
ibool os_do_not_call_flush_at_each_write = FALSE;
+#else
+/* We do not call os_file_flush in every os_file_write. */
+#endif /* UNIV_DO_FLUSH */
/* We use these mutexes to protect lseek + file i/o operation, if the
OS does not provide an atomic pread or pwrite, or similar */
@@ -1985,6 +1989,7 @@ os_file_pwrite(
os_file_n_pending_pwrites--;
os_mutex_exit(os_file_count_mutex);
+# ifdef UNIV_DO_FLUSH
if (srv_unix_file_flush_method != SRV_UNIX_LITTLESYNC
&& srv_unix_file_flush_method != SRV_UNIX_NOSYNC
&& !os_do_not_call_flush_at_each_write) {
@@ -1995,6 +2000,7 @@ os_file_pwrite(
ut_a(TRUE == os_file_flush(file));
}
+# endif /* UNIV_DO_FLUSH */
return(ret);
#else
@@ -2017,6 +2023,7 @@ os_file_pwrite(
ret = write(file, buf, (ssize_t)n);
+# ifdef UNIV_DO_FLUSH
if (srv_unix_file_flush_method != SRV_UNIX_LITTLESYNC
&& srv_unix_file_flush_method != SRV_UNIX_NOSYNC
&& !os_do_not_call_flush_at_each_write) {
@@ -2027,6 +2034,7 @@ os_file_pwrite(
ut_a(TRUE == os_file_flush(file));
}
+# endif /* UNIV_DO_FLUSH */
os_mutex_exit(os_file_seek_mutexes[i]);
@@ -2313,9 +2321,11 @@ retry:
/* Always do fsync to reduce the probability that when the OS crashes,
a database page is only partially physically written to disk. */
+# ifdef UNIV_DO_FLUSH
if (!os_do_not_call_flush_at_each_write) {
ut_a(TRUE == os_file_flush(file));
}
+# endif /* UNIV_DO_FLUSH */
os_mutex_exit(os_file_seek_mutexes[i]);
@@ -3533,10 +3543,12 @@ os_aio_windows_handle(
if (ret && len == slot->len) {
ret_val = TRUE;
+# ifdef UNIV_DO_FLUSH
if (slot->type == OS_FILE_WRITE
&& !os_do_not_call_flush_at_each_write) {
ut_a(TRUE == os_file_flush(slot->file));
}
+# endif /* UNIV_DO_FLUSH */
} else {
os_file_handle_error(slot->name, "Windows aio");
@@ -3617,10 +3629,12 @@ os_aio_posix_handle(
*message1 = slot->message1;
*message2 = slot->message2;
+# ifdef UNIV_DO_FLUSH
if (slot->type == OS_FILE_WRITE
&& !os_do_not_call_flush_at_each_write) {
ut_a(TRUE == os_file_flush(slot->file));
}
+# endif /* UNIV_DO_FLUSH */
os_mutex_exit(array->mutex);
diff --git a/innobase/trx/trx0sys.c b/innobase/trx/trx0sys.c
index 68fe6d5079a..bf48c30e942 100644
--- a/innobase/trx/trx0sys.c
+++ b/innobase/trx/trx0sys.c
@@ -97,8 +97,9 @@ trx_doublewrite_init(
/* Since we now start to use the doublewrite buffer, no need to call
fsync() after every write to a data file */
-
+#ifdef UNIV_DO_FLUSH
os_do_not_call_flush_at_each_write = TRUE;
+#endif /* UNIV_DO_FLUSH */
mutex_create(&(trx_doublewrite->mutex));
mutex_set_level(&(trx_doublewrite->mutex), SYNC_DOUBLEWRITE);