Merge lp:~percona-dev/percona-server/release-5.1.49-12-fix_bug569275 into lp:percona-server/release-5.1.49-12

Proposed by Yasufumi Kinoshita
Status: Merged
Approved by: Vadim Tkachenko
Approved revision: no longer in the source branch.
Merged at revision: 103
Proposed branch: lp:~percona-dev/percona-server/release-5.1.49-12-fix_bug569275
Merge into: lp:percona-server/release-5.1.49-12
Diff against target: 154 lines (+27/-15)
2 files modified
innodb_buffer_pool_shm.patch (+7/-7)
innodb_pass_corrupt_table.patch (+20/-8)
To merge this branch: bzr merge lp:~percona-dev/percona-server/release-5.1.49-12-fix_bug569275
Reviewer Review Type Date Requested Status
Percona developers Pending
Review via email: mp+31263@code.launchpad.net
To post a comment you must log in.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'innodb_buffer_pool_shm.patch'
--- innodb_buffer_pool_shm.patch 2010-07-26 16:29:05 +0000
+++ innodb_buffer_pool_shm.patch 2010-07-29 11:08:43 +0000
@@ -382,7 +382,7 @@
382 382
383 return(chunk);383 return(chunk);
384 }384 }
385@@ -1009,6 +1319,8 @@385@@ -1014,6 +1324,8 @@
386 UNIV_MEM_UNDESC(block);386 UNIV_MEM_UNDESC(block);
387 }387 }
388 388
@@ -391,7 +391,7 @@
391 os_mem_free_large(chunk->mem, chunk->mem_size);391 os_mem_free_large(chunk->mem, chunk->mem_size);
392 }392 }
393 393
394@@ -1058,7 +1370,10 @@394@@ -1063,7 +1375,10 @@
395 srv_buf_pool_curr_size = buf_pool->curr_size * UNIV_PAGE_SIZE;395 srv_buf_pool_curr_size = buf_pool->curr_size * UNIV_PAGE_SIZE;
396 396
397 buf_pool->page_hash = hash_create(2 * buf_pool->curr_size);397 buf_pool->page_hash = hash_create(2 * buf_pool->curr_size);
@@ -402,7 +402,7 @@
402 402
403 buf_pool->last_printout_time = time(NULL);403 buf_pool->last_printout_time = time(NULL);
404 404
405@@ -1073,6 +1388,86 @@405@@ -1078,6 +1393,86 @@
406 --------------------------- */406 --------------------------- */
407 /* All fields are initialized by mem_zalloc(). */407 /* All fields are initialized by mem_zalloc(). */
408 408
@@ -489,7 +489,7 @@
489 mutex_exit(&LRU_list_mutex);489 mutex_exit(&LRU_list_mutex);
490 rw_lock_x_unlock(&page_hash_latch);490 rw_lock_x_unlock(&page_hash_latch);
491 buf_pool_mutex_exit();491 buf_pool_mutex_exit();
492@@ -1097,6 +1492,30 @@492@@ -1102,6 +1497,30 @@
493 buf_chunk_t* chunk;493 buf_chunk_t* chunk;
494 buf_chunk_t* chunks;494 buf_chunk_t* chunks;
495 495
@@ -520,7 +520,7 @@
520 chunks = buf_pool->chunks;520 chunks = buf_pool->chunks;
521 chunk = chunks + buf_pool->n_chunks;521 chunk = chunks + buf_pool->n_chunks;
522 522
523@@ -1105,10 +1524,13 @@523@@ -1110,10 +1529,13 @@
524 would fail at shutdown. */524 would fail at shutdown. */
525 os_mem_free_large(chunk->mem, chunk->mem_size);525 os_mem_free_large(chunk->mem, chunk->mem_size);
526 }526 }
@@ -534,7 +534,7 @@
534 mem_free(buf_pool);534 mem_free(buf_pool);
535 buf_pool = NULL;535 buf_pool = NULL;
536 }536 }
537@@ -1303,6 +1725,11 @@537@@ -1308,6 +1730,11 @@
538 //buf_pool_mutex_enter();538 //buf_pool_mutex_enter();
539 mutex_enter(&LRU_list_mutex);539 mutex_enter(&LRU_list_mutex);
540 540
@@ -546,7 +546,7 @@
546 shrink_again:546 shrink_again:
547 if (buf_pool->n_chunks <= 1) {547 if (buf_pool->n_chunks <= 1) {
548 548
549@@ -1546,6 +1973,11 @@549@@ -1551,6 +1978,11 @@
550 buf_pool_resize(void)550 buf_pool_resize(void)
551 /*=================*/551 /*=================*/
552 {552 {
553553
=== modified file 'innodb_pass_corrupt_table.patch'
--- innodb_pass_corrupt_table.patch 2010-07-26 16:29:05 +0000
+++ innodb_pass_corrupt_table.patch 2010-07-29 11:08:43 +0000
@@ -321,7 +321,19 @@
321 321
322 /* prototypes for new functions added to ha_innodb.cc */322 /* prototypes for new functions added to ha_innodb.cc */
323 trx_t* innobase_get_trx();323 trx_t* innobase_get_trx();
324@@ -1803,6 +1804,14 @@324@@ -895,6 +896,11 @@
325 ready = buf_flush_ready_for_replace(&block->page);
326 mutex_exit(&block->mutex);
327
328+ if (block->page.is_corrupt) {
329+ /* corrupt page may remain, it can be skipped */
330+ break;
331+ }
332+
333 if (!ready) {
334
335 return(block);
336@@ -1803,6 +1809,14 @@
325 return(NULL);337 return(NULL);
326 }338 }
327 339
@@ -336,7 +348,7 @@
336 block_mutex = buf_page_get_mutex_enter(bpage);348 block_mutex = buf_page_get_mutex_enter(bpage);
337 349
338 rw_lock_s_unlock(&page_hash_latch);350 rw_lock_s_unlock(&page_hash_latch);
339@@ -2264,6 +2273,14 @@351@@ -2264,6 +2278,14 @@
340 return(NULL);352 return(NULL);
341 }353 }
342 354
@@ -351,7 +363,7 @@
351 switch (buf_block_get_state(block)) {363 switch (buf_block_get_state(block)) {
352 buf_page_t* bpage;364 buf_page_t* bpage;
353 ibool success;365 ibool success;
354@@ -2885,6 +2902,7 @@366@@ -2885,6 +2907,7 @@
355 bpage->newest_modification = 0;367 bpage->newest_modification = 0;
356 bpage->oldest_modification = 0;368 bpage->oldest_modification = 0;
357 HASH_INVALIDATE(bpage, hash);369 HASH_INVALIDATE(bpage, hash);
@@ -359,7 +371,7 @@
359 #ifdef UNIV_DEBUG_FILE_ACCESSES371 #ifdef UNIV_DEBUG_FILE_ACCESSES
360 bpage->file_page_was_freed = FALSE;372 bpage->file_page_was_freed = FALSE;
361 #endif /* UNIV_DEBUG_FILE_ACCESSES */373 #endif /* UNIV_DEBUG_FILE_ACCESSES */
362@@ -3341,7 +3359,8 @@374@@ -3341,7 +3364,8 @@
363 void375 void
364 buf_page_io_complete(376 buf_page_io_complete(
365 /*=================*/377 /*=================*/
@@ -369,7 +381,7 @@
369 {381 {
370 enum buf_io_fix io_type;382 enum buf_io_fix io_type;
371 const ibool uncompressed = (buf_page_get_state(bpage)383 const ibool uncompressed = (buf_page_get_state(bpage)
372@@ -3419,6 +3438,7 @@384@@ -3419,6 +3443,7 @@
373 (ulong) bpage->offset);385 (ulong) bpage->offset);
374 }386 }
375 387
@@ -377,7 +389,7 @@
377 /* From version 3.23.38 up we store the page checksum389 /* From version 3.23.38 up we store the page checksum
378 to the 4 first bytes of the page end lsn field */390 to the 4 first bytes of the page end lsn field */
379 391
380@@ -3460,6 +3480,19 @@392@@ -3460,6 +3485,19 @@
381 REFMAN "forcing-recovery.html\n"393 REFMAN "forcing-recovery.html\n"
382 "InnoDB: about forcing recovery.\n", stderr);394 "InnoDB: about forcing recovery.\n", stderr);
383 395
@@ -397,7 +409,7 @@
397 if (srv_force_recovery < SRV_FORCE_IGNORE_CORRUPT) {409 if (srv_force_recovery < SRV_FORCE_IGNORE_CORRUPT) {
398 fputs("InnoDB: Ending processing because of"410 fputs("InnoDB: Ending processing because of"
399 " a corrupt database page.\n",411 " a corrupt database page.\n",
400@@ -3467,6 +3500,7 @@412@@ -3467,6 +3505,7 @@
401 exit(1);413 exit(1);
402 }414 }
403 }415 }
@@ -405,7 +417,7 @@
405 417
406 if (recv_recovery_is_on()) {418 if (recv_recovery_is_on()) {
407 /* Pages must be uncompressed for crash recovery. */419 /* Pages must be uncompressed for crash recovery. */
408@@ -3476,8 +3510,11 @@420@@ -3476,8 +3515,11 @@
409 421
410 if (uncompressed && !recv_no_ibuf_operations) {422 if (uncompressed && !recv_no_ibuf_operations) {
411 ibuf_merge_or_delete_for_page(423 ibuf_merge_or_delete_for_page(

Subscribers

No one subscribed via source and target branches