- 18 Jan, 2007 8 commits
-
-
marko authored
uncompressed page frames. buf_page_get_zip(), buf_page_release_zip(): New functions, used by btr_copy_zblob_prefix(). btr_copy_zblob_prefix(): Do not call inflateEnd().
-
marko authored
buf_LRU_free_block(): Do not allocate the control block when a compressed-only page is being freed. buf_validate(): Note that buf_pool->zip_clean may contain blocks with io_fix == BUF_IO_READ.
-
marko authored
-
marko authored
compressed page also when freeing an unmodified uncompressed page.
-
marko authored
btr_blob_free(): New function to commit a mini-transaction and to free an uncompressed BLOB block, or the entire block. btr_store_big_rec_extern_fields(): Replace the existing code with btr_blob_free(). The old code may have contained a race condition. btr_free_externally_stored_field(): Completely free the buffer blocks allocated for the freed BLOB.
-
marko authored
-
marko authored
buf_page_get_gen(). This saves one mutex operation per block request. buf_page_get_gen(), various macros and functions: Add parameter zip_size. btr_node_ptr_get_child(): Add parameter index. fil_space_get_latch(): Add optional output parameter zip_size. fil_space_get_zip_size(): Return 0 for space id==0, because the system tablespace is never compressed. fsp_header_init(): Remove the parameter zip_size. ibuf_free_excess_pages(): Remove the parameter zip_size. trx_rseg_t, trx_undo_t: Add field zip_size. xdes_lst_get_next(): Remove, unused.
-
marko authored
-
- 17 Jan, 2007 1 commit
-
-
marko authored
Split the code to subroutines. btr_copy_blob_prefix(): New function: copy the prefix of the externally stored part of an uncompressed BLOB. btr_copy_zblob_prefix(): New function: copy the prefix of the externally stored part of a compressed BLOB. btr_blob_get_part_len(), btr_blob_get_next_page_no(): Add const qualifier to the parameter.
-
- 16 Jan, 2007 13 commits
-
-
marko authored
that also exists in uncompressed form in the buffer pool, pass the compressed frame to fil_io() instead of the uncompressed one when not using the doublewrite buffer.
-
marko authored
page checksum of compressed-only blocks. Pass the compressed page frame to fil_io() when needed. page_zip_calc_checksum(): Skip also FIL_PAGE_LSN and FIL_PAGE_FILE_FLUSH_LSN. buf_flush_init_for_writing(): Expect page to be non-NULL.
-
marko authored
and to be flushed to disk. buf_LRU_free_block(): Enable the freeing of uncompressed pages of compressed tablespaces. trx_doublewrite->buf_block_arr[]: Change the type from buf_block_t* to buf_page_t*. buf_flush_ready_for_flush(): Add debug assertion. buf_flush_buffered_writes(), buf_flush_try_page(): Support blocks of type BUF_BLOCK_ZIP_DIRTY. buf_flush_post_to_doublewrite_buf(), buf_flush_write_block_low(): Change the type of the parameter from buf_block_t* to buf_page_t*. buf_flush_init_for_writing(): Allow page to be NULL if page_zip_ is non-NULL.
-
marko authored
compressed page) is not protected by block_mutex. Before releasing buf_pool->mutex, we can simply assign b->io_fix. After reacquiring buf_pool->mutex, we also have to acquire buf_pool->zip_mutex.
-
marko authored
of a block, do not release buf_pool->mutex between the time the old control block is removed from buf_pool->page_hash and the new control block is added to it. Prevent operations on the compressed-only block while calling btr_search_drop_page_hash_index() or page_zip_calc_checksum(). buf_LRU_invalidate_tablespace(): Revert the change done in r1223. buf_pool->zip_mutex will have been released by buf_LRU_block_remove_hashed_page() when it returns BUF_BLOCK_ZIP_FREE.
-
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 5 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.
-