]> git.pld-linux.org Git - packages/mysql.git/commitdiff
- rel 2; update percona patches auto/th/mysql-5_5_13-2
authorArkadiusz Miśkiewicz <arekm@maven.pl>
Thu, 30 Jun 2011 18:38:47 +0000 (18:38 +0000)
committercvs2git <feedback@pld-linux.org>
Sun, 24 Jun 2012 12:13:13 +0000 (12:13 +0000)
Changed files:
    innodb_adaptive_hash_index_partitions.patch -> 1.7
    innodb_buffer_pool_pages_i_s.patch -> 1.7
    innodb_extend_slow.patch -> 1.6
    innodb_fix_misc.patch -> 1.7
    innodb_pass_corrupt_table.patch -> 1.7
    innodb_separate_doublewrite.patch -> 1.7
    innodb_split_buf_pool_mutex.patch -> 1.6
    mysql.spec -> 1.552

innodb_adaptive_hash_index_partitions.patch
innodb_buffer_pool_pages_i_s.patch
innodb_extend_slow.patch
innodb_fix_misc.patch
innodb_pass_corrupt_table.patch
innodb_separate_doublewrite.patch
innodb_split_buf_pool_mutex.patch
mysql.spec

index 1c181275c23ee3d46a5a73d63a68419724d5334d..730493a01ae33246dd4dbfd03c97c20f81e0111c 100644 (file)
@@ -1008,7 +1008,7 @@ diff -ruN a/storage/innobase/buf/buf0buf.c b/storage/innobase/buf/buf0buf.c
  #endif /* UNIV_SYNC_DEBUG */
        ut_ad(!btr_search_enabled);
  
-@@ -2636,6 +2641,7 @@
+@@ -2655,6 +2660,7 @@
  {
        block->check_index_page_at_flush = FALSE;
        block->index            = NULL;
index af32e07c4a83f83c417e6be5dae81d0c51c59d39..188da9c3f649f3d79f0e42d5070cccbef7ea7669 100644 (file)
@@ -8,7 +8,7 @@
 diff -ruN a/storage/innobase/buf/buf0buf.c b/storage/innobase/buf/buf0buf.c
 --- a/storage/innobase/buf/buf0buf.c   2010-12-04 20:20:44.595483291 +0900
 +++ b/storage/innobase/buf/buf0buf.c   2010-12-06 19:28:04.055227506 +0900
-@@ -4541,6 +4541,36 @@
+@@ -4560,6 +4560,36 @@
        mutex_exit(block_mutex);
  }
  
index 188a2ad97099382a012f801fa7aa4ab88ac893ab..e7ca2ae7eade22be4ca0556ece2370178975c847 100644 (file)
@@ -75,7 +75,7 @@ diff -ruN a/storage/innobase/buf/buf0buf.c b/storage/innobase/buf/buf0buf.c
  
  #if defined UNIV_DEBUG || defined UNIV_BUF_DEBUG
                ut_a(++buf_dbg_counter % 37 || buf_validate());
-@@ -2499,6 +2541,13 @@
+@@ -2518,6 +2560,13 @@
                /* Let us wait until the read operation
                completes */
  
@@ -89,7 +89,7 @@ diff -ruN a/storage/innobase/buf/buf0buf.c b/storage/innobase/buf/buf0buf.c
                for (;;) {
                        enum buf_io_fix io_fix;
  
-@@ -2513,6 +2562,12 @@
+@@ -2532,6 +2581,12 @@
                                break;
                        }
                }
@@ -102,7 +102,7 @@ diff -ruN a/storage/innobase/buf/buf0buf.c b/storage/innobase/buf/buf0buf.c
        }
  
  #ifdef UNIV_IBUF_COUNT_DEBUG
-@@ -2828,6 +2883,11 @@
+@@ -2847,6 +2902,11 @@
        ibool           must_read;
        ulint           retries = 0;
        mutex_t*        block_mutex = NULL;
@@ -114,7 +114,7 @@ diff -ruN a/storage/innobase/buf/buf0buf.c b/storage/innobase/buf/buf0buf.c
        buf_pool_t*     buf_pool = buf_pool_get(space, offset);
  
        ut_ad(mtr);
-@@ -2856,6 +2916,9 @@
+@@ -2875,6 +2935,9 @@
              || ibuf_page_low(space, zip_size, offset,
                               FALSE, file, line, NULL));
  #endif
@@ -124,7 +124,7 @@ diff -ruN a/storage/innobase/buf/buf0buf.c b/storage/innobase/buf/buf0buf.c
        buf_pool->stat.n_page_gets++;
        fold = buf_page_address_fold(space, offset);
  loop:
-@@ -2930,7 +2993,7 @@
+@@ -2949,7 +3012,7 @@
                        return(NULL);
                }
  
@@ -133,7 +133,7 @@ diff -ruN a/storage/innobase/buf/buf0buf.c b/storage/innobase/buf/buf0buf.c
                        retries = 0;
                } else if (retries < BUF_PAGE_READ_MAX_RETRIES) {
                        ++retries;
-@@ -3239,6 +3302,13 @@
+@@ -3258,6 +3321,13 @@
                        /* Let us wait until the read operation
                        completes */
  
@@ -147,7 +147,7 @@ diff -ruN a/storage/innobase/buf/buf0buf.c b/storage/innobase/buf/buf0buf.c
                        for (;;) {
                                enum buf_io_fix io_fix;
  
-@@ -3253,6 +3323,12 @@
+@@ -3272,6 +3342,12 @@
                                        break;
                                }
                        }
