#!!! notice !!!
# Any small change to this file in the main branch
# should be done or reviewed by the maintainer!
-diff -ruN a/storage/innobase/buf/buf0buf.c b/storage/innobase/buf/buf0buf.c
---- a/storage/innobase/buf/buf0buf.c 2010-11-03 07:01:13.000000000 +0900
-+++ b/storage/innobase/buf/buf0buf.c 2010-12-03 15:07:31.786968193 +0900
-@@ -4812,14 +4812,16 @@
- buf_flush_list_mutex_enter(buf_pool);
+--- a/storage/innobase/buf/buf0buf.c
++++ b/storage/innobase/buf/buf0buf.c
+@@ -4372,6 +4372,7 @@
+ }
+
+ total_info->pool_size += pool_info->pool_size;
++ total_info->pool_size_bytes += pool_info->pool_size_bytes;
+ total_info->lru_len += pool_info->lru_len;
+ total_info->old_lru_len += pool_info->old_lru_len;
+ total_info->free_list_len += pool_info->free_list_len;
+@@ -4437,6 +4438,8 @@
+
+ pool_info->pool_size = buf_pool->curr_size;
+
++ pool_info->pool_size_bytes = buf_pool->curr_pool_size;
++
+ pool_info->lru_len = UT_LIST_GET_LEN(buf_pool->LRU);
+
+ pool_info->old_lru_len = buf_pool->LRU_old_len;
+@@ -4558,14 +4561,16 @@
+ ut_ad(pool_info);
fprintf(file,
- "Buffer pool size %lu\n"
+ "Modified db pages %lu\n"
"Pending reads %lu\n"
"Pending writes: LRU %lu, flush list %lu, single page %lu\n",
- (ulong) buf_pool->curr_size,
-+ (ulong) buf_pool->curr_size * UNIV_PAGE_SIZE,
- (ulong) UT_LIST_GET_LEN(buf_pool->free),
- (ulong) UT_LIST_GET_LEN(buf_pool->LRU),
- (ulong) buf_pool->LRU_old_len,
-diff -ruN a/storage/innobase/buf/buf0flu.c b/storage/innobase/buf/buf0flu.c
---- a/storage/innobase/buf/buf0flu.c 2010-12-03 20:58:26.000000000 +0300
-+++ b/storage/innobase/buf/buf0flu.c 2011-01-07 03:37:41.000000000 +0300
+ pool_info->pool_size,
++ pool_info->pool_size_bytes,
+ pool_info->free_list_len,
+ pool_info->lru_len,
+ pool_info->old_lru_len,
+--- a/storage/innobase/buf/buf0flu.c
++++ b/storage/innobase/buf/buf0flu.c
@@ -75,7 +75,7 @@
static buf_flush_stat_t buf_flush_stat_sum;
/* @} */
-diff -ruN a/storage/innobase/fil/fil0fil.c b/storage/innobase/fil/fil0fil.c
---- a/storage/innobase/fil/fil0fil.c 2010-11-03 07:01:13.000000000 +0900
-+++ b/storage/innobase/fil/fil0fil.c 2010-12-03 15:07:31.790357112 +0900
-@@ -4858,3 +4858,30 @@
+--- a/storage/innobase/fil/fil0fil.c
++++ b/storage/innobase/fil/fil0fil.c
+@@ -4897,3 +4897,30 @@
fil_system = NULL;
}
+ return 0;
+ }
+}
-diff -ruN a/storage/innobase/handler/ha_innodb.cc b/storage/innobase/handler/ha_innodb.cc
---- a/storage/innobase/handler/ha_innodb.cc 2010-12-03 15:06:58.727955654 +0900
-+++ b/storage/innobase/handler/ha_innodb.cc 2010-12-03 15:07:31.799376984 +0900
-@@ -584,6 +584,8 @@
+--- a/storage/innobase/handler/ha_innodb.cc
++++ b/storage/innobase/handler/ha_innodb.cc
+@@ -604,6 +604,8 @@
(char*) &export_vars.innodb_buffer_pool_pages_dirty, SHOW_LONG},
{"buffer_pool_pages_flushed",
(char*) &export_vars.innodb_buffer_pool_pages_flushed, SHOW_LONG},
{"buffer_pool_pages_free",
(char*) &export_vars.innodb_buffer_pool_pages_free, SHOW_LONG},
#ifdef UNIV_DEBUG
-@@ -10975,6 +10977,16 @@
+@@ -11207,6 +11209,16 @@
"Force InnoDB to not use next-key locking, to use only row-level locking.",
NULL, NULL, FALSE);
#ifdef UNIV_LOG_ARCHIVE
static MYSQL_SYSVAR_STR(log_arch_dir, innobase_log_arch_dir,
PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY,
-@@ -11162,7 +11174,7 @@
+@@ -11394,7 +11406,7 @@
static MYSQL_SYSVAR_STR(version, innodb_version_str,
PLUGIN_VAR_NOCMDOPT | PLUGIN_VAR_READONLY,
static MYSQL_SYSVAR_BOOL(use_sys_malloc, srv_use_sys_malloc,
PLUGIN_VAR_NOCMDARG | PLUGIN_VAR_READONLY,
-@@ -11247,6 +11259,8 @@
+@@ -11494,6 +11506,8 @@
MYSQL_SYSVAR(thread_concurrency),
MYSQL_SYSVAR(thread_sleep_delay),
MYSQL_SYSVAR(autoinc_lock_mode),
MYSQL_SYSVAR(version),
MYSQL_SYSVAR(use_sys_malloc),
MYSQL_SYSVAR(use_native_aio),
-diff -ruN a/storage/innobase/include/fil0fil.h b/storage/innobase/include/fil0fil.h
---- a/storage/innobase/include/fil0fil.h 2010-11-03 07:01:13.000000000 +0900
-+++ b/storage/innobase/include/fil0fil.h 2010-12-03 15:07:31.812028575 +0900
-@@ -726,6 +726,17 @@
+--- a/storage/innobase/include/buf0buf.h
++++ b/storage/innobase/include/buf0buf.h
+@@ -128,6 +128,7 @@
+ /* General buffer pool info */
+ ulint pool_unique_id; /*!< Buffer Pool ID */
+ ulint pool_size; /*!< Buffer Pool size in pages */
++ ulint pool_size_bytes;
+ ulint lru_len; /*!< Length of buf_pool->LRU */
+ ulint old_lru_len; /*!< buf_pool->LRU_old_len */
+ ulint free_list_len; /*!< Length of buf_pool->free list */
+--- a/storage/innobase/include/fil0fil.h
++++ b/storage/innobase/include/fil0fil.h
+@@ -731,6 +731,17 @@
/*============================*/
ulint id); /*!< in: space id */
typedef struct fil_space_struct fil_space_t;
#endif
-diff -ruN a/storage/innobase/include/read0read.h b/storage/innobase/include/read0read.h
---- a/storage/innobase/include/read0read.h 2010-12-04 02:58:26.000000000 +0900
-+++ b/storage/innobase/include/read0read.h 2011-01-21 19:35:44.127631727 +0900
+--- a/storage/innobase/include/read0read.h
++++ b/storage/innobase/include/read0read.h
@@ -88,6 +88,7 @@
void
read_view_print(
const read_view_t* view); /*!< in: read view */
/*********************************************************************//**
Create a consistent cursor view for mysql to be used in cursors. In this
-diff -ruN a/storage/innobase/include/srv0srv.h b/storage/innobase/include/srv0srv.h
---- a/storage/innobase/include/srv0srv.h 2010-11-03 07:01:13.000000000 +0900
-+++ b/storage/innobase/include/srv0srv.h 2010-12-03 15:07:31.813958103 +0900
-@@ -145,6 +145,9 @@
- extern char srv_adaptive_flushing;
-
+--- a/storage/innobase/include/srv0srv.h
++++ b/storage/innobase/include/srv0srv.h
+@@ -146,6 +146,9 @@
+ corrupted index and table */
+ extern my_bool srv_load_corrupted;
+extern ulint srv_show_locks_held;
+extern ulint srv_show_verbose_locks;
/* The sort order table of the MySQL latin1_swedish_ci character set
collation */
extern const byte* srv_latin1_ordering;
-@@ -318,6 +321,8 @@
+@@ -328,6 +331,8 @@
buffer pool to disk */
extern ulint srv_buf_pool_flushed;
/** Number of buffer pool reads that led to the
reading of a disk page */
extern ulint srv_buf_pool_reads;
-@@ -691,6 +696,7 @@
+@@ -707,6 +712,7 @@
ulint innodb_buffer_pool_reads; /*!< srv_buf_pool_reads */
ulint innodb_buffer_pool_wait_free; /*!< srv_buf_pool_wait_free */
ulint innodb_buffer_pool_pages_flushed; /*!< srv_buf_pool_flushed */
+ ulint innodb_buffer_pool_pages_LRU_flushed; /*!< buf_lru_flush_page_count */
ulint innodb_buffer_pool_write_requests;/*!< srv_buf_pool_write_requests */
+ ulint innodb_buffer_pool_read_ahead_rnd;/*!< srv_read_ahead_rnd */
ulint innodb_buffer_pool_read_ahead; /*!< srv_read_ahead */
- ulint innodb_buffer_pool_read_ahead_evicted;/*!< srv_read_ahead evicted*/
-diff -ruN a/storage/innobase/include/thr0loc.h b/storage/innobase/include/thr0loc.h
---- a/storage/innobase/include/thr0loc.h 2010-11-03 07:01:13.000000000 +0900
-+++ b/storage/innobase/include/thr0loc.h 2010-12-03 15:07:31.815081509 +0900
-@@ -83,6 +83,17 @@
- thr_local_get_in_ibuf_field(void);
- /*=============================*/
-
-+/*************************************************************************
-+Return local hash table informations. */
-+
-+ulint
-+thr_local_hash_cells(void);
-+/*=======================*/
-+
-+ulint
-+thr_local_hash_nodes(void);
-+/*=======================*/
-+
- #ifndef UNIV_NONINL
- #include "thr0loc.ic"
- #endif
-diff -ruN a/storage/innobase/lock/lock0lock.c b/storage/innobase/lock/lock0lock.c
---- a/storage/innobase/lock/lock0lock.c 2010-11-03 07:01:13.000000000 +0900
-+++ b/storage/innobase/lock/lock0lock.c 2010-12-03 15:07:31.819023998 +0900
-@@ -4302,6 +4302,7 @@
+--- a/storage/innobase/lock/lock0lock.c
++++ b/storage/innobase/lock/lock0lock.c
+@@ -4377,6 +4377,7 @@
putc('\n', file);
block = buf_page_try_get(space, page_no, &mtr);
for (i = 0; i < lock_rec_get_n_bits(lock); ++i) {
-@@ -4328,6 +4329,7 @@
+@@ -4403,6 +4404,7 @@
putc('\n', file);
}
mtr_commit(&mtr);
if (UNIV_LIKELY_NULL(heap)) {
-@@ -4511,7 +4513,7 @@
+@@ -4586,7 +4588,7 @@
}
}
nth_trx++;
goto loop;
}
-@@ -4583,8 +4585,8 @@
+@@ -4658,8 +4660,8 @@
nth_lock++;
" SUPPRESSING FURTHER PRINTS\n",
file);
-diff -ruN a/storage/innobase/read/read0read.c b/storage/innobase/read/read0read.c
---- a/storage/innobase/read/read0read.c 2010-12-04 02:58:26.000000000 +0900
-+++ b/storage/innobase/read/read0read.c 2011-01-21 19:37:08.292650181 +0900
+--- a/storage/innobase/read/read0read.c
++++ b/storage/innobase/read/read0read.c
@@ -357,34 +357,35 @@
void
read_view_print(
(ullint) read_view_get_nth_trx_id(view, i));
}
}
-diff -ruN a/storage/innobase/srv/srv0srv.c b/storage/innobase/srv/srv0srv.c
---- a/storage/innobase/srv/srv0srv.c 2010-11-03 07:01:13.000000000 +0900
-+++ b/storage/innobase/srv/srv0srv.c 2010-12-03 15:07:31.824022673 +0900
-@@ -84,6 +84,7 @@
+--- a/storage/innobase/srv/srv0srv.c
++++ b/storage/innobase/srv/srv0srv.c
+@@ -83,6 +83,7 @@
#include "ha_prototypes.h"
#include "trx0i_s.h"
#include "os0sync.h" /* for HAVE_ATOMIC_BUILTINS */
#include "mysql/plugin.h"
#include "mysql/service_thd_wait.h"
-@@ -193,6 +194,9 @@
+@@ -188,6 +189,9 @@
the checkpoints. */
UNIV_INTERN char srv_adaptive_flushing = TRUE;
/** Maximum number of times allowed to conditionally acquire
mutex before switching to blocking wait on the mutex */
#define MAX_MUTEX_NOWAIT 20
-@@ -311,6 +315,7 @@
+@@ -316,6 +320,7 @@
/* variable to count the number of pages that were written from buffer
pool to the disk */
UNIV_INTERN ulint srv_buf_pool_flushed = 0;
/** Number of buffer pool reads that led to the
reading of a disk page */
-@@ -1787,6 +1792,13 @@
+@@ -1825,6 +1830,13 @@
ulint n_reserved;
ibool ret;
mutex_enter(&srv_innodb_monitor_mutex);
current_time = time(NULL);
-@@ -1835,31 +1847,6 @@
+@@ -1873,31 +1885,6 @@
mutex_exit(&dict_foreign_err_mutex);
fputs("--------\n"
"FILE I/O\n"
"--------\n", file);
-@@ -1890,10 +1877,84 @@
+@@ -1928,10 +1915,78 @@
"BUFFER POOL AND MEMORY\n"
"----------------------\n", file);
fprintf(file,
+ " Dictionary cache %lu \t(%lu + %lu)\n"
+ " File system %lu \t(%lu + %lu)\n"
+ " Lock system %lu \t(%lu + %lu)\n"
-+ " Recovery system %lu \t(%lu + %lu)\n"
-+ " Threads %lu \t(%lu + %lu)\n",
++ " Recovery system %lu \t(%lu + %lu)\n",
+
+ (ulong) (btr_search_sys
+ ? (btr_search_sys->hash_index->n_cells * sizeof(hash_cell_t)) : 0)
+ + recv_sys_subtotal),
+ (ulong) ((recv_sys && recv_sys->addr_hash)
+ ? (recv_sys->addr_hash->n_cells * sizeof(hash_cell_t)) : 0),
-+ (ulong) recv_sys_subtotal,
-+
-+ (ulong) (thr_local_hash_cells() * sizeof(hash_cell_t)
-+ + thr_local_hash_nodes()),
-+ (ulong) (thr_local_hash_cells() * sizeof(hash_cell_t)),
-+ (ulong) thr_local_hash_nodes());
++ (ulong) recv_sys_subtotal);
+
fprintf(file, "Dictionary memory allocated " ULINTPF "\n",
dict_sys->size);
-@@ -1909,6 +1970,16 @@
+@@ -1947,6 +2002,16 @@
fprintf(file, "%lu read views open inside InnoDB\n",
UT_LIST_GET_LEN(trx_sys->view_list));
n_reserved = fil_space_get_n_reserved_extents(0);
if (n_reserved > 0) {
fprintf(file,
-@@ -1952,6 +2023,31 @@
+@@ -1990,6 +2055,31 @@
srv_n_rows_deleted_old = srv_n_rows_deleted;
srv_n_rows_read_old = srv_n_rows_read;
fputs("----------------------------\n"
"END OF INNODB MONITOR OUTPUT\n"
"============================\n", file);
-@@ -1995,6 +2091,7 @@
+@@ -2033,6 +2123,7 @@
= srv_buf_pool_write_requests;
export_vars.innodb_buffer_pool_wait_free = srv_buf_pool_wait_free;
export_vars.innodb_buffer_pool_pages_flushed = srv_buf_pool_flushed;
+ export_vars.innodb_buffer_pool_pages_LRU_flushed = buf_lru_flush_page_count;
export_vars.innodb_buffer_pool_reads = srv_buf_pool_reads;
- export_vars.innodb_buffer_pool_read_ahead
- = stat.n_ra_pages_read;
-diff -ruN a/storage/innobase/sync/sync0arr.c b/storage/innobase/sync/sync0arr.c
---- a/storage/innobase/sync/sync0arr.c 2010-11-03 07:01:13.000000000 +0900
-+++ b/storage/innobase/sync/sync0arr.c 2010-12-03 15:07:31.826041368 +0900
-@@ -477,7 +477,7 @@
+ export_vars.innodb_buffer_pool_read_ahead_rnd
+ = stat.n_ra_pages_read_rnd;
+--- a/storage/innobase/sync/sync0arr.c
++++ b/storage/innobase/sync/sync0arr.c
+@@ -478,7 +478,7 @@
fprintf(file,
"--Thread %lu has waited at %s line %lu"
- " for %.2f seconds the semaphore:\n",
+ " for %#.5g seconds the semaphore:\n",
- (ulong) os_thread_pf(cell->thread), cell->file,
- (ulong) cell->line,
+ (ulong) os_thread_pf(cell->thread),
+ innobase_basename(cell->file), (ulong) cell->line,
difftime(time(NULL), cell->reservation_time));
-diff -ruN a/storage/innobase/thr/thr0loc.c b/storage/innobase/thr/thr0loc.c
---- a/storage/innobase/thr/thr0loc.c 2010-11-03 07:01:13.000000000 +0900
-+++ b/storage/innobase/thr/thr0loc.c 2010-12-03 15:07:31.828023915 +0900
-@@ -49,6 +49,7 @@
-
- /** The hash table. The module is not yet initialized when it is NULL. */
- static hash_table_t* thr_local_hash = NULL;
-+ulint thr_local_hash_n_nodes = 0;
-
- /** Thread local data */
- typedef struct thr_local_struct thr_local_t;
-@@ -221,6 +222,7 @@
- os_thread_pf(os_thread_get_curr_id()),
- local);
-
-+ thr_local_hash_n_nodes++;
- mutex_exit(&thr_local_mutex);
- }
-
-@@ -249,6 +251,7 @@
-
- HASH_DELETE(thr_local_t, hash, thr_local_hash,
- os_thread_pf(id), local);
-+ thr_local_hash_n_nodes--;
-
- mutex_exit(&thr_local_mutex);
-
-@@ -305,3 +308,29 @@
- hash_table_free(thr_local_hash);
- thr_local_hash = NULL;
- }
-+
-+/*************************************************************************
-+Return local hash table informations. */
-+
-+ulint
-+thr_local_hash_cells(void)
-+/*======================*/
-+{
-+ if (thr_local_hash) {
-+ return (thr_local_hash->n_cells);
-+ } else {
-+ return 0;
-+ }
-+}
-+
-+ulint
-+thr_local_hash_nodes(void)
-+/*======================*/
-+{
-+ if (thr_local_hash) {
-+ return (thr_local_hash_n_nodes
-+ * (sizeof(thr_local_t) + MEM_BLOCK_HEADER_SIZE));
-+ } else {
-+ return 0;
-+ }
-+}
-diff -ruN a/storage/innobase/trx/trx0purge.c b/storage/innobase/trx/trx0purge.c
---- a/storage/innobase/trx/trx0purge.c 2010-12-04 02:58:26.000000000 +0900
-+++ b/storage/innobase/trx/trx0purge.c 2011-01-21 19:40:42.086683671 +0900
-@@ -1201,7 +1201,7 @@
+--- a/storage/innobase/trx/trx0purge.c
++++ b/storage/innobase/trx/trx0purge.c
+@@ -1212,7 +1212,7 @@
/*=====================*/
{
fprintf(stderr, "InnoDB: Purge system view:\n");