diff options
author | Sergei Golubchik <sergii@pisem.net> | 2014-03-17 17:41:54 +0100 |
---|---|---|
committer | Sergei Golubchik <sergii@pisem.net> | 2014-03-17 17:41:54 +0100 |
commit | 5ad18f12365e3c745b12b19212bb9da59806863a (patch) | |
tree | 982ed9f03700a1e0d41df591adea6539612a55ec /storage/xtradb/buf | |
parent | 9ae0471e5ad63688e3e2eb1105beb4586ce9fac8 (diff) | |
parent | 7996f5061ecbb689f6d5dfaac5739ae907d73798 (diff) | |
download | mariadb-git-5ad18f12365e3c745b12b19212bb9da59806863a.tar.gz |
percona-server-5.5.36-34.0
Diffstat (limited to 'storage/xtradb/buf')
-rw-r--r-- | storage/xtradb/buf/buf0flu.c | 19 |
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); |