mirror of
https://github.com/MariaDB/server.git
synced 2026-05-15 03:17:20 +02:00
ut0mem.c Merge changes in InnoDB-3.23.43b
ut0ut.c Merge changes in InnoDB-3.23.43b trx0purge.c Merge changes in InnoDB-3.23.43b trx0rec.c Merge changes in InnoDB-3.23.43b trx0trx.c Merge changes in InnoDB-3.23.43b trx0undo.c Merge changes in InnoDB-3.23.43b thr0loc.c Merge changes in InnoDB-3.23.43b sync0arr.c Merge changes in InnoDB-3.23.43b sync0rw.c Merge changes in InnoDB-3.23.43b sync0sync.c Merge changes in InnoDB-3.23.43b srv0srv.c Merge changes in InnoDB-3.23.43b srv0start.c Merge changes in InnoDB-3.23.43b row0ins.c Merge changes in InnoDB-3.23.43b row0mysql.c Merge changes in InnoDB-3.23.43b row0purge.c Merge changes in InnoDB-3.23.43b row0sel.c Merge changes in InnoDB-3.23.43b row0umod.c Merge changes in InnoDB-3.23.43b row0upd.c Merge changes in InnoDB-3.23.43b row0vers.c Merge changes in InnoDB-3.23.43b rem0cmp.c Merge changes in InnoDB-3.23.43b que0que.c Merge changes in InnoDB-3.23.43b pars0opt.c Merge changes in InnoDB-3.23.43b pars0pars.c Merge changes in InnoDB-3.23.43b lexyy.c Merge changes in InnoDB-3.23.43b pars0grm.c Merge changes in InnoDB-3.23.43b page0page.c Merge changes in InnoDB-3.23.43b os0file.c Merge changes in InnoDB-3.23.43b mtr0log.c Merge changes in InnoDB-3.23.43b mem0pool.c Merge changes in InnoDB-3.23.43b log0log.c Merge changes in InnoDB-3.23.43b log0recv.c Merge changes in InnoDB-3.23.43b lock0lock.c Merge changes in InnoDB-3.23.43b ibuf0ibuf.c Merge changes in InnoDB-3.23.43b fil0fil.c Merge changes in InnoDB-3.23.43b dict0crea.c Merge changes in InnoDB-3.23.43b dict0dict.c Merge changes in InnoDB-3.23.43b dict0load.c Merge changes in InnoDB-3.23.43b dict0mem.c Merge changes in InnoDB-3.23.43b data0data.c Merge changes in InnoDB-3.23.43b data0type.c Merge changes in InnoDB-3.23.43b buf0buf.c Merge changes in InnoDB-3.23.43b buf0lru.c Merge changes in InnoDB-3.23.43b btr0btr.c Merge changes in InnoDB-3.23.43b btr0cur.c Merge changes in InnoDB-3.23.43b btr0pcur.c Merge changes in InnoDB-3.23.43b btr0sea.c Merge changes in InnoDB-3.23.43b data0type.ic Merge changes in InnoDB-3.23.43b dict0dict.ic Merge changes in InnoDB-3.23.43b mtr0mtr.ic Merge changes in InnoDB-3.23.43b row0upd.ic Merge changes in InnoDB-3.23.43b sync0ipm.ic Merge changes in InnoDB-3.23.43b sync0rw.ic Merge changes in InnoDB-3.23.43b sync0sync.ic Merge changes in InnoDB-3.23.43b trx0rseg.ic Merge changes in InnoDB-3.23.43b btr0pcur.ic Merge changes in InnoDB-3.23.43b buf0buf.ic Merge changes in InnoDB-3.23.43b data0data.ic Merge changes in InnoDB-3.23.43b row0upd.h Merge changes in InnoDB-3.23.43b srv0srv.h Merge changes in InnoDB-3.23.43b sync0arr.h Merge changes in InnoDB-3.23.43b sync0rw.h Merge changes in InnoDB-3.23.43b sync0sync.h Merge changes in InnoDB-3.23.43b trx0trx.h Merge changes in InnoDB-3.23.43b ut0mem.h Merge changes in InnoDB-3.23.43b data0data.h Merge changes in InnoDB-3.23.43b data0type.h Merge changes in InnoDB-3.23.43b db0err.h Merge changes in InnoDB-3.23.43b dict0crea.h Merge changes in InnoDB-3.23.43b dict0dict.h Merge changes in InnoDB-3.23.43b dict0load.h Merge changes in InnoDB-3.23.43b dict0mem.h Merge changes in InnoDB-3.23.43b dict0types.h Merge changes in InnoDB-3.23.43b fil0fil.h Merge changes in InnoDB-3.23.43b ibuf0ibuf.h Merge changes in InnoDB-3.23.43b lock0lock.h Merge changes in InnoDB-3.23.43b log0log.h Merge changes in InnoDB-3.23.43b mtr0mtr.h Merge changes in InnoDB-3.23.43b rem0cmp.h Merge changes in InnoDB-3.23.43b row0ins.h Merge changes in InnoDB-3.23.43b row0mysql.h Merge changes in InnoDB-3.23.43b btr0cur.h Merge changes in InnoDB-3.23.43b btr0pcur.h Merge changes in InnoDB-3.23.43b btr0sea.h Merge changes in InnoDB-3.23.43b buf0buf.h Merge changes in InnoDB-3.23.43b sql_table.cc Merge changes in InnoDB-3.23.43b sql_db.cc Merge changes in InnoDB-3.23.43b ha_innobase.cc Merge changes in InnoDB-3.23.43b handler.cc Merge changes in InnoDB-3.23.43b ha_innobase.h Merge changes in InnoDB-3.23.43b handler.h Merge changes in InnoDB-3.23.43b sql/ha_innobase.h: Merge changes in InnoDB-3.23.43b sql/handler.h: Merge changes in InnoDB-3.23.43b sql/ha_innobase.cc: Merge changes in InnoDB-3.23.43b sql/handler.cc: Merge changes in InnoDB-3.23.43b sql/sql_db.cc: Merge changes in InnoDB-3.23.43b sql/sql_table.cc: Merge changes in InnoDB-3.23.43b innobase/include/btr0cur.h: Merge changes in InnoDB-3.23.43b innobase/include/btr0pcur.h: Merge changes in InnoDB-3.23.43b innobase/include/btr0sea.h: Merge changes in InnoDB-3.23.43b innobase/include/buf0buf.h: Merge changes in InnoDB-3.23.43b innobase/include/data0data.h: Merge changes in InnoDB-3.23.43b innobase/include/data0type.h: Merge changes in InnoDB-3.23.43b innobase/include/db0err.h: Merge changes in InnoDB-3.23.43b innobase/include/dict0crea.h: Merge changes in InnoDB-3.23.43b innobase/include/dict0dict.h: Merge changes in InnoDB-3.23.43b innobase/include/dict0load.h: Merge changes in InnoDB-3.23.43b innobase/include/dict0mem.h: Merge changes in InnoDB-3.23.43b innobase/include/dict0types.h: Merge changes in InnoDB-3.23.43b innobase/include/fil0fil.h: Merge changes in InnoDB-3.23.43b innobase/include/ibuf0ibuf.h: Merge changes in InnoDB-3.23.43b innobase/include/lock0lock.h: Merge changes in InnoDB-3.23.43b innobase/include/log0log.h: Merge changes in InnoDB-3.23.43b innobase/include/mtr0mtr.h: Merge changes in InnoDB-3.23.43b innobase/include/rem0cmp.h: Merge changes in InnoDB-3.23.43b innobase/include/row0ins.h: Merge changes in InnoDB-3.23.43b innobase/include/row0mysql.h: Merge changes in InnoDB-3.23.43b innobase/include/row0upd.h: Merge changes in InnoDB-3.23.43b innobase/include/srv0srv.h: Merge changes in InnoDB-3.23.43b innobase/include/sync0arr.h: Merge changes in InnoDB-3.23.43b innobase/include/sync0rw.h: Merge changes in InnoDB-3.23.43b innobase/include/sync0sync.h: Merge changes in InnoDB-3.23.43b innobase/include/trx0trx.h: Merge changes in InnoDB-3.23.43b innobase/include/ut0mem.h: Merge changes in InnoDB-3.23.43b innobase/include/btr0pcur.ic: Merge changes in InnoDB-3.23.43b innobase/include/buf0buf.ic: Merge changes in InnoDB-3.23.43b innobase/include/data0data.ic: Merge changes in InnoDB-3.23.43b innobase/include/data0type.ic: Merge changes in InnoDB-3.23.43b innobase/include/dict0dict.ic: Merge changes in InnoDB-3.23.43b innobase/include/mtr0mtr.ic: Merge changes in InnoDB-3.23.43b innobase/include/row0upd.ic: Merge changes in InnoDB-3.23.43b innobase/include/sync0ipm.ic: Merge changes in InnoDB-3.23.43b innobase/include/sync0rw.ic: Merge changes in InnoDB-3.23.43b innobase/include/sync0sync.ic: Merge changes in InnoDB-3.23.43b innobase/include/trx0rseg.ic: Merge changes in InnoDB-3.23.43b innobase/btr/btr0btr.c: Merge changes in InnoDB-3.23.43b innobase/btr/btr0cur.c: Merge changes in InnoDB-3.23.43b innobase/btr/btr0pcur.c: Merge changes in InnoDB-3.23.43b innobase/btr/btr0sea.c: Merge changes in InnoDB-3.23.43b innobase/buf/buf0buf.c: Merge changes in InnoDB-3.23.43b innobase/buf/buf0lru.c: Merge changes in InnoDB-3.23.43b innobase/data/data0data.c: Merge changes in InnoDB-3.23.43b innobase/data/data0type.c: Merge changes in InnoDB-3.23.43b innobase/dict/dict0crea.c: Merge changes in InnoDB-3.23.43b innobase/dict/dict0dict.c: Merge changes in InnoDB-3.23.43b innobase/dict/dict0load.c: Merge changes in InnoDB-3.23.43b innobase/dict/dict0mem.c: Merge changes in InnoDB-3.23.43b innobase/fil/fil0fil.c: Merge changes in InnoDB-3.23.43b innobase/ibuf/ibuf0ibuf.c: Merge changes in InnoDB-3.23.43b innobase/lock/lock0lock.c: Merge changes in InnoDB-3.23.43b innobase/log/log0log.c: Merge changes in InnoDB-3.23.43b innobase/log/log0recv.c: Merge changes in InnoDB-3.23.43b innobase/mem/mem0pool.c: Merge changes in InnoDB-3.23.43b innobase/mtr/mtr0log.c: Merge changes in InnoDB-3.23.43b innobase/os/os0file.c: Merge changes in InnoDB-3.23.43b innobase/page/page0page.c: Merge changes in InnoDB-3.23.43b innobase/pars/lexyy.c: Merge changes in InnoDB-3.23.43b innobase/pars/pars0grm.c: Merge changes in InnoDB-3.23.43b innobase/pars/pars0opt.c: Merge changes in InnoDB-3.23.43b innobase/pars/pars0pars.c: Merge changes in InnoDB-3.23.43b innobase/que/que0que.c: Merge changes in InnoDB-3.23.43b innobase/rem/rem0cmp.c: Merge changes in InnoDB-3.23.43b innobase/row/row0ins.c: Merge changes in InnoDB-3.23.43b innobase/row/row0mysql.c: Merge changes in InnoDB-3.23.43b innobase/row/row0purge.c: Merge changes in InnoDB-3.23.43b innobase/row/row0sel.c: Merge changes in InnoDB-3.23.43b innobase/row/row0umod.c: Merge changes in InnoDB-3.23.43b innobase/row/row0upd.c: Merge changes in InnoDB-3.23.43b innobase/row/row0vers.c: Merge changes in InnoDB-3.23.43b innobase/srv/srv0srv.c: Merge changes in InnoDB-3.23.43b innobase/srv/srv0start.c: Merge changes in InnoDB-3.23.43b innobase/sync/sync0arr.c: Merge changes in InnoDB-3.23.43b innobase/sync/sync0rw.c: Merge changes in InnoDB-3.23.43b innobase/sync/sync0sync.c: Merge changes in InnoDB-3.23.43b innobase/thr/thr0loc.c: Merge changes in InnoDB-3.23.43b innobase/trx/trx0purge.c: Merge changes in InnoDB-3.23.43b innobase/trx/trx0rec.c: Merge changes in InnoDB-3.23.43b innobase/trx/trx0trx.c: Merge changes in InnoDB-3.23.43b innobase/trx/trx0undo.c: Merge changes in InnoDB-3.23.43b innobase/ut/ut0mem.c: Merge changes in InnoDB-3.23.43b innobase/ut/ut0ut.c: Merge changes in InnoDB-3.23.43b BitKeeper/etc/logging_ok: Logging to logging@openlogging.org accepted
This commit is contained in:
parent
151ffe886b
commit
1904897be7
91 changed files with 5241 additions and 1234 deletions
|
|
@ -34,6 +34,8 @@ Created 11/5/1995 Heikki Tuuri
|
|||
#include "ibuf0ibuf.h"
|
||||
#include "dict0dict.h"
|
||||
#include "log0recv.h"
|
||||
#include "trx0undo.h"
|
||||
#include "srv0srv.h"
|
||||
|
||||
/*
|
||||
IMPLEMENTATION OF THE BUFFER POOL
|
||||
|
|
@ -240,6 +242,11 @@ buf_page_is_corrupted(
|
|||
|
||||
checksum = buf_calc_page_checksum(read_buf);
|
||||
|
||||
/* Note that InnoDB initializes empty pages to zero, and
|
||||
early versions of InnoDB did not store page checksum to
|
||||
the 4 most significant bytes of the page lsn field at the
|
||||
end of a page: */
|
||||
|
||||
if ((mach_read_from_4(read_buf + FIL_PAGE_LSN + 4)
|
||||
!= mach_read_from_4(read_buf + UNIV_PAGE_SIZE
|
||||
- FIL_PAGE_END_LSN + 4))
|
||||
|
|
@ -256,6 +263,71 @@ buf_page_is_corrupted(
|
|||
return(FALSE);
|
||||
}
|
||||
|
||||
/************************************************************************
|
||||
Prints a page to stderr. */
|
||||
|
||||
void
|
||||
buf_page_print(
|
||||
/*===========*/
|
||||
byte* read_buf) /* in: a database page */
|
||||
{
|
||||
dict_index_t* index;
|
||||
ulint checksum;
|
||||
char* buf;
|
||||
|
||||
buf = mem_alloc(4 * UNIV_PAGE_SIZE);
|
||||
|
||||
ut_sprintf_buf(buf, read_buf, UNIV_PAGE_SIZE);
|
||||
|
||||
fprintf(stderr,
|
||||
"InnoDB: Page dump in ascii and hex (%lu bytes):\n%s",
|
||||
UNIV_PAGE_SIZE, buf);
|
||||
fprintf(stderr, "InnoDB: End of page dump\n");
|
||||
|
||||
mem_free(buf);
|
||||
|
||||
checksum = buf_calc_page_checksum(read_buf);
|
||||
|
||||
fprintf(stderr, "InnoDB: Page checksum %lu stored checksum %lu\n",
|
||||
checksum, mach_read_from_4(read_buf
|
||||
+ UNIV_PAGE_SIZE
|
||||
- FIL_PAGE_END_LSN));
|
||||
fprintf(stderr,
|
||||
"InnoDB: Page lsn %lu %lu, low 4 bytes of lsn at page end %lu\n",
|
||||
mach_read_from_4(read_buf + FIL_PAGE_LSN),
|
||||
mach_read_from_4(read_buf + FIL_PAGE_LSN + 4),
|
||||
mach_read_from_4(read_buf + UNIV_PAGE_SIZE
|
||||
- FIL_PAGE_END_LSN + 4));
|
||||
if (mach_read_from_2(read_buf + TRX_UNDO_PAGE_HDR + TRX_UNDO_PAGE_TYPE)
|
||||
== TRX_UNDO_INSERT) {
|
||||
fprintf(stderr,
|
||||
"InnoDB: Page may be an insert undo log page\n");
|
||||
} else if (mach_read_from_2(read_buf + TRX_UNDO_PAGE_HDR
|
||||
+ TRX_UNDO_PAGE_TYPE)
|
||||
== TRX_UNDO_UPDATE) {
|
||||
fprintf(stderr,
|
||||
"InnoDB: Page may be an update undo log page\n");
|
||||
}
|
||||
|
||||
if (fil_page_get_type(read_buf) == FIL_PAGE_INDEX) {
|
||||
fprintf(stderr,
|
||||
"InnoDB: Page may be an index page ");
|
||||
|
||||
fprintf(stderr,
|
||||
"where index id is %lu %lu\n",
|
||||
ut_dulint_get_high(btr_page_get_index_id(read_buf)),
|
||||
ut_dulint_get_low(btr_page_get_index_id(read_buf)));
|
||||
|
||||
index = dict_index_find_on_id_low(
|
||||
btr_page_get_index_id(read_buf));
|
||||
if (index) {
|
||||
fprintf(stderr, "InnoDB: and table %s index %s\n",
|
||||
index->table_name,
|
||||
index->name);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/************************************************************************
|
||||
Initializes a buffer control block when the buf_pool is created. */
|
||||
static
|
||||
|
|
@ -334,6 +406,8 @@ buf_pool_create(
|
|||
frame = ut_align(buf_pool->frame_mem, UNIV_PAGE_SIZE);
|
||||
buf_pool->frame_zero = frame;
|
||||
|
||||
buf_pool->high_end = frame + UNIV_PAGE_SIZE * curr_size;
|
||||
|
||||
/* Init block structs and assign frames for them */
|
||||
for (i = 0; i < max_size; i++) {
|
||||
|
||||
|
|
@ -345,6 +419,9 @@ buf_pool_create(
|
|||
buf_pool->page_hash = hash_create(2 * max_size);
|
||||
|
||||
buf_pool->n_pend_reads = 0;
|
||||
|
||||
buf_pool->last_printout_time = time(NULL);
|
||||
|
||||
buf_pool->n_pages_read = 0;
|
||||
buf_pool->n_pages_written = 0;
|
||||
buf_pool->n_pages_created = 0;
|
||||
|
|
@ -352,6 +429,8 @@ buf_pool_create(
|
|||
buf_pool->n_page_gets = 0;
|
||||
buf_pool->n_page_gets_old = 0;
|
||||
buf_pool->n_pages_read_old = 0;
|
||||
buf_pool->n_pages_written_old = 0;
|
||||
buf_pool->n_pages_created_old = 0;
|
||||
|
||||
/* 2. Initialize flushing fields
|
||||
---------------------------- */
|
||||
|
|
@ -379,6 +458,10 @@ buf_pool_create(
|
|||
for (i = 0; i < curr_size; i++) {
|
||||
|
||||
block = buf_pool_get_nth_block(buf_pool, i);
|
||||
|
||||
/* Wipe contents of page to eliminate a Purify warning */
|
||||
memset(block->frame, '\0', UNIV_PAGE_SIZE);
|
||||
|
||||
UT_LIST_ADD_FIRST(free, buf_pool->free, block);
|
||||
}
|
||||
|
||||
|
|
@ -650,10 +733,8 @@ buf_page_get_gen(
|
|||
buf_frame_t* guess, /* in: guessed frame or NULL */
|
||||
ulint mode, /* in: BUF_GET, BUF_GET_IF_IN_POOL,
|
||||
BUF_GET_NO_LATCH, BUF_GET_NOWAIT */
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
char* file, /* in: file name */
|
||||
ulint line, /* in: line where called */
|
||||
#endif
|
||||
mtr_t* mtr) /* in: mini-transaction */
|
||||
{
|
||||
buf_block_t* block;
|
||||
|
|
@ -759,19 +840,13 @@ loop:
|
|||
|
||||
if (mode == BUF_GET_NOWAIT) {
|
||||
if (rw_latch == RW_S_LATCH) {
|
||||
success = rw_lock_s_lock_func_nowait(&(block->lock)
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
,file, line
|
||||
#endif
|
||||
);
|
||||
success = rw_lock_s_lock_func_nowait(&(block->lock),
|
||||
file, line);
|
||||
fix_type = MTR_MEMO_PAGE_S_FIX;
|
||||
} else {
|
||||
ut_ad(rw_latch == RW_X_LATCH);
|
||||
success = rw_lock_x_lock_func_nowait(&(block->lock)
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
,file, line
|
||||
#endif
|
||||
);
|
||||
success = rw_lock_x_lock_func_nowait(&(block->lock),
|
||||
file, line);
|
||||
fix_type = MTR_MEMO_PAGE_X_FIX;
|
||||
}
|
||||
|
||||
|
|
@ -796,18 +871,12 @@ loop:
|
|||
fix_type = MTR_MEMO_BUF_FIX;
|
||||
} else if (rw_latch == RW_S_LATCH) {
|
||||
|
||||
rw_lock_s_lock_func(&(block->lock)
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
,0, file, line
|
||||
#endif
|
||||
);
|
||||
rw_lock_s_lock_func(&(block->lock), 0, file, line);
|
||||
|
||||
fix_type = MTR_MEMO_PAGE_S_FIX;
|
||||
} else {
|
||||
rw_lock_x_lock_func(&(block->lock), 0
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
, file, line
|
||||
#endif
|
||||
);
|
||||
rw_lock_x_lock_func(&(block->lock), 0, file, line);
|
||||
|
||||
fix_type = MTR_MEMO_PAGE_X_FIX;
|
||||
}
|
||||
|
||||
|
|
@ -838,10 +907,8 @@ buf_page_optimistic_get_func(
|
|||
buf_frame_t* guess, /* in: guessed frame */
|
||||
dulint modify_clock,/* in: modify clock value if mode is
|
||||
..._GUESS_ON_CLOCK */
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
char* file, /* in: file name */
|
||||
ulint line, /* in: line where called */
|
||||
#endif
|
||||
mtr_t* mtr) /* in: mini-transaction */
|
||||
{
|
||||
buf_block_t* block;
|
||||
|
|
@ -883,18 +950,12 @@ buf_page_optimistic_get_func(
|
|||
ut_ad(!ibuf_inside() || ibuf_page(block->space, block->offset));
|
||||
|
||||
if (rw_latch == RW_S_LATCH) {
|
||||
success = rw_lock_s_lock_func_nowait(&(block->lock)
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
, file, line
|
||||
#endif
|
||||
);
|
||||
success = rw_lock_s_lock_func_nowait(&(block->lock),
|
||||
file, line);
|
||||
fix_type = MTR_MEMO_PAGE_S_FIX;
|
||||
} else {
|
||||
success = rw_lock_x_lock_func_nowait(&(block->lock)
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
, file, line
|
||||
#endif
|
||||
);
|
||||
success = rw_lock_x_lock_func_nowait(&(block->lock),
|
||||
file, line);
|
||||
fix_type = MTR_MEMO_PAGE_X_FIX;
|
||||
}
|
||||
|
||||
|
|
@ -971,10 +1032,8 @@ buf_page_get_known_nowait(
|
|||
ulint rw_latch,/* in: RW_S_LATCH, RW_X_LATCH */
|
||||
buf_frame_t* guess, /* in: the known page frame */
|
||||
ulint mode, /* in: BUF_MAKE_YOUNG or BUF_KEEP_OLD */
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
char* file, /* in: file name */
|
||||
ulint line, /* in: line where called */
|
||||
#endif
|
||||
mtr_t* mtr) /* in: mini-transaction */
|
||||
{
|
||||
buf_block_t* block;
|
||||
|
|
@ -1017,18 +1076,12 @@ buf_page_get_known_nowait(
|
|||
ut_ad(!ibuf_inside() || (mode == BUF_KEEP_OLD));
|
||||
|
||||
if (rw_latch == RW_S_LATCH) {
|
||||
success = rw_lock_s_lock_func_nowait(&(block->lock)
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
, file, line
|
||||
#endif
|
||||
);
|
||||
success = rw_lock_s_lock_func_nowait(&(block->lock),
|
||||
file, line);
|
||||
fix_type = MTR_MEMO_PAGE_S_FIX;
|
||||
} else {
|
||||
success = rw_lock_x_lock_func_nowait(&(block->lock)
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
, file, line
|
||||
#endif
|
||||
);
|
||||
success = rw_lock_x_lock_func_nowait(&(block->lock),
|
||||
file, line);
|
||||
fix_type = MTR_MEMO_PAGE_X_FIX;
|
||||
}
|
||||
|
||||
|
|
@ -1318,9 +1371,26 @@ buf_page_io_complete(
|
|||
fprintf(stderr,
|
||||
"InnoDB: Database page corruption or a failed\n"
|
||||
"InnoDB: file read of page %lu.\n", block->offset);
|
||||
|
||||
fprintf(stderr,
|
||||
"InnoDB: You may have to recover from a backup.\n");
|
||||
exit(1);
|
||||
|
||||
buf_page_print(block->frame);
|
||||
|
||||
fprintf(stderr,
|
||||
"InnoDB: Database page corruption or a failed\n"
|
||||
"InnoDB: file read of page %lu.\n", block->offset);
|
||||
fprintf(stderr,
|
||||
"InnoDB: You may have to recover from a backup.\n");
|
||||
fprintf(stderr,
|
||||
"InnoDB: It is also possible that your operating\n"
|
||||
"InnoDB: system has corrupted its own file cache\n"
|
||||
"InnoDB: and rebooting your computer removes the\n"
|
||||
"InnoDB: error.\n");
|
||||
|
||||
if (srv_force_recovery < SRV_FORCE_IGNORE_CORRUPT) {
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
|
||||
if (recv_recovery_is_on()) {
|
||||
|
|
@ -1622,6 +1692,19 @@ buf_print(void)
|
|||
ut_a(buf_validate());
|
||||
}
|
||||
|
||||
/*************************************************************************
|
||||
Returns the number of pending buf pool ios. */
|
||||
|
||||
ulint
|
||||
buf_get_n_pending_ios(void)
|
||||
/*=======================*/
|
||||
{
|
||||
return(buf_pool->n_pend_reads
|
||||
+ buf_pool->n_flush[BUF_FLUSH_LRU]
|
||||
+ buf_pool->n_flush[BUF_FLUSH_LIST]
|
||||
+ buf_pool->n_flush[BUF_FLUSH_SINGLE_PAGE]);
|
||||
}
|
||||
|
||||
/*************************************************************************
|
||||
Prints info of the buffer i/o. */
|
||||
|
||||
|
|
@ -1629,6 +1712,8 @@ void
|
|||
buf_print_io(void)
|
||||
/*==============*/
|
||||
{
|
||||
time_t current_time;
|
||||
double time_elapsed;
|
||||
ulint size;
|
||||
|
||||
ut_ad(buf_pool);
|
||||
|
|
@ -1637,11 +1722,11 @@ buf_print_io(void)
|
|||
|
||||
mutex_enter(&(buf_pool->mutex));
|
||||
|
||||
printf("LRU list length %lu \n", UT_LIST_GET_LEN(buf_pool->LRU));
|
||||
printf("Free list length %lu \n", UT_LIST_GET_LEN(buf_pool->free));
|
||||
printf("Free list length %lu \n", UT_LIST_GET_LEN(buf_pool->free));
|
||||
printf("LRU list length %lu \n", UT_LIST_GET_LEN(buf_pool->LRU));
|
||||
printf("Flush list length %lu \n",
|
||||
UT_LIST_GET_LEN(buf_pool->flush_list));
|
||||
printf("Buffer pool size in pages %lu\n", size);
|
||||
printf("Buffer pool size %lu\n", size);
|
||||
|
||||
printf("Pending reads %lu \n", buf_pool->n_pend_reads);
|
||||
|
||||
|
|
@ -1650,9 +1735,21 @@ buf_print_io(void)
|
|||
buf_pool->n_flush[BUF_FLUSH_LIST],
|
||||
buf_pool->n_flush[BUF_FLUSH_SINGLE_PAGE]);
|
||||
|
||||
current_time = time(NULL);
|
||||
time_elapsed = difftime(current_time, buf_pool->last_printout_time);
|
||||
|
||||
buf_pool->last_printout_time = current_time;
|
||||
|
||||
printf("Pages read %lu, created %lu, written %lu\n",
|
||||
buf_pool->n_pages_read, buf_pool->n_pages_created,
|
||||
buf_pool->n_pages_written);
|
||||
printf("%.2f reads/s, %.2f creates/s, %.2f writes/s\n",
|
||||
(buf_pool->n_pages_read - buf_pool->n_pages_read_old)
|
||||
/ time_elapsed,
|
||||
(buf_pool->n_pages_created - buf_pool->n_pages_created_old)
|
||||
/ time_elapsed,
|
||||
(buf_pool->n_pages_written - buf_pool->n_pages_written_old)
|
||||
/ time_elapsed);
|
||||
|
||||
if (buf_pool->n_page_gets > buf_pool->n_page_gets_old) {
|
||||
printf("Buffer pool hit rate %lu / 1000\n",
|
||||
|
|
@ -1660,10 +1757,14 @@ buf_print_io(void)
|
|||
- ((1000 *
|
||||
(buf_pool->n_pages_read - buf_pool->n_pages_read_old))
|
||||
/ (buf_pool->n_page_gets - buf_pool->n_page_gets_old)));
|
||||
} else {
|
||||
printf("No buffer pool activity since the last printout\n");
|
||||
}
|
||||
|
||||
buf_pool->n_page_gets_old = buf_pool->n_page_gets;
|
||||
buf_pool->n_pages_read_old = buf_pool->n_pages_read;
|
||||
buf_pool->n_pages_created_old = buf_pool->n_pages_created;
|
||||
buf_pool->n_pages_written_old = buf_pool->n_pages_written;
|
||||
|
||||
mutex_exit(&(buf_pool->mutex));
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue