• Marko Mäkelä's avatar
    MDEV-11630 Call mutex_free() before freeing the mutex list · d6a1f9f1
    Marko Mäkelä authored
    fil_space_crypt_cleanup(): Call mutex_free() to pair with
    fil_space_crypt_init().
    
    fil_space_destroy_crypt_data(): Call mutex_free() to pair with
    fil_space_create_crypt_data() and fil_space_read_crypt_data().
    
    fil_crypt_threads_cleanup(): Call mutex_free() to pair with
    fil_crypt_threads_init().
    
    fil_space_free_low(): Invoke fil_space_destroy_crypt_data().
    
    fil_close(): Invoke fil_space_crypt_cleanup(), just like
    fil_init() invoked fil_space_crypt_init().
    
    Datafile::shutdown(): Set m_crypt_info=NULL without dereferencing
    the pointer. The object will be freed along with the fil_space_t
    in fil_space_free_low().
    Remove some unnecessary conditions (ut_free(NULL) is OK).
    
    srv_shutdown_all_bg_threads(): Shut down the encryption threads
    by calling fil_crypt_threads_end().
    
    srv_shutdown_bg_undo_sources(): Do not prematurely call
    fil_crypt_threads_end(). Many pages can still be written by
    change buffer merge, rollback of incomplete transactions, and
    purge, especially in slow shutdown (innodb_fast_shutdown=0).
    
    innobase_shutdown_for_mysql(): Call fil_crypt_threads_cleanup()
    also when innodb_read_only=1, because the threads will have been
    created also in that case.
    
    sync_check_close(): Re-enable the invocation of sync_latch_meta_destroy()
    to free the mutex list.
    d6a1f9f1
fil0fil.h 59.2 KB