Skip to content

Commit

Permalink
MDEV-20813: Remove the buf_flush_init_for_writing() assertion
Browse files Browse the repository at this point in the history
Old InnoDB/XtraDB versions only initialized FIL_PAGE_TYPE for
B-tree pages (to FIL_PAGE_INDEX), and left it uninitialized
(possibly containing FIL_PAGE_INDEX) for others. In MySQL
or MariaDB 5.5, the field is initialized on almost all pages,
but still not all of them.

In MariaDB 10.2 and later, buf_flush_init_for_writing() would
initialize the FIL_PAGE_TYPE on such old pages, but only after
passing the debug assertion that we are now removing from 10.1.
There, we will be able to modify fil_crypt_rotate_page() so
that it will skip the key rotation for pages that contain 0
in FIL_PAGE_TYPE.

In MariaDB 10.1, there is no logic that would initialize
FIL_PAGE_TYPE on data pages in old data files after an update.
So, encryption key rotation may routinely cause page flushes
on pages that contain 0 in FIL_PAGE_TYPE.
  • Loading branch information
dr-m committed Oct 14, 2019
1 parent 2920377 commit ae702d7
Show file tree
Hide file tree
Showing 2 changed files with 0 additions and 2 deletions.
1 change: 0 additions & 1 deletion storage/innobase/buf/buf0flu.cc
Original file line number Diff line number Diff line change
Expand Up @@ -745,7 +745,6 @@ buf_flush_init_for_writing(
ib_uint32_t checksum = 0 /* silence bogus gcc warning */;

ut_ad(page);
ut_ad(!newest_lsn || fil_page_get_type(page));

if (page_zip_) {
page_zip_des_t* page_zip;
Expand Down
1 change: 0 additions & 1 deletion storage/xtradb/buf/buf0flu.cc
Original file line number Diff line number Diff line change
Expand Up @@ -787,7 +787,6 @@ buf_flush_init_for_writing(
ib_uint32_t checksum = 0 /* silence bogus gcc warning */;

ut_ad(page);
ut_ad(!newest_lsn || fil_page_get_type(page));

if (page_zip_) {
page_zip_des_t* page_zip;
Expand Down

0 comments on commit ae702d7

Please sign in to comment.