mirror of
https://github.com/MariaDB/server.git
synced 2025-01-18 04:53:01 +01:00
Applying InnoDB snapshot
Detailed revision comments: r6798 | marko | 2010-03-11 09:53:01 +0200 (Thu, 11 Mar 2010) | 14 lines branches/zip: Fix and clarify the latching of some buf_block_t members. buf_block_t::check_index_page_at_flush: Note that this field is not protected by any mutex. Make it a separate field, not a bitfield that could share the machine word with other fields. buf_block_t::lock_hash_val: Note that this field is protected by buf_block_t::lock (or during block creation, by buf_pool_mutex and buf_block_t::mutex). buf_block_get_lock_hash_val(): Assert that block->lock is held by the current thread. Issue #465, rb://267 approved by Inaam Rana
This commit is contained in:
parent
2b38090990
commit
56ce1fc0d1
3 changed files with 22 additions and 3 deletions
|
@ -1,3 +1,10 @@
|
|||
2010-03-11 The InnoDB Team
|
||||
|
||||
* buf0buf.h, buf0buf.ic:
|
||||
Fix and clarify the latching of some buf_block_t members.
|
||||
Note that check_index_page_at_flush is not protected by any mutex.
|
||||
Note and assert that lock_hash_val is protected by the rw-latch.
|
||||
|
||||
2010-03-10 The InnoDB Team
|
||||
|
||||
* trx/trx0sys.c:
|
||||
|
|
|
@ -1179,15 +1179,21 @@ struct buf_block_struct{
|
|||
rw_lock_t lock; /*!< read-write lock of the buffer
|
||||
frame */
|
||||
unsigned lock_hash_val:32;/*!< hashed value of the page address
|
||||
in the record lock hash table */
|
||||
unsigned check_index_page_at_flush:1;
|
||||
in the record lock hash table;
|
||||
protected by buf_block_t::lock
|
||||
(or buf_block_t::mutex, buf_pool_mutex
|
||||
in buf_page_get_gen(),
|
||||
buf_page_init_for_read()
|
||||
and buf_page_create()) */
|
||||
ibool check_index_page_at_flush;
|
||||
/*!< TRUE if we know that this is
|
||||
an index page, and want the database
|
||||
to check its consistency before flush;
|
||||
note that there may be pages in the
|
||||
buffer pool which are index pages,
|
||||
but this flag is not set because
|
||||
we do not keep track of all pages */
|
||||
we do not keep track of all pages;
|
||||
NOT protected by any mutex */
|
||||
/* @} */
|
||||
/** @name Optimistic search field */
|
||||
/* @{ */
|
||||
|
|
|
@ -705,6 +705,12 @@ buf_block_get_lock_hash_val(
|
|||
/*========================*/
|
||||
const buf_block_t* block) /*!< in: block */
|
||||
{
|
||||
ut_ad(block);
|
||||
ut_ad(buf_page_in_file(&block->page));
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(rw_lock_own(&(((buf_block_t*) block)->lock), RW_LOCK_EXCLUSIVE)
|
||||
|| rw_lock_own(&(((buf_block_t*) block)->lock), RW_LOCK_SHARED));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
return(block->lock_hash_val);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue