summaryrefslogtreecommitdiff
path: root/storage/innobase/ibuf
diff options
context:
space:
mode:
authorMarko Mäkelä <marko.makela@oracle.com>2011-09-13 09:18:34 +0300
committerMarko Mäkelä <marko.makela@oracle.com>2011-09-13 09:18:34 +0300
commit3436169892e8aa57128d8046631bf381b75b113d (patch)
treec1dcdc3d4819e4a22590997a7d5a5df38b2182dd /storage/innobase/ibuf
parentcc496eb7466487747d26d272f0559df9a07f2e34 (diff)
downloadmariadb-git-3436169892e8aa57128d8046631bf381b75b113d.tar.gz
Hopefully final fix of Bug#11766591 59733: Possible deadlock
when buffered changes are to be discarded ibuf_add_free_page(): Lower the latching order of the newly allocated page to SYNC_IBUF_TREE_NODE_NEW after latching the insert buffer tree root. This bug always was bogus UNIV_SYNC_DEBUG alarm. The function buf_block_dbg_add_level() is a no-op unless UNIV_SYNC_DEBUG is defined.
Diffstat (limited to 'storage/innobase/ibuf')
-rw-r--r--storage/innobase/ibuf/ibuf0ibuf.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/storage/innobase/ibuf/ibuf0ibuf.c b/storage/innobase/ibuf/ibuf0ibuf.c
index 8f151e39958..1406b2de4e9 100644
--- a/storage/innobase/ibuf/ibuf0ibuf.c
+++ b/storage/innobase/ibuf/ibuf0ibuf.c
@@ -1687,12 +1687,12 @@ ibuf_add_free_page(
mutex_enter(&ibuf_mutex);
+ root = ibuf_tree_root_get(ibuf_data, space, &mtr);
+
#ifdef UNIV_SYNC_DEBUG
buf_page_dbg_add_level(page, SYNC_TREE_NODE_NEW);
#endif /* UNIV_SYNC_DEBUG */
- root = ibuf_tree_root_get(ibuf_data, space, &mtr);
-
/* Add the page to the free list and update the ibuf size data */
flst_add_last(root + PAGE_HEADER + PAGE_BTR_IBUF_FREE_LIST,