• Thirunarayanan Balathandayuthapani's avatar
    MDEV-23456 fil_space_crypt_t::write_page0() is accessing an uninitialized page · b1009ae5
    Thirunarayanan Balathandayuthapani authored
    buf_page_create() is invoked when page is initialized. So that
    previous contents of the page ignored. In few cases, it calls
    buf_page_get_gen() is called to fetch the page from buffer pool.
    It should take x-latch on the page. If other thread uses the block
    or block io state is different from BUF_IO_NONE then release the
    mutex and check the state and buffer fix count again. For compressed
    page, use the existing free block from LRU list to create new page.
    Retry to fetch the compressed page if it is in flush list
    
    fseg_create(), fseg_create_general(): Introduce block as a parameter
    where segment header is placed. It is used to avoid repetitive
    x-latch on the same page
    
    Change the assert to check whether the page has SX latch and
    X latch in all callee function of buf_page_create()
    
    mtr_t::get_fix_count(): Get the buffer fix count of the given
    block added by the mtr
    
    FindBlock is added to find the buffer fix count of the given
    block acquired by the mini-transaction
    b1009ae5
buf0dblwr.cc 36.2 KB