summaryrefslogtreecommitdiff
path: root/storage/xtradb/btr/btr0sea.c
diff options
context:
space:
mode:
authorunknown <knielsen@knielsen-hq.org>2009-08-03 22:09:53 +0200
committerunknown <knielsen@knielsen-hq.org>2009-08-03 22:09:53 +0200
commitcb6a28aaf9acbaca39ff1ebc983f2b1058a4f585 (patch)
tree6736fb670438aa39f253531bb35dc425cae2a993 /storage/xtradb/btr/btr0sea.c
parente84748406cac825127279a16482756539267ec17 (diff)
parent237485ccd692cb3df5bac1ac74a00487f42bf93d (diff)
downloadmariadb-git-cb6a28aaf9acbaca39ff1ebc983f2b1058a4f585.tar.gz
Merge XtraDB 6 into MariaDB.
Diffstat (limited to 'storage/xtradb/btr/btr0sea.c')
-rw-r--r--storage/xtradb/btr/btr0sea.c18
1 files changed, 12 insertions, 6 deletions
diff --git a/storage/xtradb/btr/btr0sea.c b/storage/xtradb/btr/btr0sea.c
index 8aafd738542..a60f02cf86c 100644
--- a/storage/xtradb/btr/btr0sea.c
+++ b/storage/xtradb/btr/btr0sea.c
@@ -1731,7 +1731,8 @@ btr_search_validate(void)
rec_offs_init(offsets_);
rw_lock_x_lock(&btr_search_latch);
- buf_pool_mutex_enter();
+ //buf_pool_mutex_enter();
+ rw_lock_x_lock(&page_hash_latch);
cell_count = hash_get_n_cells(btr_search_sys->hash_index);
@@ -1739,11 +1740,13 @@ btr_search_validate(void)
/* We release btr_search_latch every once in a while to
give other queries a chance to run. */
if ((i != 0) && ((i % chunk_size) == 0)) {
- buf_pool_mutex_exit();
+ //buf_pool_mutex_exit();
+ rw_lock_x_unlock(&page_hash_latch);
rw_lock_x_unlock(&btr_search_latch);
os_thread_yield();
rw_lock_x_lock(&btr_search_latch);
- buf_pool_mutex_enter();
+ //buf_pool_mutex_enter();
+ rw_lock_x_lock(&page_hash_latch);
}
node = hash_get_nth_cell(btr_search_sys->hash_index, i)->node;
@@ -1850,11 +1853,13 @@ btr_search_validate(void)
/* We release btr_search_latch every once in a while to
give other queries a chance to run. */
if (i != 0) {
- buf_pool_mutex_exit();
+ //buf_pool_mutex_exit();
+ rw_lock_x_unlock(&page_hash_latch);
rw_lock_x_unlock(&btr_search_latch);
os_thread_yield();
rw_lock_x_lock(&btr_search_latch);
- buf_pool_mutex_enter();
+ //buf_pool_mutex_enter();
+ rw_lock_x_lock(&page_hash_latch);
}
if (!ha_validate(btr_search_sys->hash_index, i, end_index)) {
@@ -1862,7 +1867,8 @@ btr_search_validate(void)
}
}
- buf_pool_mutex_exit();
+ //buf_pool_mutex_exit();
+ rw_lock_x_unlock(&page_hash_latch);
rw_lock_x_unlock(&btr_search_latch);
if (UNIV_LIKELY_NULL(heap)) {
mem_heap_free(heap);