diff options
author | Marko Mäkelä <marko.makela@mariadb.com> | 2019-10-08 17:03:45 +0300 |
---|---|---|
committer | Marko Mäkelä <marko.makela@mariadb.com> | 2019-10-08 17:03:45 +0300 |
commit | 81f603980d5eddde2cc3ed7f556f9f0959b0884c (patch) | |
tree | 588589791f33bb0b46acc251dfb1378ee19f0155 | |
parent | d653b4597c072e22bd89eb030fce6d0cc195c03b (diff) | |
download | mariadb-git-bb-10.5-MDEV-19514.tar.gz |
Try to catch writes of all-zero pagesbb-10.5-MDEV-19514
buf_flush_init_for_writing(): Assert that FIL_PAGE_TYPE is set
buf_dblwr_create(): Ensure that FIL_PAGE_TYPE on all pages
will be initialized. Reset buf_dblwr_being_created at the end.
-rw-r--r-- | storage/innobase/buf/buf0dblwr.cc | 3 | ||||
-rw-r--r-- | storage/innobase/buf/buf0flu.cc | 1 |
2 files changed, 4 insertions, 0 deletions
diff --git a/storage/innobase/buf/buf0dblwr.cc b/storage/innobase/buf/buf0dblwr.cc index 4c83e62dfe3..8b69bd5e9d6 100644 --- a/storage/innobase/buf/buf0dblwr.cc +++ b/storage/innobase/buf/buf0dblwr.cc @@ -264,6 +264,8 @@ too_small: ut_ad(rw_lock_get_x_lock_count(&new_block->lock) == 1); page_no = new_block->page.id.page_no(); + mlog_write_ulint(FIL_PAGE_TYPE + new_block->frame, + FIL_PAGE_TYPE_SYS, MLOG_2BYTES, &mtr); if (i == FSP_EXTENT_SIZE / 2) { ut_a(page_no == FSP_EXTENT_SIZE); @@ -326,6 +328,7 @@ too_small: /* Flush the modified pages to disk and make a checkpoint */ log_make_checkpoint_at(LSN_MAX); + buf_dblwr_being_created = FALSE; /* Remove doublewrite pages from LRU */ buf_pool_invalidate(); diff --git a/storage/innobase/buf/buf0flu.cc b/storage/innobase/buf/buf0flu.cc index 658d023c9c7..5295cec44d3 100644 --- a/storage/innobase/buf/buf0flu.cc +++ b/storage/innobase/buf/buf0flu.cc @@ -789,6 +789,7 @@ buf_flush_init_for_writing( ut_ad(block == NULL || page_zip_ == NULL || &block->page.zip == page_zip_); ut_ad(page); + ut_ad(!block || fil_page_get_type(block->frame)); if (page_zip_) { page_zip_des_t* page_zip; |