• Marko Mäkelä's avatar
    MDEV-24188 Hang in buf_page_create() after reusing a previously freed page · bb328a2a
    Marko Mäkelä authored
    The fix of MDEV-23456 (commit b1009ae5)
    introduced a livelock between page flushing and a thread that is
    executing buf_page_create().
    
    buf_page_create(): If the current mini-transaction is holding
    an exclusive latch on the page, do not attempt to acquire another
    one, and do not care about any I/O fix.
    
    mtr_t::have_x_latch(): Replaces mtr_t::get_fix_count().
    
    dyn_buf_t::for_each_block(const Functor&) const: A new variant.
    
    rw_lock_own(): Add a const qualifier.
    
    Reviewed by: Thirunarayanan Balathandayuthapani
    bb328a2a
dyn0buf.h 11.2 KB