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
1=== modified file 'innodb_buffer_pool_shm.patch'
2--- innodb_buffer_pool_shm.patch 2010-07-26 16:29:05 +0000
3+++ innodb_buffer_pool_shm.patch 2010-07-29 11:08:43 +0000
4@@ -382,7 +382,7 @@
5
6 return(chunk);
7 }
8-@@ -1009,6 +1319,8 @@
9+@@ -1014,6 +1324,8 @@
10 UNIV_MEM_UNDESC(block);
11 }
12
13@@ -391,7 +391,7 @@
14 os_mem_free_large(chunk->mem, chunk->mem_size);
15 }
16
17-@@ -1058,7 +1370,10 @@
18+@@ -1063,7 +1375,10 @@
19 srv_buf_pool_curr_size = buf_pool->curr_size * UNIV_PAGE_SIZE;
20
21 buf_pool->page_hash = hash_create(2 * buf_pool->curr_size);
22@@ -402,7 +402,7 @@
23
24 buf_pool->last_printout_time = time(NULL);
25
26-@@ -1073,6 +1388,86 @@
27+@@ -1078,6 +1393,86 @@
28 --------------------------- */
29 /* All fields are initialized by mem_zalloc(). */
30
31@@ -489,7 +489,7 @@
32 mutex_exit(&LRU_list_mutex);
33 rw_lock_x_unlock(&page_hash_latch);
34 buf_pool_mutex_exit();
35-@@ -1097,6 +1492,30 @@
36+@@ -1102,6 +1497,30 @@
37 buf_chunk_t* chunk;
38 buf_chunk_t* chunks;
39
40@@ -520,7 +520,7 @@
41 chunks = buf_pool->chunks;
42 chunk = chunks + buf_pool->n_chunks;
43
44-@@ -1105,10 +1524,13 @@
45+@@ -1110,10 +1529,13 @@
46 would fail at shutdown. */
47 os_mem_free_large(chunk->mem, chunk->mem_size);
48 }
49@@ -534,7 +534,7 @@
50 mem_free(buf_pool);
51 buf_pool = NULL;
52 }
53-@@ -1303,6 +1725,11 @@
54+@@ -1308,6 +1730,11 @@
55 //buf_pool_mutex_enter();
56 mutex_enter(&LRU_list_mutex);
57
58@@ -546,7 +546,7 @@
59 shrink_again:
60 if (buf_pool->n_chunks <= 1) {
61
62-@@ -1546,6 +1973,11 @@
63+@@ -1551,6 +1978,11 @@
64 buf_pool_resize(void)
65 /*=================*/
66 {
67
68=== modified file 'innodb_pass_corrupt_table.patch'
69--- innodb_pass_corrupt_table.patch 2010-07-26 16:29:05 +0000
70+++ innodb_pass_corrupt_table.patch 2010-07-29 11:08:43 +0000
71@@ -321,7 +321,19 @@
72
73 /* prototypes for new functions added to ha_innodb.cc */
74 trx_t* innobase_get_trx();
75-@@ -1803,6 +1804,14 @@
76+@@ -895,6 +896,11 @@
77+ ready = buf_flush_ready_for_replace(&block->page);
78+ mutex_exit(&block->mutex);
79+
80++ if (block->page.is_corrupt) {
81++ /* corrupt page may remain, it can be skipped */
82++ break;
83++ }
84++
85+ if (!ready) {
86+
87+ return(block);
88+@@ -1803,6 +1809,14 @@
89 return(NULL);
90 }
91
92@@ -336,7 +348,7 @@
93 block_mutex = buf_page_get_mutex_enter(bpage);
94
95 rw_lock_s_unlock(&page_hash_latch);
96-@@ -2264,6 +2273,14 @@
97+@@ -2264,6 +2278,14 @@
98 return(NULL);
99 }
100
101@@ -351,7 +363,7 @@
102 switch (buf_block_get_state(block)) {
103 buf_page_t* bpage;
104 ibool success;
105-@@ -2885,6 +2902,7 @@
106+@@ -2885,6 +2907,7 @@
107 bpage->newest_modification = 0;
108 bpage->oldest_modification = 0;
109 HASH_INVALIDATE(bpage, hash);
110@@ -359,7 +371,7 @@
111 #ifdef UNIV_DEBUG_FILE_ACCESSES
112 bpage->file_page_was_freed = FALSE;
113 #endif /* UNIV_DEBUG_FILE_ACCESSES */
114-@@ -3341,7 +3359,8 @@
115+@@ -3341,7 +3364,8 @@
116 void
117 buf_page_io_complete(
118 /*=================*/
119@@ -369,7 +381,7 @@
120 {
121 enum buf_io_fix io_type;
122 const ibool uncompressed = (buf_page_get_state(bpage)
123-@@ -3419,6 +3438,7 @@
124+@@ -3419,6 +3443,7 @@
125 (ulong) bpage->offset);
126 }
127
128@@ -377,7 +389,7 @@
129 /* From version 3.23.38 up we store the page checksum
130 to the 4 first bytes of the page end lsn field */
131
132-@@ -3460,6 +3480,19 @@
133+@@ -3460,6 +3485,19 @@
134 REFMAN "forcing-recovery.html\n"
135 "InnoDB: about forcing recovery.\n", stderr);
136
137@@ -397,7 +409,7 @@
138 if (srv_force_recovery < SRV_FORCE_IGNORE_CORRUPT) {
139 fputs("InnoDB: Ending processing because of"
140 " a corrupt database page.\n",
141-@@ -3467,6 +3500,7 @@
142+@@ -3467,6 +3505,7 @@
143 exit(1);
144 }
145 }
146@@ -405,7 +417,7 @@
147
148 if (recv_recovery_is_on()) {
149 /* Pages must be uncompressed for crash recovery. */
150-@@ -3476,8 +3510,11 @@
151+@@ -3476,8 +3515,11 @@
152
153 if (uncompressed && !recv_no_ibuf_operations) {
154 ibuf_merge_or_delete_for_page(

Subscribers

No one subscribed via source and target branches