~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to xtrabackup.c

fix bug498660

Show diffs side-by-side

added added

removed removed

Lines of Context:
2143
2143
                        if (buf_page_is_corrupted(page + chunk_offset, zip_size))
2144
2144
#endif
2145
2145
                        {
2146
 
                                retry_count--;
2147
 
                                if (retry_count == 0) {
2148
 
                                        fprintf(stderr, "xtrabackup: Error: 10 retries resulted in fail. This file seems to be corrupted.\n");
2149
 
                                        goto error;
 
2146
                                if (node->space->id == 0
 
2147
                                    && ((offset + (IB_INT64)chunk_offset) >> page_size_shift)
 
2148
                                       >= FSP_EXTENT_SIZE
 
2149
                                    && ((offset + (IB_INT64)chunk_offset) >> page_size_shift)
 
2150
                                       < FSP_EXTENT_SIZE * 3) {
 
2151
                                        /* double write buffer may have old data in the end
 
2152
                                           or it may contain the other format page like COMPRESSED.
 
2153
                                           So, we can pass the check of double write buffer.*/
 
2154
                                        ut_a(page_size == UNIV_PAGE_SIZE);
 
2155
                                        fprintf(stderr, "xtrabackup: Page %lu seems double write buffer. passing the check.\n",
 
2156
                                                (ulint)((offset + (IB_INT64)chunk_offset) >> page_size_shift));
 
2157
                                } else {
 
2158
                                        retry_count--;
 
2159
                                        if (retry_count == 0) {
 
2160
                                                fprintf(stderr, "xtrabackup: Error: 10 retries resulted in fail. This file seems to be corrupted.\n");
 
2161
                                                goto error;
 
2162
                                        }
 
2163
                                        fprintf(stderr, "xtrabackup: Database page corruption detected at page %lu. retrying...\n",
 
2164
                                                (ulint)((offset + (IB_INT64)chunk_offset) >> page_size_shift));
 
2165
                                        goto read_retry;
2150
2166
                                }
2151
 
                                fprintf(stderr, "xtrabackup: Database page corruption detected at page %lu. retrying...\n",
2152
 
                                        (ulint)((offset + (IB_INT64)chunk_offset) >> page_size_shift));
2153
 
                                goto read_retry;
2154
2167
                        }
2155
2168
                }
2156
2169