@@ -160,7 +160,7 @@ diff -ruN a/storage/innobase/buf/buf0buf.c b/storage/innobase/buf/buf0buf.c
                }
  
                fix_type = MTR_MEMO_BUF_FIX;
-@@ -3279,13 +3355,17 @@
+@@ -3298,13 +3374,17 @@
                read-ahead */
  
                buf_read_ahead_linear(space, zip_size, offset,
@@ -179,7 +179,7 @@ diff -ruN a/storage/innobase/buf/buf0buf.c b/storage/innobase/buf/buf0buf.c
        return(block);
  }
  
-@@ -3309,6 +3389,7 @@
+@@ -3328,6 +3408,7 @@
        unsigned        access_time;
        ibool           success;
        ulint           fix_type;
@@ -187,7 +187,7 @@ diff -ruN a/storage/innobase/buf/buf0buf.c b/storage/innobase/buf/buf0buf.c
  
        ut_ad(block);
        ut_ad(mtr);
-@@ -3386,6 +3467,10 @@
+@@ -3405,6 +3486,10 @@
  #if defined UNIV_DEBUG_FILE_ACCESSES || defined UNIV_DEBUG
        ut_a(block->page.file_page_was_freed == FALSE);
  #endif
@@ -198,7 +198,7 @@ diff -ruN a/storage/innobase/buf/buf0buf.c b/storage/innobase/buf/buf0buf.c
        if (UNIV_UNLIKELY(!access_time)) {
                /* In the case of a first access, try to apply linear
                read-ahead */
-@@ -3393,7 +3478,7 @@
+@@ -3412,7 +3497,7 @@
                buf_read_ahead_linear(buf_block_get_space(block),
                                      buf_block_get_zip_size(block),
                                      buf_block_get_page_no(block),
@@ -207,7 +207,7 @@ diff -ruN a/storage/innobase/buf/buf0buf.c b/storage/innobase/buf/buf0buf.c
        }
  
  #ifdef UNIV_IBUF_COUNT_DEBUG
-@@ -3403,6 +3488,9 @@
+@@ -3422,6 +3507,9 @@
        buf_pool = buf_pool_from_block(block);
        buf_pool->stat.n_page_gets++;
  
@@ -217,7 +217,7 @@ diff -ruN a/storage/innobase/buf/buf0buf.c b/storage/innobase/buf/buf0buf.c
        return(TRUE);
  }
  
-@@ -3425,6 +3513,7 @@
+@@ -3444,6 +3532,7 @@
        buf_pool_t*     buf_pool;
        ibool           success;
        ulint           fix_type;
@@ -225,7 +225,7 @@ diff -ruN a/storage/innobase/buf/buf0buf.c b/storage/innobase/buf/buf0buf.c
  
        ut_ad(mtr);
        ut_ad(mtr->state == MTR_ACTIVE);
-@@ -3511,6 +3600,11 @@
+@@ -3530,6 +3619,11 @@
  #endif
        buf_pool->stat.n_page_gets++;
  
index d70ff8f8752a4852fee3223c0ca8e8a04c4d3851..a9e653900195793960fb55d93fd96f6a7a551107 100644 (file)
@@ -13,7 +13,7 @@
 diff -ruN a/storage/innobase/buf/buf0buf.c b/storage/innobase/buf/buf0buf.c
 --- a/storage/innobase/buf/buf0buf.c   2011-02-23 19:00:48.178696354 +0900
 +++ b/storage/innobase/buf/buf0buf.c   2011-02-23 19:01:19.138826278 +0900
-@@ -4065,6 +4065,7 @@
+@@ -4084,6 +4084,7 @@
                bpage->state    = BUF_BLOCK_ZIP_PAGE;
                bpage->space    = space;
                bpage->offset   = offset;
index b731ba49597eee81cb9b99e329d0bb9e399f8849..d7f8a20f82a3394ddd0e835ac05e56a3a136db1d 100644 (file)
@@ -357,7 +357,7 @@ diff -ruN a/storage/innobase/buf/buf0buf.c b/storage/innobase/buf/buf0buf.c
        block_mutex = buf_page_get_mutex_enter(bpage);
  
        rw_lock_s_unlock(&buf_pool->page_hash_latch);
-@@ -3040,6 +3053,13 @@
+@@ -3059,6 +3072,13 @@
                return(NULL);
        }
  
@@ -371,7 +371,7 @@ diff -ruN a/storage/innobase/buf/buf0buf.c b/storage/innobase/buf/buf0buf.c
        switch (buf_block_get_state(block)) {
                buf_page_t*     bpage;
                ibool           success;
-@@ -3714,6 +3734,7 @@
+@@ -3733,6 +3753,7 @@
        bpage->newest_modification = 0;
        bpage->oldest_modification = 0;
        HASH_INVALIDATE(bpage, hash);
@@ -379,7 +379,7 @@ diff -ruN a/storage/innobase/buf/buf0buf.c b/storage/innobase/buf/buf0buf.c
  #if defined UNIV_DEBUG_FILE_ACCESSES || defined UNIV_DEBUG
        bpage->file_page_was_freed = FALSE;
  #endif /* UNIV_DEBUG_FILE_ACCESSES || UNIV_DEBUG */
-@@ -4303,6 +4324,7 @@
+@@ -4322,6 +4343,7 @@
                                (ulong) bpage->offset);
                }
  
