X-Git-Url: https://git.pld-linux.org/?a=blobdiff_plain;f=innodb_extend_slow.patch;h=28c495fa33686c2d90b0dd0f222209a6dc8803ba;hb=e6de4e01712e8a04bff03088f306913825a22bb3;hp=5b710d917eb153fb49a97d1a45dbce220c95b07f;hpb=13ceb00646ecd0965290232fda27e39e96885c18;p=packages%2Fmysql.git diff --git a/innodb_extend_slow.patch b/innodb_extend_slow.patch index 5b710d9..28c495f 100644 --- a/innodb_extend_slow.patch +++ b/innodb_extend_slow.patch @@ -48,7 +48,7 @@ /* IMPLEMENTATION OF THE BUFFER POOL -@@ -1834,8 +1868,16 @@ +@@ -1871,8 +1905,16 @@ mutex_t* block_mutex; ibool must_read; unsigned access_time; @@ -65,7 +65,7 @@ buf_pool->stat.n_page_gets++; for (;;) { -@@ -1853,7 +1895,7 @@ +@@ -1890,7 +1932,7 @@ //buf_pool_mutex_exit(buf_pool); rw_lock_s_unlock(&buf_pool->page_hash_latch); @@ -74,7 +74,7 @@ #if defined UNIV_DEBUG || defined UNIV_BUF_DEBUG ut_a(++buf_dbg_counter % 37 || buf_validate()); -@@ -1949,6 +1991,13 @@ +@@ -1986,6 +2028,13 @@ /* Let us wait until the read operation completes */ @@ -88,7 +88,7 @@ for (;;) { enum buf_io_fix io_fix; -@@ -1963,6 +2012,12 @@ +@@ -2000,6 +2049,12 @@ break; } } @@ -101,7 +101,7 @@ } #ifdef UNIV_IBUF_COUNT_DEBUG -@@ -2277,6 +2332,11 @@ +@@ -2314,6 +2369,11 @@ ibool must_read; ulint retries = 0; mutex_t* block_mutex = NULL; @@ -113,7 +113,7 @@ buf_pool_t* buf_pool = buf_pool_get(space, offset); ut_ad(mtr); -@@ -2306,6 +2366,9 @@ +@@ -2343,6 +2403,9 @@ || ibuf_page_low(space, zip_size, offset, FALSE, file, line, NULL)); #endif @@ -123,7 +123,7 @@ buf_pool->stat.n_page_gets++; fold = buf_page_address_fold(space, offset); loop: -@@ -2376,9 +2439,9 @@ +@@ -2413,9 +2476,9 @@ return(NULL); } @@ -135,7 +135,7 @@ retries = 0; } else if (retries < BUF_PAGE_READ_MAX_RETRIES) { -@@ -2688,6 +2751,13 @@ +@@ -2725,6 +2788,13 @@ /* Let us wait until the read operation completes */ @@ -149,7 +149,7 @@ for (;;) { enum buf_io_fix io_fix; -@@ -2702,6 +2772,12 @@ +@@ -2739,6 +2809,12 @@ break; } } @@ -162,7 +162,7 @@ } fix_type = MTR_MEMO_BUF_FIX; -@@ -2728,13 +2804,17 @@ +@@ -2765,13 +2841,17 @@ read-ahead */ buf_read_ahead_linear(space, zip_size, offset, @@ -181,7 +181,7 @@ return(block); } -@@ -2758,6 +2838,7 @@ +@@ -2795,6 +2875,7 @@ unsigned access_time; ibool success; ulint fix_type; @@ -189,7 +189,7 @@ ut_ad(block); ut_ad(mtr); -@@ -2835,6 +2916,10 @@ +@@ -2872,6 +2953,10 @@ #if defined UNIV_DEBUG_FILE_ACCESSES || defined UNIV_DEBUG ut_a(block->page.file_page_was_freed == FALSE); #endif @@ -200,7 +200,7 @@ if (UNIV_UNLIKELY(!access_time)) { /* In the case of a first access, try to apply linear read-ahead */ -@@ -2842,7 +2927,7 @@ +@@ -2879,7 +2964,7 @@ buf_read_ahead_linear(buf_block_get_space(block), buf_block_get_zip_size(block), buf_block_get_page_no(block), @@ -209,7 +209,7 @@ } #ifdef UNIV_IBUF_COUNT_DEBUG -@@ -2852,6 +2937,9 @@ +@@ -2889,6 +2974,9 @@ buf_pool = buf_pool_from_block(block); buf_pool->stat.n_page_gets++; @@ -219,7 +219,7 @@ return(TRUE); } -@@ -2874,6 +2962,7 @@ +@@ -2911,6 +2999,7 @@ buf_pool_t* buf_pool; ibool success; ulint fix_type; @@ -227,7 +227,7 @@ ut_ad(mtr); ut_ad(mtr->state == MTR_ACTIVE); -@@ -2960,6 +3049,11 @@ +@@ -2997,6 +3086,11 @@ #endif buf_pool->stat.n_page_gets++; @@ -355,7 +355,7 @@ --- a/storage/innobase/fil/fil0fil.c +++ b/storage/innobase/fil/fil0fil.c -@@ -4748,7 +4748,7 @@ +@@ -4765,7 +4765,7 @@ node->name, node->handle, buf, offset_low, offset_high, page_size * n_pages, @@ -364,7 +364,7 @@ #endif if (success) { node->size += n_pages; -@@ -5075,7 +5075,7 @@ +@@ -5092,7 +5092,7 @@ i/o on a tablespace which does not exist */ UNIV_INTERN ulint @@ -373,7 +373,7 @@ /*===*/ ulint type, /*!< in: OS_FILE_READ or OS_FILE_WRITE, ORed to OS_FILE_LOG, if a log i/o -@@ -5100,8 +5100,9 @@ +@@ -5117,8 +5117,9 @@ void* buf, /*!< in/out: buffer where to store read data or from where to write; in aio this must be appropriately aligned */ @@ -384,7 +384,7 @@ { ulint mode; fil_space_t* space; -@@ -5269,7 +5270,7 @@ +@@ -5286,7 +5287,7 @@ #else /* Queue the aio request */ ret = os_aio(type, mode | wake_later, node->name, node->handle, buf, @@ -445,7 +445,7 @@ /*********************************************************************//** Note that a transaction has been registered with MySQL. @return true if transaction is registered with MySQL 2PC coordinator */ -@@ -9409,6 +9445,25 @@ +@@ -9417,6 +9453,25 @@ statement has ended */ if (trx->n_mysql_tables_in_use == 0) { @@ -514,7 +514,7 @@ order to contract the insert buffer tree. Technically, this function is like --- a/storage/innobase/include/fil0fil.h +++ b/storage/innobase/include/fil0fil.h -@@ -611,9 +611,12 @@ +@@ -620,9 +620,12 @@ Reads or writes data. This operation is asynchronous (aio). @return DB_SUCCESS, or DB_TABLESPACE_DELETED if we are trying to do i/o on a tablespace which does not exist */ @@ -528,7 +528,7 @@ /*===*/ ulint type, /*!< in: OS_FILE_READ or OS_FILE_WRITE, ORed to OS_FILE_LOG, if a log i/o -@@ -638,8 +641,9 @@ +@@ -647,8 +650,9 @@ void* buf, /*!< in/out: buffer where to store read data or from where to write; in aio this must be appropriately aligned */ @@ -887,7 +887,7 @@ /* The following counter is incremented whenever there is some user activity in the server */ UNIV_INTERN ulint srv_activity_count = 0; -@@ -1234,6 +1237,10 @@ +@@ -1237,6 +1240,10 @@ ibool has_slept = FALSE; srv_conc_slot_t* slot = NULL; ulint i; @@ -898,7 +898,7 @@ #ifdef UNIV_SYNC_DEBUG ut_ad(!sync_thread_levels_nonempty_trx(trx->has_search_latch)); -@@ -1314,6 +1321,7 @@ +@@ -1317,6 +1324,7 @@ switches. */ if (SRV_THREAD_SLEEP_DELAY > 0) { os_thread_sleep(SRV_THREAD_SLEEP_DELAY); @@ -906,7 +906,7 @@ } trx->op_info = ""; -@@ -1373,6 +1381,14 @@ +@@ -1376,6 +1384,14 @@ #ifdef UNIV_SYNC_DEBUG ut_ad(!sync_thread_levels_nonempty_trx(trx->has_search_latch)); #endif /* UNIV_SYNC_DEBUG */ @@ -921,7 +921,7 @@ trx->op_info = "waiting in InnoDB queue"; thd_wait_begin(trx->mysql_thd, THD_WAIT_USER_LOCK); -@@ -1381,6 +1397,12 @@ +@@ -1384,6 +1400,12 @@ trx->op_info = "";