summaryrefslogtreecommitdiff
path: root/storage/xtradb/buf
diff options
context:
space:
mode:
authorSergei Golubchik <sergii@pisem.net>2014-03-17 17:41:54 +0100
committerSergei Golubchik <sergii@pisem.net>2014-03-17 17:41:54 +0100
commit5ad18f12365e3c745b12b19212bb9da59806863a (patch)
tree982ed9f03700a1e0d41df591adea6539612a55ec /storage/xtradb/buf
parent9ae0471e5ad63688e3e2eb1105beb4586ce9fac8 (diff)
parent7996f5061ecbb689f6d5dfaac5739ae907d73798 (diff)
downloadmariadb-git-5ad18f12365e3c745b12b19212bb9da59806863a.tar.gz
percona-server-5.5.36-34.0
Diffstat (limited to 'storage/xtradb/buf')
-rw-r--r--storage/xtradb/buf/buf0flu.c19
1 files changed, 6 insertions, 13 deletions
diff --git a/storage/xtradb/buf/buf0flu.c b/storage/xtradb/buf/buf0flu.c
index d47f2d6fa9a..dda0630c09a 100644
--- a/storage/xtradb/buf/buf0flu.c
+++ b/storage/xtradb/buf/buf0flu.c
@@ -1605,17 +1605,8 @@ buf_flush_page_and_try_neighbors(
ut_ad(block_mutex);
}
- if (UNIV_UNLIKELY(buf_page_get_state(bpage)
- == BUF_BLOCK_REMOVE_HASH)) {
-
- /* In case we don't hold the LRU list mutex, we may see a page
- that is about to be relocated on the flush list. Do not
- attempt to flush it. */
- ut_ad(flush_type == BUF_FLUSH_LIST);
- return (flushed);
- }
-
- ut_a(buf_page_in_file(bpage));
+ ut_a(buf_page_in_file(bpage)
+ || buf_page_get_state(bpage) == BUF_BLOCK_REMOVE_HASH);
if (buf_flush_ready_for_flush(bpage, flush_type)) {
ulint space;
@@ -1631,8 +1622,10 @@ buf_flush_page_and_try_neighbors(
/* These fields are protected by both the
buffer pool mutex and block mutex. */
- space = buf_page_get_space(bpage);
- offset = buf_page_get_page_no(bpage);
+ /* Read the fields directly in order to avoid asserting on
+ BUF_BLOCK_REMOVE_HASH pages. */
+ space = bpage->space;
+ offset = bpage->offset;
if (flush_type == BUF_FLUSH_LRU) {
mutex_exit(block_mutex);