• Marko Mäkelä's avatar
    MDEV-20813: Do not rotate keys for unallocated pages · f989c0ce
    Marko Mäkelä authored
    fil_crypt_rotate_page(): Skip the key rotation for pages that carry 0
    in FIL_PAGE_TYPE. This avoids not only unnecessary writes, but also
    failures of the recently added debug assertion in
    buf_flush_init_for_writing() that the FIL_PAGE_TYPE should be nonzero.
    
    Note: the debug assertion can fail if the file was originally created
    before MySQL 5.5. In old InnoDB versions, FIL_PAGE_TYPE was only
    initialized for B-tree pages, to FIL_PAGE_INDEX. For any other pages,
    the field could be garbage, including FIL_PAGE_INDEX. In MariaDB 10.2
    and later, buf_flush_init_for_writing() would initialize the
    FIL_PAGE_TYPE on such old pages, but only after passing the debug
    assertion that insists that pages have a nonzero FIL_PAGE_TYPE.
    Thus, the debug assertion at the start of buf_flush_init_for_writing()
    can fail when upgrading from very old debug files. This assertion is
    only present in debug builds, not release builds.
    f989c0ce
fil0crypt.cc 72.5 KB