summaryrefslogtreecommitdiff
path: root/innobase/os
diff options
context:
space:
mode:
authorunknown <petr@mysql.com>2004-11-18 13:00:42 +0300
committerunknown <petr@mysql.com>2004-11-18 13:00:42 +0300
commit4dac69eb11839d9c996669f88aba0230916efcbc (patch)
treec0b7e411284eca2bfbf5ae94888013bb48010c75 /innobase/os
parent163d8b27aaf0a18df6583cac58930a84eb70ebbc (diff)
downloadmariadb-git-4dac69eb11839d9c996669f88aba0230916efcbc.tar.gz
WL 2059 Engine-specific status variables framework and WL 1922
InnoDB status variables innobase/buf/buf0buf.c: Added function to get the number of latched pages innobase/buf/buf0flu.c: Added support for dblwr_pages_written, dblwr_writes and buffer_pool_pages_flushed status variables innobase/buf/buf0lru.c: Added support for _buffer_pool_wait_free status variable innobase/buf/buf0rea.c: Added support for buffer_pool_read_ahead_rnd, buffer_pool_read_ahead_seq and srv_buf_pool_reads status variables innobase/fil/fil0fil.c: Added support for os_log_fsyncs, data_read, and data_written innobase/include/buf0buf.h: Functions and variables needed for new status variables declared innobase/include/buf0flu.ic: Added support for buffer_pool_write_requests status variable innobase/include/fil0fil.h: Variable declared innobase/include/os0file.h: Declared several variabled innobase/include/srv0srv.h: Declared all new variables needed for InnoDB status variables innobase/log/log0log.c: Added support for various log-related status variables innobase/os/os0file.c: Added support for pending_writes, pending_reads status variables innobase/srv/srv0srv.c: Added internal counters and function to accumulate information for InnoDB status variables mysql-test/r/innodb.result: result fot the test mysql-test/t/innodb.test: We have tests only for few variables, as we cannot predict value for most of the added variables. It depends on the system load, OS, HDD e.t.c Thus, we cannot test them with mysql-test. sql/ha_innodb.cc: Added an array for InnoDB status variables. This is part of the WL2059 Engine-specific status variables framework sql/ha_innodb.h: Declared status variables array and the function to refresh statistics sql/handler.cc: Added function to get statistics sql/handler.h: Declared function to update handlers statistics sql/mysql_priv.h: declared opt_innodb to see it from handlers sql/mysqld.cc: Don't include Innodb_* status variables into "show status" if we are compiling without InnoDB sql/sql_show.cc: mysqld_show modified and split into two parts to support enclosed arrays in the show_var_st structure. This is a part of WL2059 Engine-specific status variables framework. sql/structs.h: Added new value to mark enclosed array in the status variables array
Diffstat (limited to 'innobase/os')
-rw-r--r--innobase/os/os0file.c28
1 files changed, 28 insertions, 0 deletions
diff --git a/innobase/os/os0file.c b/innobase/os/os0file.c
index 5c140e4b798..7aed4a4ab0e 100644
--- a/innobase/os/os0file.c
+++ b/innobase/os/os0file.c
@@ -155,6 +155,10 @@ os_mutex_t os_file_count_mutex;
ulint os_file_n_pending_preads = 0;
ulint os_file_n_pending_pwrites = 0;
+/* These are not protected by any mutex */
+ulint os_n_pending_writes = 0;
+ulint os_n_pending_reads = 0;
+
/***************************************************************************
Gets the operating system version. Currently works only on Windows. */
@@ -1987,8 +1991,12 @@ try_again:
goto error_handling;
}
+ os_n_pending_reads++;
+
ret = ReadFile(file, buf, n, &len, NULL);
+ os_n_pending_reads--;
+
os_mutex_exit(os_file_seek_mutexes[i]);
if (ret && len == n) {
@@ -2001,8 +2009,12 @@ try_again:
os_bytes_read_since_printout += n;
try_again:
+ os_n_pending_reads++;
+
ret = os_file_pread(file, buf, n, offset, offset_high);
+ os_n_pending_reads--;
+
if ((ulint)ret == n) {
return(TRUE);
@@ -2090,8 +2102,12 @@ try_again:
goto error_handling;
}
+ os_n_pending_reads++;
+
ret = ReadFile(file, buf, n, &len, NULL);
+ os_n_pending_reads--;
+
os_mutex_exit(os_file_seek_mutexes[i]);
if (ret && len == n) {
@@ -2104,8 +2120,12 @@ try_again:
os_bytes_read_since_printout += n;
try_again:
+ os_n_pending_reads++;
+
ret = os_file_pread(file, buf, n, offset, offset_high);
+ os_n_pending_reads--;
+
if ((ulint)ret == n) {
return(TRUE);
@@ -2187,7 +2207,11 @@ retry:
return(FALSE);
}
+ os_n_pending_writes++;
+
ret = WriteFile(file, buf, n, &len, NULL);
+
+ os_n_pending_writes--;
/* Always do fsync to reduce the probability that when the OS crashes,
a database page is only partially physically written to disk. */
@@ -2248,8 +2272,12 @@ retry:
#else
ssize_t ret;
+ os_n_pending_writes++;
+
ret = os_file_pwrite(file, buf, n, offset, offset_high);
+ os_n_pending_writes--;
+
if ((ulint)ret == n) {
return(TRUE);