Commit da366141 authored by marko's avatar marko

branches/zip: Note that buf_page_t::list and buf_page_t::in_flush_list

are only protected by buf_pool_mutex, not by the block mutex.

buf_page_release(): Remove the assertion on in_flush_list.
The function is only holding block->mutex, not buf_pool_mutex.
This was reported by Sunny.  This was the only piece of code
that accessed in_flush_list while not holding buf_pool_mutex.
parent 34909070
......@@ -1056,9 +1056,10 @@ struct buf_page_struct{
/* 2. Page flushing fields; protected by buf_pool_mutex */
UT_LIST_NODE_T(buf_page_t) list;
/* based on state, this is a list
node in one of the following lists
in buf_pool:
/* based on state, this is a
list node, protected only by
buf_pool_mutex, in one of the
following lists in buf_pool:
BUF_BLOCK_NOT_USED: free
BUF_BLOCK_FILE_PAGE: flush_list
......
......@@ -1056,10 +1056,6 @@ buf_page_release(
#endif
block->page.buf_fix_count--;
/* Dirty blocks should be in the flush list. */
ut_ad(!block->page.oldest_modification
|| block->page.in_flush_list);
mutex_exit(&block->mutex);
if (rw_latch == RW_S_LATCH) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment