- 16 Jan, 2007 8 commits
-
-
marko authored
acquired by the caller. buf_LRU_invalidate_tablespace(): Do not leak buf_pool->zip_mutex when rescanning the LRU list.
-
marko authored
of a dirty block, relocate the control blocks on buf_pool->flush_list instead of calling buf_flush_insert_into_flush_list().
-
marko authored
invoking buf_buddy_alloc(). An IO-fixed block must also be x-latched when block->mutex and buf_pool->mutex are released. buf_page_create(): Protect the block during buf_buddy_alloc() by IO-fixing and X-latching it.
-
marko authored
should have been added in r1218.
-
marko authored
buf_zip_decompress(). This will prevent btr_cur_search_to_nth_level() from accessing a half-decompressed leaf page. Internal B-tree nodes (non-leaf pages) in B-tree searches are only protected by the tree latch (index->lock) and by buffer-fixing.
-
marko authored
page frame to save memory.
-
marko authored
compressed page, copy the contents from the uncompressed page if necessary.
-
marko authored
and update the comments.
-
- 15 Jan, 2007 1 commit
-
-
marko authored
buf_pool->page_hash and buf_pool->LRU before releasing buf_pool->mutex. buf_page_init_for_read(), buf_page_create(): Allocate the compressed page after the block has been added to the buffer pool. Document the reason for this.
-
- 14 Jan, 2007 1 commit
-
-
marko authored
when calling btr_search_drop_page_hash_index() and uninitialized after that.
-
- 13 Jan, 2007 1 commit
-
-
marko authored
buf_page_init(): Declare block->frame valid only in the system tablespace. trx_sysf_create(): Declare the rest of the page valid, although it is uninitialized.
-
- 12 Jan, 2007 6 commits
-
-
marko authored
buf_buddy_relocate(): Document that src may have been split and some of it may be in buf_pool->zip_free[j] for some j<i, thus mach_read_from_4() may be reading from free memory. Check buffer pages only for addressability, not for being completely initialized. Ensure that block descriptors are completely initialized. buf_buddy_remove_from_free(): Check prev->state and next->state in UNIV_DEBUG && UNIV_DEBUG_VALGRIND builds. buf_buddy_free_low(): Flag the entire block valid prior to invoking buf_buddy_remove_from_free() in order to avoid a Valgrind warning about the debug assertion on bpage->state. Remove the Valgrind check for buddy being completely allocated. If it has been split to smaller blocks, some of those blocks may be free.
-
marko authored
We cannot clear the page with memset(), because the page number and tablespace id have already been stamped on it.
-
marko authored
-
marko authored
buf_buddy_add_to_free() and buf_buddy_remove_from_free(). Remove some bogus Valgrind warnings. Improve Valgrind instrumentation.
-
marko authored
UNIV_MEM_FREE(): Declare a memory area free. UNIV_MEM_ALLOC(): Declare a memory area allocated (but uninitialized). UNIV_MEM_DESC(): Associate a memory area with a control block. UNIV_MEM_UNDESC(): Unassociate a control block. trx_sys_create_doublewrite_buf(): Clear the buffer with memset(). buf_page_init(): Add a bogus UNIV_MEM_VALID(block->frame) to silence valid warnings about InnoDB data pages containing uninitialized data. buf_LRU_get_free_only(): Add UNIV_MEM_ALLOC(block->frame). buf_LRU_get_free_block(): Add UNIV_MEM_DESC(block->page.zip.data, block). buf_LRU_free_block(): Add UNIV_MEM_DESC(b->zip.data, b) when allocating a compressed-only control block for a compressed page. buf_LRU_block_free_non_file_page(): Replace UNIV_MEM_INVALID() with UNIV_MEM_FREE(). buf_LRU_block_remove_hashed_page(): Add UNIV_MEM_UNDESC(bpage) when deallocating a compressed-only control block. Add UNIV_MEM_INVALID(block->frame). (The frame should be flagged free by buf_LRU_block_free_non_file_page() moments later.) buf0buddy.c: Disable some extra checks in Valgrind-instrumented builds. Add UNIV_MEM_VALID(), UNIV_MEM_INVALID(), UNIV_MEM_FREE(), UNIV_MEM_ALLOC() as necessary.
-
marko authored
buf_buddy_block_free(), buf_buddy_free_low(): Flag the freed bytes uninitialized. buf_page_init_for_read(), buf_buddy_relocate(): Do not refer to bpage after invoking buf_relocate(). buf_buddy_relocate(): Flag src uninitialized.
-
- 10 Jan, 2007 4 commits
-
-
marko authored
buf_block_t* to buf_page_t*. Handle compressed-only blocks.
-
marko authored
buf_pool->page_hash corruption.
-
marko authored
during the buf_zip_decompress() call. Otherwise, the block may end up being freed by another thread. This bug was caught by the page_zip_validate() check in buf_LRU_block_remove_hashed_page().
-
marko authored
buf_page_init_for_read(): Protect the buf_zip_decompress() call with an X-lock on the block. page_zip_validate(): Move the page_is_comp() assertion after the page header comparison.
-
- 09 Jan, 2007 6 commits
-
-
marko authored
objects in the free area.
-
marko authored
compressed-only page, restart the scan of the LRU list, because prev_bpage may have been relocated. buf_LRU_block_remove_hashed_page(): Note that other compressed pages or compressed-only blocks may be relocated when freeing a compressed page or a compressed-only block descriptor.
-
marko authored
-
marko authored
dirty uncompressed blocks. Move the page_zip_validate() call to a more appropriate place, buf_LRU_block_remove_hashed_page(). buf_LRU_block_remove_hashed_page(): Allow bpage->oldest_modification != 0 for uncompressed pages if there is a compressed page that will be preserved. Release the mutexes before calling buf_print() and buf_LRU_print(). page_zip_validate(): Remove the assertion containing the buf_frame_get_page_zip() call. We might already be holding buf_pool->mutex.
-
marko authored
successful buf_LRU_free_block(). buf_LRU_free_block(): Note that buf_pool->mutex may be temporarily released.
-
marko authored
buf_flush_batch(): Remove the local variable "found".
-
- 08 Jan, 2007 3 commits
-
-
marko authored
the buffer pool. buf_LRU_free_block(): When preserving the compressed page, compute the checksum. Also assert page_zip_validate(). buf_zip_decompress(): Add parameter "check" for enabling checksum tests. Before decompressing a compressed-only page from the buffer pool, verify the compressed page checksum.
-
marko authored
to the buffer pool while we were not holding buf_pool->mutex. If it was, do not attempt to preserve the compressed page.
-
marko authored
-
- 05 Jan, 2007 7 commits
-
-
marko authored
page_zip_malloc(): Replace ut_malloc(...) with mem_heap_alloc(opaque, ...). page_zip_free(): Dummy function (cannot deallocate from InnoDB memory heaps, and zlib seems to defer deallocation to the very end anyway). page_zip_compress(): Create a big enough heap for the needs of zlib. Replace deflateInit() with deflateInit2(). page_zip_decompress(): Create a big enough heap for the needs of zlib. Replace inflateInit() with inflateInit2().
-
marko authored
-
marko authored
Remove the unused parameter init_block. mem_heap_fast_create(): Remove. struct mem_block_info_struct: Remove the field init_block.
-
marko authored
buf_page_get_gen(): Note that buf_read_page() may uncompress a compressed-only page. buf_page_create(): Test buf_page_in_file() instead of BUF_BLOCK_FILE_PAGE.
-
marko authored
-
marko authored
buffer pool in compressed form only. buf_page_peek_block(): Remove. mutex_enter_fast_func: Remove.
-
marko authored
and add compressed-only pages to buf_pool->page_hash. BUF_POOL_ZIP_FOLD(), BUF_POOL_ZIP_FOLD_PTR(), BUF_POOL_ZIP_FOLD_BPAGE(): Macros for computing buf_pool->zip_hash fold values. Make use of these in buf0buddy.c. buf0buddy.c: Replace some ptr == ut_align_down(ptr, ...) in assertions with !ut_align_offset(ptr, ...).
-
- 04 Jan, 2007 2 commits
-
-
marko authored
to BUF_BLOCK_ZIP_DIRTY (discarding the uncompressed page corresponding to a modified compressed page that has not been flushed to disk). buf_page_can_relocate(): New function, modelled after buf_flush_ready_for_replace(). buf_LRU_free_block(): Allow the transition to BUF_BLOCK_ZIP_DIRTY. buf_flush_insert_into_flush_list(): Make the prototype public. buf_buddy_relocate(): Remove an unnecessary switch statement. Use buf_page_can_relocate() instead of buf_flush_ready_for_replace(). buf_page_peek(): Made UNIV_INLINE. Document UNIV_ZIP_DEBUG.
-
marko authored
Improve diagnostics. buf_buddy_relocate(): Do not assume all small blocks to contain only one buf_page_t object. Require an exact size match, as in the case of compressed pages. buf_relocate(): Relocate buf_pool->LRU_old if needed. Validate the LRU list in debug builds. buf_LRU_block_remove_hashed_page(): Do not overwrite FIL_PAGE_OFFSET or FIL_PAGE_ARCH_LOG_NO_OR_SPACE_ID. The memory will be invalidated in debug builds of buf_buddy_free(). buf0buddy.c: Add assertions for not holding buf_pool->zip_mutex. The calling thread should not be holding any block->mutex, but it might be too time-consuming to assert against that, even #ifdef UNIV_SYNC_DEBUG.
-
- 03 Jan, 2007 1 commit
-
-
marko authored
-