- 23 Jan, 2007 4 commits
-
-
marko authored
block->page.buf_fix_count. This mistake was made in r1255. When access to the block is requested by some other thread, buf_fix_count can be incremented during the execution of buf_zip_decompress().
-
marko authored
Replace some while loops with do..while or for loops. lock_move_rec_list_start(): Replace 2 with PAGE_HEAP_NO_USER_LOW.
-
marko authored
initialize all the fields of the control block. buf_block_init_low(), buf_page_init_low(): New functions, used in buf_page_init_for_backup_restore(), buf_page_init(), and buf_page_init_for_read().
-
marko authored
Declare some local variables in narrower scope. lock_move_rec_list_start(): Check for orphan locks #ifdef UNIV_DEBUG
-
- 22 Jan, 2007 4 commits
-
-
marko authored
orphaned locks outside the "for" loop. This mistake was made in r1252.
-
marko authored
and implement UNIV_DEBUG diagnostics for orphaned locks.
-
marko authored
inside #ifdef UNIV_DEBUG_LOCK_VALIDATE. lock_rec_validate_page(): Assert that page_find_rec_with_heap_no() returns non-NULL.
-
marko authored
lock_rec_get_nth_bit(), lock_rec_set_nth_bit(), lock_rec_reset_nth_bit(), lock_rec_copy(): Simplify the code.
-
- 19 Jan, 2007 1 commit
-
-
marko authored
buf_buddy_relocate_block(): New function, split from buf_buddy_relocate(). Return FALSE when buf_page_can_relocate() returns FALSE. Fix some formatting in buf_buddy_free_low() and buf_page_init_for_read().
-
- 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.
-