1
0
mirror of https://github.com/MariaDB/server.git synced 2026-10-23 18:49:29 +03:00
Files
Thirunarayanan Balathandayuthapani 7d81395cca MDEV-41395 fil_space_t::create() may release fil_system.mutex
- By default fil_crypt_must_default_encrypt() holds, and then
fil_crypt_thread() waits indefinitely in wait_for_work() once the
default_encrypt list has been exhausted. A tablespace for which no
fil_crypt_threads_signal() is issued would therefore never be
encrypted at all.

fil_ibd_create(): Invoke fil_crypt_threads_signal() after
fil_space_t::clear_stopped()

dict_load_tablespace(): Invoke fil_crypt_threads_signal(), because
fil_ibd_open() may have added the tablespace to
fil_system.default_encrypt_tables. This is the single point through
which every dictionary-driven tablespace open passes; it is only
invoked by dict_load_table_one(), hence by dict_sys_t::load_table().

The call in dict_table_open_on_name() does not cover it, because
that function returns a cached table before reaching the wake-up.
A table first loaded by dict_table_open_on_id() would thus never be
signalled, neither then nor later.

row_import_cleanup(): Do not invoke fil_crypt_threads_signal().
fil_crypt_add_imported_space() registers it afterwards and broadcasts.

fil_crypt_threads_signal(): Also return early when no encryption
thread is running.

srv_n_fil_crypt_threads_started: Declare as Atomic_relaxed<uint>,
for the unlocked read in fil_crypt_threads_signal().
2026-10-15 19:49:48 +05:30
..
2026-08-19 08:40:05 +02:00
2024-12-02 11:35:34 +02:00
2026-08-19 08:40:05 +02:00
2026-08-19 08:40:05 +02:00
2026-10-13 07:04:14 +03:00
2026-08-19 08:40:05 +02:00
2026-10-13 07:04:14 +03:00
2026-06-15 12:50:45 +02:00
2026-08-19 08:40:05 +02:00
2026-08-30 17:39:50 +02:00
2024-07-08 22:40:16 +02:00
2024-12-02 11:35:34 +02:00
2026-07-28 13:14:38 +02:00