summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarko Mäkelä <marko.makela@mariadb.com>2019-11-11 13:43:24 +0200
committerMarko Mäkelä <marko.makela@mariadb.com>2019-11-11 14:14:26 +0200
commitfc2ca2be4e4f1dd2cfa651747420ea9e2772d172 (patch)
tree5a4e1dfb0adf1155873dd44eeb5b85c434d96b65
parent98e1d603bfa608094dedf50f7e35f3a4c75ba038 (diff)
downloadmariadb-git-fc2ca2be4e4f1dd2cfa651747420ea9e2772d172.tar.gz
MDEV-21024: Clean up page allocation
fsp_alloc_seg_inode_page(): Ever since commit 3926673ce7149aa223103126b6aeac819b10fab5 all newly allocated pages are zero-initialized. Assert that this is the case for the FSEG_ID fields.
-rw-r--r--storage/innobase/fsp/fsp0fsp.cc20
1 files changed, 8 insertions, 12 deletions
diff --git a/storage/innobase/fsp/fsp0fsp.cc b/storage/innobase/fsp/fsp0fsp.cc
index a3715c19916..2297ac861ec 100644
--- a/storage/innobase/fsp/fsp0fsp.cc
+++ b/storage/innobase/fsp/fsp0fsp.cc
@@ -1681,9 +1681,7 @@ fsp_alloc_seg_inode_page(
fsp_header_t* space_header,
mtr_t* mtr)
{
- fseg_inode_t* inode;
buf_block_t* block;
- page_t* page;
ut_ad(page_offset(space_header) == FSP_HEADER_OFFSET);
ut_ad(page_get_space_id(page_align(space_header)) == space->id);
@@ -1701,22 +1699,20 @@ fsp_alloc_seg_inode_page(
buf_block_dbg_add_level(block, SYNC_FSP_PAGE);
ut_ad(rw_lock_get_sx_lock_count(&block->lock) == 1);
- page = buf_block_get_frame(block);
-
- mlog_write_ulint(page + FIL_PAGE_TYPE, FIL_PAGE_INODE,
+ mlog_write_ulint(block->frame + FIL_PAGE_TYPE, FIL_PAGE_INODE,
MLOG_2BYTES, mtr);
- for (ulint i = 0; i < FSP_SEG_INODES_PER_PAGE(page_size); i++) {
-
- inode = fsp_seg_inode_page_get_nth_inode(
- page, i, page_size, mtr);
-
- mlog_write_ull(inode + FSEG_ID, 0, mtr);
+#ifdef UNIV_DEBUG
+ const byte* inode = FSEG_ID + FSEG_ARR_OFFSET + block->frame;
+ for (ulint i = FSP_SEG_INODES_PER_PAGE(page_size); i--;
+ inode += FSEG_INODE_SIZE) {
+ ut_ad(!mach_read_from_8(inode));
}
+#endif
flst_add_last(
space_header + FSP_SEG_INODES_FREE,
- page + FSEG_INODE_PAGE_NODE, mtr);
+ block->frame + FSEG_INODE_PAGE_NODE, mtr);
return(true);
}