@@ -387,7 +387,7 @@ diff -ruN a/storage/innobase/buf/buf0buf.c b/storage/innobase/buf/buf0buf.c
                /* From version 3.23.38 up we store the page checksum
                to the 4 first bytes of the page end lsn field */
  
-@@ -4344,6 +4366,23 @@
+@@ -4363,6 +4385,23 @@
                              REFMAN "forcing-innodb-recovery.html\n"
                              "InnoDB: about forcing recovery.\n", stderr);
  
@@ -411,7 +411,7 @@ diff -ruN a/storage/innobase/buf/buf0buf.c b/storage/innobase/buf/buf0buf.c
                        if (srv_force_recovery < SRV_FORCE_IGNORE_CORRUPT) {
                                fputs("InnoDB: Ending processing because of"
                                      " a corrupt database page.\n",
-@@ -4351,6 +4390,7 @@
+@@ -4370,6 +4409,7 @@
                                exit(1);
                        }
                }
@@ -419,7 +419,7 @@ diff -ruN a/storage/innobase/buf/buf0buf.c b/storage/innobase/buf/buf0buf.c
  
                if (recv_recovery_is_on()) {
                        /* Pages must be uncompressed for crash recovery. */
-@@ -4360,8 +4400,11 @@
+@@ -4379,8 +4419,11 @@
  
                if (uncompressed && !recv_no_ibuf_operations) {
                        ibuf_merge_or_delete_for_page(
index 13195009971df3ea74a3f3d4d7c401a9471247e8..7f10b0df1f96b472771972588c748a2a2a48970c 100644 (file)
@@ -8,7 +8,7 @@
 diff -ruN a/storage/innobase/buf/buf0buf.c b/storage/innobase/buf/buf0buf.c
 --- a/storage/innobase/buf/buf0buf.c   2010-12-03 17:49:11.574962867 +0900
 +++ b/storage/innobase/buf/buf0buf.c   2010-12-04 15:35:58.624514033 +0900
-@@ -4272,7 +4272,8 @@
+@@ -4291,7 +4291,8 @@
                read_space_id = mach_read_from_4(
                        frame + FIL_PAGE_ARCH_LOG_NO_OR_SPACE_ID);
  
index 57391dd2e75fe8683984e5cf699c25f53f8a7084..886717b202539bbf664847bbe899fd4a4d1df819 100644 (file)
@@ -1093,7 +1093,7 @@ diff -ruN a/storage/innobase/buf/buf0buf.c b/storage/innobase/buf/buf0buf.c
        ut_ad(!buf_pool_watch_is_sentinel(buf_pool, bpage));
  
        switch (buf_page_get_state(bpage)) {
-@@ -2355,19 +2449,19 @@
+@@ -2355,24 +2449,43 @@
        case BUF_BLOCK_MEMORY:
        case BUF_BLOCK_REMOVE_HASH:
        case BUF_BLOCK_ZIP_FREE:
@@ -1109,16 +1109,40 @@ diff -ruN a/storage/innobase/buf/buf0buf.c b/storage/innobase/buf/buf0buf.c
                goto got_block;
        case BUF_BLOCK_FILE_PAGE:
 -              block_mutex = &((buf_block_t*) bpage)->mutex;
--              mutex_enter(block_mutex);
 +              ut_a(block_mutex == &((buf_block_t*) bpage)->mutex);
++
++              /* release mutex to obey to latch-order */
++              mutex_exit(block_mutex);
++
++              /* get LRU_list_mutex for buf_LRU_free_block() */
++              mutex_enter(&buf_pool->LRU_list_mutex);
+               mutex_enter(block_mutex);
  
-               /* Discard the uncompressed page frame if possible. */
+-              /* Discard the uncompressed page frame if possible. */
 -              if (buf_LRU_free_block(bpage, FALSE) == BUF_LRU_FREED) {
-+              if (buf_LRU_free_block(bpage, FALSE, FALSE) == BUF_LRU_FREED) {
++              if (UNIV_UNLIKELY(bpage->space != space
++                                || bpage->offset != offset
++                                || !bpage->in_LRU_list
++                                || !bpage->zip.data)) {
++                      /* someone should interrupt, retry */
++                      mutex_exit(&buf_pool->LRU_list_mutex);
++                      mutex_exit(block_mutex);
++                      goto lookup;
++              }
  
++              /* Discard the uncompressed page frame if possible. */
++              if (buf_LRU_free_block(bpage, FALSE, TRUE) == BUF_LRU_FREED) {
++                      mutex_exit(&buf_pool->LRU_list_mutex);
                        mutex_exit(block_mutex);
                        goto lookup;
-@@ -2385,7 +2479,7 @@
+               }
++              mutex_exit(&buf_pool->LRU_list_mutex);
++
+               buf_block_buf_fix_inc((buf_block_t*) bpage,
+                                     __FILE__, __LINE__);
+               goto got_block;
+@@ -2385,7 +2498,7 @@
        must_read = buf_page_get_io_fix(bpage) == BUF_IO_READ;
        access_time = buf_page_is_accessed(bpage);
  
@@ -1127,7 +1151,7 @@ diff -ruN a/storage/innobase/buf/buf0buf.c b/storage/innobase/buf/buf0buf.c
  
        mutex_exit(block_mutex);
  
-@@ -2697,7 +2791,7 @@
+@@ -2697,7 +2810,7 @@
        const buf_block_t*      block)          /*!< in: pointer to block,
                                                not dereferenced */
  {
@@ -1136,7 +1160,7 @@ diff -ruN a/storage/innobase/buf/buf0buf.c b/storage/innobase/buf/buf0buf.c
  
        if (UNIV_UNLIKELY((((ulint) block) % sizeof *block) != 0)) {
                /* The pointer should be aligned. */
-@@ -2733,6 +2827,7 @@
+@@ -2733,6 +2846,7 @@
        ulint           fix_type;
        ibool           must_read;
        ulint           retries = 0;
@@ -1144,7 +1168,7 @@ diff -ruN a/storage/innobase/buf/buf0buf.c b/storage/innobase/buf/buf0buf.c
        buf_pool_t*     buf_pool = buf_pool_get(space, offset);
  
        ut_ad(mtr);
-@@ -2765,9 +2860,11 @@
+@@ -2765,9 +2879,11 @@
        fold = buf_page_address_fold(space, offset);
  loop:
        block = guess;
@@ -1157,7 +1181,7 @@ diff -ruN a/storage/innobase/buf/buf0buf.c b/storage/innobase/buf/buf0buf.c
                /* If the guess is a compressed page descriptor that
                has been allocated by buf_buddy_alloc(), it may have
                been invalidated by buf_buddy_relocate().  In that
-@@ -2776,11 +2873,15 @@
+@@ -2776,11 +2892,15 @@
                the guess may be pointing to a buffer pool chunk that
                has been released when resizing the buffer pool. */
  
@@ -1174,7 +1198,7 @@ diff -ruN a/storage/innobase/buf/buf0buf.c b/storage/innobase/buf/buf0buf.c
                        block = guess = NULL;
                } else {
                        ut_ad(!block->page.in_zip_hash);
-@@ -2789,12 +2890,19 @@
+@@ -2789,12 +2909,19 @@
        }
  
        if (block == NULL) {
@@ -1194,7 +1218,7 @@ diff -ruN a/storage/innobase/buf/buf0buf.c b/storage/innobase/buf/buf0buf.c
                block = NULL;
        }
  
-@@ -2806,12 +2914,14 @@
+@@ -2806,12 +2933,14 @@
                                space, offset, fold);
  
                        if (UNIV_LIKELY_NULL(block)) {
@@ -1211,7 +1235,7 @@ diff -ruN a/storage/innobase/buf/buf0buf.c b/storage/innobase/buf/buf0buf.c
  
                if (mode == BUF_GET_IF_IN_POOL
                    || mode == BUF_PEEK_IF_IN_POOL
-@@ -2861,7 +2971,8 @@
+@@ -2861,7 +2990,8 @@
                /* The page is being read to buffer pool,
                but we cannot wait around for the read to
                complete. */
@@ -1221,7 +1245,7 @@ diff -ruN a/storage/innobase/buf/buf0buf.c b/storage/innobase/buf/buf0buf.c
  
                return(NULL);
        }
-@@ -2871,38 +2982,49 @@
+@@ -2871,38 +3001,49 @@
                ibool           success;
  
        case BUF_BLOCK_FILE_PAGE:
@@ -1278,7 +1302,7 @@ diff -ruN a/storage/innobase/buf/buf0buf.c b/storage/innobase/buf/buf0buf.c
  
                {
                        buf_page_t*     hash_bpage;
-@@ -2915,35 +3037,47 @@
+@@ -2915,35 +3056,47 @@
                                while buf_pool->mutex was released.
                                Free the block that was allocated. */
  
@@ -1332,7 +1356,7 @@ diff -ruN a/storage/innobase/buf/buf0buf.c b/storage/innobase/buf/buf0buf.c
                buf_block_init_low(block);
                block->lock_hash_val = lock_rec_hash(space, offset);
  
-@@ -2952,7 +3086,7 @@
+@@ -2952,7 +3105,7 @@
  
                if (buf_page_get_state(&block->page)
                    == BUF_BLOCK_ZIP_PAGE) {
@@ -1341,7 +1365,7 @@ diff -ruN a/storage/innobase/buf/buf0buf.c b/storage/innobase/buf/buf0buf.c
                                       &block->page);
                        ut_ad(!block->page.in_flush_list);
                } else {
-@@ -2969,20 +3103,25 @@
+@@ -2969,20 +3122,25 @@
                /* Insert at the front of unzip_LRU list */
                buf_unzip_LRU_add_block(block, FALSE);
  
@@ -1370,7 +1394,7 @@ diff -ruN a/storage/innobase/buf/buf0buf.c b/storage/innobase/buf/buf0buf.c
  
                /* Decompress the page and apply buffered operations
                while not holding buf_pool->mutex or block->mutex. */
-@@ -2995,12 +3134,15 @@
+@@ -2995,12 +3153,15 @@
                }
  
                /* Unfix and unlatch the block. */
@@ -1389,7 +1413,7 @@ diff -ruN a/storage/innobase/buf/buf0buf.c b/storage/innobase/buf/buf0buf.c
                rw_lock_x_unlock(&block->lock);
  
                break;
-@@ -3016,7 +3158,7 @@
+@@ -3016,7 +3177,7 @@
  
        ut_ad(buf_block_get_state(block) == BUF_BLOCK_FILE_PAGE);
  
@@ -1398,7 +1422,7 @@ diff -ruN a/storage/innobase/buf/buf0buf.c b/storage/innobase/buf/buf0buf.c
  #if UNIV_WORD_SIZE == 4
        /* On 32-bit systems, there is no padding in buf_page_t.  On
        other systems, Valgrind could complain about uninitialized pad
-@@ -3029,8 +3171,8 @@
+@@ -3029,8 +3190,8 @@
                /* Try to evict the block from the buffer pool, to use the
                insert buffer (change buffer) as much as possible. */
  
@@ -1409,7 +1433,7 @@ diff -ruN a/storage/innobase/buf/buf0buf.c b/storage/innobase/buf/buf0buf.c
                        if (mode == BUF_GET_IF_IN_POOL_OR_WATCH) {
                                /* Set the watch, as it would have
                                been set if the page were not in the
-@@ -3039,6 +3181,9 @@
+@@ -3039,6 +3200,9 @@
                                        space, offset, fold);
  
                                if (UNIV_LIKELY_NULL(block)) {
@@ -1419,7 +1443,7 @@ diff -ruN a/storage/innobase/buf/buf0buf.c b/storage/innobase/buf/buf0buf.c
  
                                        /* The page entered the buffer
                                        pool for some reason. Try to
-@@ -3046,7 +3191,7 @@
+@@ -3046,7 +3210,7 @@
                                        goto got_block;
                                }
                        }
@@ -1428,7 +1452,7 @@ diff -ruN a/storage/innobase/buf/buf0buf.c b/storage/innobase/buf/buf0buf.c
                        fprintf(stderr,
                                "innodb_change_buffering_debug evict %u %u\n",
                                (unsigned) space, (unsigned) offset);
-@@ -3065,13 +3210,14 @@
+@@ -3065,13 +3229,14 @@
  
        buf_block_buf_fix_inc(block, file, line);
  
@@ -1445,7 +1469,7 @@ diff -ruN a/storage/innobase/buf/buf0buf.c b/storage/innobase/buf/buf0buf.c
  
        if (UNIV_LIKELY(mode != BUF_PEEK_IF_IN_POOL)) {
                buf_page_set_accessed_make_young(&block->page, access_time);
-@@ -3308,9 +3454,11 @@
+@@ -3308,9 +3473,11 @@
        buf_pool = buf_pool_from_block(block);
  
        if (mode == BUF_MAKE_YOUNG && buf_page_peek_if_too_old(&block->page)) {
@@ -1459,7 +1483,7 @@ diff -ruN a/storage/innobase/buf/buf0buf.c b/storage/innobase/buf/buf0buf.c
        } else if (!buf_page_is_accessed(&block->page)) {
                /* Above, we do a dirty read on purpose, to avoid
                mutex contention.  The field buf_page_t::access_time
-@@ -3318,9 +3466,11 @@
+@@ -3318,9 +3485,11 @@
                field must be protected by mutex, however. */
                ulint   time_ms = ut_time_ms();
  
@@ -1473,7 +1497,7 @@ diff -ruN a/storage/innobase/buf/buf0buf.c b/storage/innobase/buf/buf0buf.c
        }
  
        ut_ad(!ibuf_inside(mtr) || mode == BUF_KEEP_OLD);
-@@ -3387,18 +3537,21 @@
+@@ -3387,18 +3556,21 @@
        ut_ad(mtr);
        ut_ad(mtr->state == MTR_ACTIVE);
  
@@ -1498,7 +1522,7 @@ diff -ruN a/storage/innobase/buf/buf0buf.c b/storage/innobase/buf/buf0buf.c
  
  #if defined UNIV_DEBUG || defined UNIV_BUF_DEBUG
        ut_a(buf_block_get_state(block) == BUF_BLOCK_FILE_PAGE);
-@@ -3487,7 +3640,10 @@
+@@ -3487,7 +3659,10 @@
        buf_page_t*     hash_page;
        buf_pool_t*     buf_pool = buf_pool_get(space, offset);
  
@@ -1510,7 +1534,7 @@ diff -ruN a/storage/innobase/buf/buf0buf.c b/storage/innobase/buf/buf0buf.c
        ut_ad(mutex_own(&(block->mutex)));
        ut_a(buf_block_get_state(block) != BUF_BLOCK_FILE_PAGE);
  
-@@ -3516,11 +3672,14 @@
+@@ -3516,11 +3691,14 @@
        if (UNIV_LIKELY(!hash_page)) {
        } else if (buf_pool_watch_is_sentinel(buf_pool, hash_page)) {
                /* Preserve the reference count. */
@@ -1526,7 +1550,7 @@ diff -ruN a/storage/innobase/buf/buf0buf.c b/storage/innobase/buf/buf0buf.c
        } else {
                fprintf(stderr,
                        "InnoDB: Error: page %lu %lu already found"
-@@ -3530,7 +3689,8 @@
+@@ -3530,7 +3708,8 @@
                        (const void*) hash_page, (const void*) block);
  #if defined UNIV_DEBUG || defined UNIV_BUF_DEBUG
                mutex_exit(&block->mutex);
@@ -1536,7 +1560,7 @@ diff -ruN a/storage/innobase/buf/buf0buf.c b/storage/innobase/buf/buf0buf.c
                buf_print();
                buf_LRU_print();
                buf_validate();
-@@ -3613,7 +3773,9 @@
+@@ -3613,7 +3792,9 @@
  
        fold = buf_page_address_fold(space, offset);
  
@@ -1547,7 +1571,7 @@ diff -ruN a/storage/innobase/buf/buf0buf.c b/storage/innobase/buf/buf0buf.c
  
        watch_page = buf_page_hash_get_low(buf_pool, space, offset, fold);
        if (watch_page && !buf_pool_watch_is_sentinel(buf_pool, watch_page)) {
-@@ -3622,9 +3784,15 @@
+@@ -3622,9 +3803,15 @@
  err_exit:
                if (block) {
                        mutex_enter(&block->mutex);
@@ -1564,7 +1588,7 @@ diff -ruN a/storage/innobase/buf/buf0buf.c b/storage/innobase/buf/buf0buf.c
  
                bpage = NULL;
                goto func_exit;
-@@ -3647,6 +3815,8 @@
+@@ -3647,6 +3834,8 @@
  
                buf_page_init(space, offset, fold, block);
  
@@ -1573,7 +1597,7 @@ diff -ruN a/storage/innobase/buf/buf0buf.c b/storage/innobase/buf/buf0buf.c
                /* The block must be put to the LRU list, to the old blocks */
                buf_LRU_add_block(bpage, TRUE/* to old blocks */);
  
-@@ -3674,7 +3844,7 @@
+@@ -3674,7 +3863,7 @@
                        been added to buf_pool->LRU and
                        buf_pool->page_hash. */
                        mutex_exit(&block->mutex);
@@ -1582,7 +1606,7 @@ diff -ruN a/storage/innobase/buf/buf0buf.c b/storage/innobase/buf/buf0buf.c
                        mutex_enter(&block->mutex);
                        block->page.zip.data = data;
  
-@@ -3687,6 +3857,7 @@
+@@ -3687,6 +3876,7 @@
                        buf_unzip_LRU_add_block(block, TRUE);
                }
  
@@ -1590,7 +1614,7 @@ diff -ruN a/storage/innobase/buf/buf0buf.c b/storage/innobase/buf/buf0buf.c
                mutex_exit(&block->mutex);
        } else {
                /* Defer buf_buddy_alloc() until after the block has
-@@ -3698,8 +3869,8 @@
+@@ -3698,8 +3888,8 @@
                control block (bpage), in order to avoid the
                invocation of buf_buddy_relocate_block() on
                uninitialized data. */
@@ -1601,7 +1625,7 @@ diff -ruN a/storage/innobase/buf/buf0buf.c b/storage/innobase/buf/buf0buf.c
  
                /* Initialize the buf_pool pointer. */
                bpage->buf_pool_index = buf_pool_index(buf_pool);
-@@ -3719,8 +3890,11 @@
+@@ -3719,8 +3909,11 @@
                                /* The block was added by some other thread. */
                                watch_page = NULL;
                                bpage->state = BUF_BLOCK_ZIP_FREE;
@@ -1615,7 +1639,7 @@ diff -ruN a/storage/innobase/buf/buf0buf.c b/storage/innobase/buf/buf0buf.c
  
                                bpage = NULL;
                                goto func_exit;
-@@ -3764,18 +3938,24 @@
+@@ -3764,18 +3957,24 @@
                HASH_INSERT(buf_page_t, hash, buf_pool->page_hash, fold,
                            bpage);
  
@@ -1641,7 +1665,7 @@ diff -ruN a/storage/innobase/buf/buf0buf.c b/storage/innobase/buf/buf0buf.c
  
        if (mode == BUF_READ_IBUF_PAGES_ONLY) {
  
-@@ -3817,7 +3997,9 @@
+@@ -3817,7 +4016,9 @@
  
        fold = buf_page_address_fold(space, offset);
  
@@ -1652,7 +1676,7 @@ diff -ruN a/storage/innobase/buf/buf0buf.c b/storage/innobase/buf/buf0buf.c
  
        block = (buf_block_t*) buf_page_hash_get_low(
                buf_pool, space, offset, fold);
-@@ -3833,7 +4015,9 @@
+@@ -3833,7 +4034,9 @@
  #endif /* UNIV_DEBUG_FILE_ACCESSES || UNIV_DEBUG */
  
                /* Page can be found in buf_pool */
@@ -1663,7 +1687,7 @@ diff -ruN a/storage/innobase/buf/buf0buf.c b/storage/innobase/buf/buf0buf.c
  
                buf_block_free(free_block);
  
-@@ -3855,6 +4039,7 @@
+@@ -3855,6 +4058,7 @@
        mutex_enter(&block->mutex);
  
        buf_page_init(space, offset, fold, block);
@@ -1671,7 +1695,7 @@ diff -ruN a/storage/innobase/buf/buf0buf.c b/storage/innobase/buf/buf0buf.c
  
        /* The block must be put to the LRU list */
        buf_LRU_add_block(&block->page, FALSE);
-@@ -3881,7 +4066,7 @@
+@@ -3881,7 +4085,7 @@
                the reacquisition of buf_pool->mutex.  We also must
                defer this operation until after the block descriptor
                has been added to buf_pool->LRU and buf_pool->page_hash. */
@@ -1680,7 +1704,7 @@ diff -ruN a/storage/innobase/buf/buf0buf.c b/storage/innobase/buf/buf0buf.c
                mutex_enter(&block->mutex);
                block->page.zip.data = data;
  
-@@ -3899,7 +4084,8 @@
+@@ -3899,7 +4103,8 @@
  
        buf_page_set_accessed(&block->page, time_ms);
  
@@ -1690,7 +1714,7 @@ diff -ruN a/storage/innobase/buf/buf0buf.c b/storage/innobase/buf/buf0buf.c
  
        mtr_memo_push(mtr, block, MTR_MEMO_BUF_FIX);
  
-@@ -3950,6 +4136,8 @@
+@@ -3950,6 +4155,8 @@
        buf_pool_t*     buf_pool = buf_pool_from_bpage(bpage);
        const ibool     uncompressed = (buf_page_get_state(bpage)
                                        == BUF_BLOCK_FILE_PAGE);
@@ -1699,7 +1723,7 @@ diff -ruN a/storage/innobase/buf/buf0buf.c b/storage/innobase/buf/buf0buf.c
  
        ut_a(buf_page_in_file(bpage));
  
-@@ -4083,8 +4271,26 @@
+@@ -4083,8 +4290,26 @@
                }
        }
  
@@ -1727,7 +1751,7 @@ diff -ruN a/storage/innobase/buf/buf0buf.c b/storage/innobase/buf/buf0buf.c
  
  #ifdef UNIV_IBUF_COUNT_DEBUG
        if (io_type == BUF_IO_WRITE || uncompressed) {
-@@ -4107,6 +4313,7 @@
+@@ -4107,6 +4332,7 @@
                the x-latch to this OS thread: do not let this confuse you in
                debugging! */
  
@@ -1735,7 +1759,7 @@ diff -ruN a/storage/innobase/buf/buf0buf.c b/storage/innobase/buf/buf0buf.c
                ut_ad(buf_pool->n_pend_reads > 0);
                buf_pool->n_pend_reads--;
                buf_pool->stat.n_pages_read++;
-@@ -4124,6 +4331,9 @@
+@@ -4124,6 +4350,9 @@
  
                buf_flush_write_complete(bpage);
  
@@ -1745,7 +1769,7 @@ diff -ruN a/storage/innobase/buf/buf0buf.c b/storage/innobase/buf/buf0buf.c
                if (uncompressed) {
                        rw_lock_s_unlock_gen(&((buf_block_t*) bpage)->lock,
                                             BUF_IO_WRITE);
-@@ -4146,8 +4356,8 @@
+@@ -4146,8 +4375,8 @@
        }
  #endif /* UNIV_DEBUG */
  
@@ -1755,7 +1779,7 @@ diff -ruN a/storage/innobase/buf/buf0buf.c b/storage/innobase/buf/buf0buf.c
  }
  
  /*********************************************************************//**
-@@ -4164,7 +4374,9 @@
+@@ -4164,7 +4393,9 @@
  
        ut_ad(buf_pool);
  
@@ -1766,7 +1790,7 @@ diff -ruN a/storage/innobase/buf/buf0buf.c b/storage/innobase/buf/buf0buf.c
  
        chunk = buf_pool->chunks;
  
-@@ -4181,7 +4393,9 @@
+@@ -4181,7 +4412,9 @@
                }
        }
  
@@ -1777,7 +1801,7 @@ diff -ruN a/storage/innobase/buf/buf0buf.c b/storage/innobase/buf/buf0buf.c
  
        return(TRUE);
  }
-@@ -4229,7 +4443,8 @@
+@@ -4229,7 +4462,8 @@
                freed = buf_LRU_search_and_free_block(buf_pool, 100);
        }
  
@@ -1787,7 +1811,7 @@ diff -ruN a/storage/innobase/buf/buf0buf.c b/storage/innobase/buf/buf0buf.c
  
        ut_ad(UT_LIST_GET_LEN(buf_pool->LRU) == 0);
        ut_ad(UT_LIST_GET_LEN(buf_pool->unzip_LRU) == 0);
-@@ -4242,7 +4457,8 @@
+@@ -4242,7 +4476,8 @@
        memset(&buf_pool->stat, 0x00, sizeof(buf_pool->stat));
        buf_refresh_io_stats(buf_pool);
  
@@ -1797,7 +1821,7 @@ diff -ruN a/storage/innobase/buf/buf0buf.c b/storage/innobase/buf/buf0buf.c
  }
  
  /*********************************************************************//**
-@@ -4284,7 +4500,10 @@
+@@ -4284,7 +4519,10 @@
  
        ut_ad(buf_pool);
  
@@ -1809,7 +1833,7 @@ diff -ruN a/storage/innobase/buf/buf0buf.c b/storage/innobase/buf/buf0buf.c
  
        chunk = buf_pool->chunks;
  
-@@ -4379,7 +4598,7 @@
+@@ -4379,7 +4617,7 @@
        /* Check clean compressed-only blocks. */
  
        for (b = UT_LIST_GET_FIRST(buf_pool->zip_clean); b;
@@ -1818,7 +1842,7 @@ diff -ruN a/storage/innobase/buf/buf0buf.c b/storage/innobase/buf/buf0buf.c
                ut_a(buf_page_get_state(b) == BUF_BLOCK_ZIP_PAGE);
                switch (buf_page_get_io_fix(b)) {
                case BUF_IO_NONE:
-@@ -4410,7 +4629,7 @@
+@@ -4410,7 +4648,7 @@
  
        buf_flush_list_mutex_enter(buf_pool);
        for (b = UT_LIST_GET_FIRST(buf_pool->flush_list); b;
@@ -1827,7 +1851,7 @@ diff -ruN a/storage/innobase/buf/buf0buf.c b/storage/innobase/buf/buf0buf.c
                ut_ad(b->in_flush_list);
                ut_a(b->oldest_modification);
                n_flush++;
-@@ -4469,6 +4688,8 @@
+@@ -4469,6 +4707,8 @@
        }
  
        ut_a(UT_LIST_GET_LEN(buf_pool->LRU) == n_lru);
@@ -1836,7 +1860,7 @@ diff -ruN a/storage/innobase/buf/buf0buf.c b/storage/innobase/buf/buf0buf.c
        if (UT_LIST_GET_LEN(buf_pool->free) != n_free) {
                fprintf(stderr, "Free list len %lu, free blocks %lu\n",
                        (ulong) UT_LIST_GET_LEN(buf_pool->free),
-@@ -4479,8 +4700,11 @@
+@@ -4479,8 +4719,11 @@
        ut_a(buf_pool->n_flush[BUF_FLUSH_SINGLE_PAGE] == n_single_flush);
        ut_a(buf_pool->n_flush[BUF_FLUSH_LIST] == n_list_flush);
        ut_a(buf_pool->n_flush[BUF_FLUSH_LRU] == n_lru_flush);
@@ -1849,7 +1873,7 @@ diff -ruN a/storage/innobase/buf/buf0buf.c b/storage/innobase/buf/buf0buf.c
  
        ut_a(buf_LRU_validate());
        ut_a(buf_flush_validate(buf_pool));
-@@ -4536,7 +4760,9 @@
+@@ -4536,7 +4779,9 @@
        index_ids = mem_alloc(size * sizeof *index_ids);
        counts = mem_alloc(sizeof(ulint) * size);
  
@@ -1860,7 +1884,7 @@ diff -ruN a/storage/innobase/buf/buf0buf.c b/storage/innobase/buf/buf0buf.c
        buf_flush_list_mutex_enter(buf_pool);
  
        fprintf(stderr,
-@@ -4605,7 +4831,9 @@
+@@ -4605,7 +4850,9 @@
                }
        }
  
@@ -1871,7 +1895,7 @@ diff -ruN a/storage/innobase/buf/buf0buf.c b/storage/innobase/buf/buf0buf.c
  
        for (i = 0; i < n_found; i++) {
                index = dict_index_get_if_in_cache(index_ids[i]);
-@@ -4662,7 +4890,7 @@
+@@ -4662,7 +4909,7 @@
        buf_chunk_t*    chunk;
        ulint           fixed_pages_number = 0;
  
@@ -1880,7 +1904,7 @@ diff -ruN a/storage/innobase/buf/buf0buf.c b/storage/innobase/buf/buf0buf.c
  
        chunk = buf_pool->chunks;
  
-@@ -4696,7 +4924,7 @@
+@@ -4696,7 +4943,7 @@
        /* Traverse the lists of clean and dirty compressed-only blocks. */
  
        for (b = UT_LIST_GET_FIRST(buf_pool->zip_clean); b;
@@ -1889,7 +1913,7 @@ diff -ruN a/storage/innobase/buf/buf0buf.c b/storage/innobase/buf/buf0buf.c
                ut_a(buf_page_get_state(b) == BUF_BLOCK_ZIP_PAGE);
                ut_a(buf_page_get_io_fix(b) != BUF_IO_WRITE);
  
-@@ -4708,7 +4936,7 @@
+@@ -4708,7 +4955,7 @@
  
        buf_flush_list_mutex_enter(buf_pool);
        for (b = UT_LIST_GET_FIRST(buf_pool->flush_list); b;
@@ -1898,7 +1922,7 @@ diff -ruN a/storage/innobase/buf/buf0buf.c b/storage/innobase/buf/buf0buf.c
                ut_ad(b->in_flush_list);
  
                switch (buf_page_get_state(b)) {
-@@ -4734,7 +4962,7 @@
+@@ -4734,7 +4981,7 @@
  
        buf_flush_list_mutex_exit(buf_pool);
        mutex_exit(&buf_pool->zip_mutex);
@@ -1907,7 +1931,7 @@ diff -ruN a/storage/innobase/buf/buf0buf.c b/storage/innobase/buf/buf0buf.c
  
        return(fixed_pages_number);
  }
-@@ -4890,6 +5118,8 @@
+@@ -4890,6 +5137,8 @@
        /* Find appropriate pool_info to store stats for this buffer pool */
        pool_info = &all_pool_info[pool_id];
  
@@ -1916,7 +1940,7 @@ diff -ruN a/storage/innobase/buf/buf0buf.c b/storage/innobase/buf/buf0buf.c
        buf_pool_mutex_enter(buf_pool);
        buf_flush_list_mutex_enter(buf_pool);
  
-@@ -5000,6 +5230,8 @@
+@@ -5000,6 +5249,8 @@
        pool_info->unzip_cur = buf_LRU_stat_cur.unzip;
  
        buf_refresh_io_stats(buf_pool);
@@ -1925,7 +1949,7 @@ diff -ruN a/storage/innobase/buf/buf0buf.c b/storage/innobase/buf/buf0buf.c
        buf_pool_mutex_exit(buf_pool);
  }
  
-@@ -5241,11 +5473,13 @@
+@@ -5241,11 +5492,13 @@
  {
        ulint   len;
  
index 9ba40e7c7901c0143688cdf46f31782bd6670650..664a0b54671b9be137932b8bd7199c7ffdb97de8 100644 (file)
@@ -36,7 +36,7 @@ Summary(uk.UTF-8):    MySQL - швидкий SQL-сервер
 Summary(zh_CN.UTF-8):  MySQL数据库服务器
 Name:          mysql
 Version:       5.5.13
-Release:       1
+Release:       2
 License:       GPL + MySQL FLOSS Exception
 Group:         Applications/Databases
 # Source0Download: http://dev.mysql.com/downloads/mysql/5.5.html#downloads
This page took 0.121436 seconds and 4 git commands to generate.