From e52dd13c2e6c870038a8ee3b06c51c551a3e4ab0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marko=20M=C3=A4kel=C3=A4?= Date: Wed, 23 Aug 2017 09:47:50 +0300 Subject: Code clean-up related to MDEV-13167 xdes_get_descriptor_const(): New function, to get read-only access to the allocation descriptor. fseg_page_is_free(): Only acquire a shared latch on the tablespace, not an exclusive latch. Calculate the descriptor page address before acquiring the tablespace latch. If the page number is out of bounds, return without fetching any page. Access only one descriptor page. fsp_page_is_free(), fsp_page_is_free_func(): Remove. Use fseg_page_is_free() instead. fsp_init_file_page(): Move the debug parameter into a separate function. btr_validate_level(): Remove the unused variable "seg". --- storage/innobase/btr/btr0btr.cc | 17 +++-------------- 1 file changed, 3 insertions(+), 14 deletions(-) (limited to 'storage/innobase/btr') diff --git a/storage/innobase/btr/btr0btr.cc b/storage/innobase/btr/btr0btr.cc index 64a14d0e959..815324825bd 100644 --- a/storage/innobase/btr/btr0btr.cc +++ b/storage/innobase/btr/btr0btr.cc @@ -4846,7 +4846,6 @@ btr_validate_level( bool ret = true; mtr_t mtr; mem_heap_t* heap = mem_heap_create(256); - fseg_header_t* seg; ulint* offsets = NULL; ulint* offsets2= NULL; #ifdef UNIV_ZIP_DEBUG @@ -4870,7 +4869,6 @@ btr_validate_level( block = btr_root_block_get(index, RW_SX_LATCH, &mtr); page = buf_block_get_frame(block); - seg = page + PAGE_HEADER + PAGE_BTR_SEG_TOP; #ifdef UNIV_DEBUG if (dict_index_is_spatial(index)) { @@ -4879,7 +4877,7 @@ btr_validate_level( } #endif - const fil_space_t* space = fil_space_get(index->space); + fil_space_t* space = fil_space_get(index->space); const page_size_t table_page_size( dict_table_page_size(index->table)); const page_size_t space_page_size(space->flags); @@ -4897,9 +4895,7 @@ btr_validate_level( while (level != btr_page_get_level(page, &mtr)) { const rec_t* node_ptr; - if (fseg_page_is_free(seg, - block->page.id.space(), - block->page.id.page_no())) { + if (fseg_page_is_free(space, block->page.id.page_no())) { btr_validate_report1(index, level, block); @@ -4959,11 +4955,6 @@ btr_validate_level( /* Now we are on the desired level. Loop through the pages on that level. */ - if (level == 0) { - /* Leaf pages are managed in their own file segment. */ - seg -= PAGE_BTR_SEG_TOP - PAGE_BTR_SEG_LEAF; - } - loop: mem_heap_empty(heap); offsets = offsets2 = NULL; @@ -4982,9 +4973,7 @@ loop: ut_a(block->page.id.space() == index->space); - if (fseg_page_is_free(seg, - block->page.id.space(), - block->page.id.page_no())) { + if (fseg_page_is_free(space, block->page.id.page_no())) { btr_validate_report1(index, level, block); -- cgit v1.2.1