summaryrefslogtreecommitdiff
path: root/storage/innobase/btr
diff options
context:
space:
mode:
authorMarko Mäkelä <marko.makela@mariadb.com>2017-08-23 09:47:50 +0300
committerMarko Mäkelä <marko.makela@mariadb.com>2017-08-23 09:47:50 +0300
commite52dd13c2e6c870038a8ee3b06c51c551a3e4ab0 (patch)
treebd0a84db7909187e1f4d186ace474b507501605d /storage/innobase/btr
parent59caf2c3c1fe128d1d2c3a8df9fadd4d25ab7102 (diff)
downloadmariadb-git-e52dd13c2e6c870038a8ee3b06c51c551a3e4ab0.tar.gz
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".
Diffstat (limited to 'storage/innobase/btr')
-rw-r--r--storage/innobase/btr/btr0btr.cc17
1 files changed, 3 insertions, 14 deletions
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);