]> git.pld-linux.org Git - packages/mysql.git/blobdiff - innodb_extend_slow.patch
- up to 5.5.28
[packages/mysql.git] / innodb_extend_slow.patch
index 5b710d917eb153fb49a97d1a45dbce220c95b07f..28c495fa33686c2d90b0dd0f222209a6dc8803ba 100644 (file)
@@ -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;
                        }
                }
        }
  
  #ifdef UNIV_IBUF_COUNT_DEBUG
-@@ -2277,6 +2332,11 @@
+@@ -2314,6 +2369,11 @@
        ibool           must_read;
        ulint           retries = 0;
        mutex_t*        block_mutex = NULL;
        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
        buf_pool->stat.n_page_gets++;
        fold = buf_page_address_fold(space, offset);
  loop:
-@@ -2376,9 +2439,9 @@
+@@ -2413,9 +2476,9 @@
                        return(NULL);
                }
  
  
                        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 */
  
                        for (;;) {
                                enum buf_io_fix io_fix;
  
-@@ -2702,6 +2772,12 @@
+@@ -2739,6 +2809,12 @@
                                        break;
                                }
                        }
                }
  
                fix_type = MTR_MEMO_BUF_FIX;
-@@ -2728,13 +2804,17 @@
+@@ -2765,13 +2841,17 @@
                read-ahead */
  
                buf_read_ahead_linear(space, zip_size, offset,
        return(block);
  }
  
-@@ -2758,6 +2838,7 @@
+@@ -2795,6 +2875,7 @@
        unsigned        access_time;
        ibool           success;
        ulint           fix_type;
  
        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
        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),
        }
  
  #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++;
  
        return(TRUE);
  }
  
-@@ -2874,6 +2962,7 @@
+@@ -2911,6 +2999,7 @@
        buf_pool_t*     buf_pool;
        ibool           success;
        ulint           fix_type;
  
        ut_ad(mtr);
        ut_ad(mtr->state == MTR_ACTIVE);
-@@ -2960,6 +3049,11 @@
+@@ -2997,6 +3086,11 @@
  #endif
        buf_pool->stat.n_page_gets++;
  
  
 --- 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,
  #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
  /*===*/
        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 */
  {
        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,
  /*********************************************************************//**
  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) {
  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 */
  /*===*/
        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 */
  /* 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;
  
  #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);
                }
  
                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 */
        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 = "";
  
This page took 0.090153 seconds and 4 git commands to generate.