Merge lp:~sergei.glushchenko/percona-xtrabackup/2.2-xb-bug1391216 into lp:percona-xtrabackup/2.2

Proposed by Sergei Glushchenko
Status: Merged
Approved by: Alexey Kopytov
Approved revision: no longer in the source branch.
Merged at revision: 5048
Proposed branch: lp:~sergei.glushchenko/percona-xtrabackup/2.2-xb-bug1391216
Merge into: lp:percona-xtrabackup/2.2
Diff against target: 29 lines (+4/-4)
2 files modified
storage/innobase/fil/fil0fil.cc (+2/-2)
storage/innobase/os/os0file.cc (+2/-2)
To merge this branch: bzr merge lp:~sergei.glushchenko/percona-xtrabackup/2.2-xb-bug1391216
Reviewer Review Type Date Requested Status
Alexey Kopytov (community) Approve
Review via email: mp+243266@code.launchpad.net

Description of the change

    Bug 1391216: Xtrabackup 2.2.5 fails with non-default innodb_log_block_size in 5.6.19

    Port fix for Percona Server bug 1114612 to XtraBackup.

    Original commit message:

    Fix bug 1114612 (Failing assertion: n % srv_log_block_size == 0 in
    file os0file.c line 4269).

    The assertion happens because InnoDB I/O and AIO routines assume that
    all I/O is done in log block size blocks. This works OK with the
    default log block size of 512, but is likely to assert with large
    innodb_log_block_size values.

    Fix by asserting that all I/O is done in the minimum allowed log block
    size blocks, that is, 512 bytes.

http://jenkins.percona.com/view/PXB%202.2/job/percona-xtrabackup-2.2-param/254/

Note: I could not reproduce the crash, the fix is what seems logical to do.

To post a comment you must log in.
Revision history for this message
Alexey Kopytov (akopytov) :
review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'storage/innobase/fil/fil0fil.cc'
2--- storage/innobase/fil/fil0fil.cc 2014-09-15 08:52:36 +0000
3+++ storage/innobase/fil/fil0fil.cc 2014-12-01 10:25:44 +0000
4@@ -5651,8 +5651,8 @@
5
6 /* Do aio */
7
8- ut_a(byte_offset % OS_FILE_LOG_BLOCK_SIZE == 0);
9- ut_a((len % OS_FILE_LOG_BLOCK_SIZE) == 0);
10+ ut_a(byte_offset % OS_MIN_LOG_BLOCK_SIZE == 0);
11+ ut_a((len % OS_MIN_LOG_BLOCK_SIZE) == 0);
12
13 #ifdef UNIV_HOTBACKUP
14 /* In mysqlbackup do normal i/o, not aio */
15
16=== modified file 'storage/innobase/os/os0file.cc'
17--- storage/innobase/os/os0file.cc 2014-10-16 17:32:22 +0000
18+++ storage/innobase/os/os0file.cc 2014-12-01 10:25:44 +0000
19@@ -4521,8 +4521,8 @@
20 ut_ad(file);
21 ut_ad(buf);
22 ut_ad(n > 0);
23- ut_ad(n % OS_FILE_LOG_BLOCK_SIZE == 0);
24- ut_ad(offset % OS_FILE_LOG_BLOCK_SIZE == 0);
25+ ut_ad(n % OS_MIN_LOG_BLOCK_SIZE == 0);
26+ ut_ad(offset % OS_MIN_LOG_BLOCK_SIZE == 0);
27 ut_ad(os_aio_validate_skip());
28 #ifdef WIN_ASYNC_IO
29 ut_ad((n & 0xFFFFFFFFUL) == n);

Subscribers

People subscribed via source and target branches