• Thirunarayanan Balathandayuthapani's avatar
    MDEV-8139 Fix Scrubbing · c92f7e28
    Thirunarayanan Balathandayuthapani authored
    fil_space_t::freed_ranges: Store ranges of freed page numbers.
    
    fil_space_t::last_freed_lsn: Store the most recent LSN of
    freeing a page.
    
    fil_space_t::freed_mutex: Protects freed_ranges, last_freed_lsn.
    
    fil_space_create(): Initialize the freed_range mutex.
    
    fil_space_free_low(): Frees the freed_range mutex.
    
    range_set: Ranges of page numbers.
    
    buf_page_create(): Removes the page from freed_ranges when page
    is being reused.
    
    btr_free_root(): Remove the PAGE_INDEX_ID invalidation. Because
    btr_free_root() and dict_drop_index_tree() are executed in
    the same atomic mini-transaction, there is no need to
    invalidate the root page.
    
    buf_release_freed_page(): Split from buf_flush_freed_page().
    Skip any I/O
    
    buf_flush_freed_pages(): Get the freed ranges from tablespace and
    Write punch-hole or zeroes of the freed ranges.
    
    buf_flush_try_neighbors(): Handles the flushing of freed ranges.
    
    mtr_t::freed_pages: Variable to store the list of freed pages.
    
    mtr_t::add_freed_pages(): To add freed pages.
    
    mtr_t::clear_freed_pages(): To clear the freed pages.
    
    mtr_t::m_freed_in_system_tablespace: Variable to indicate whether page has
    been freed in system tablespace.
    
    mtr_t::m_trim_pages: Variable to indicate whether the space has been trimmed.
    
    mtr_t::commit(): Add the freed page and update the last freed lsn
    in the tablespace and clear the tablespace freed range if space is
    trimmed.
    
    file_name_t::freed_pages: Store the freed pages during recovery.
    
    file_name_t::add_freed_page(), file_name_t::remove_freed_page(): To
    add and remove freed page during recovery.
    
    store_freed_or_init_rec(): Store or remove the freed pages while
    encountering FREE_PAGE or INIT_PAGE redo log record.
    
    recv_init_crash_recovery_spaces(): Add the freed page encountered
    during recovery to respective tablespace.
    c92f7e28
btr0btr.cc 151 KB