mirror of
https://github.com/MariaDB/server.git
synced 2026-02-15 07:08:44 +01:00
innodb_log_file_disabled: A new Boolean settable global parameter, for disabling the InnoDB redo log. When set, the server is not crash safe. innodb_log_group_home_dir: Allow the value to be changed with SET GLOBAL, as long as the log remains in the same file system or innodb_log_file_disabled=ON was set. innodb_log_update(): A common function for implementing SET GLOBAL innodb_log_file_size, innodb_log_file_disabled, innodb_log_checkpoint_now, innodb_log_group_home_dir. log_sys.buf_size_requested: The configured innodb_log_buffer_size. While the log is disabled, we may set log_sys.buf_size (the actual size of log_sys.buf) differently. log_sys.disabled: The current setting of innodb_log_file_disabled. log_t::append_prepare(): Instead of referring to file_size or capacity() for mmap=true, always refer to buf_size. When log_sys.disabled holds, log_sys.buf may be much smaller than log_sys.file_size. Its size is always reflected by log_sys.buf_size. log_t::attach(): Handle log_sys.disabled. log_t::disable(): Implements SET innodb_log_file_disabled=ON. Even if the log used to be in persistent memory, here we will set up dummy log_sys.buf and log_sys.flush_buf so that the dummy writes will appear to use file based writes. log_t::skip_write_buf(): A dummy log writer implementation that is used when log_sys.disabled holds and the log is not being resized. log_t::resize_abort(): When the log remains disabled, "persist" all the log and advance the group_lock and flush_lock to the current LSN, just like log_t::disable() does. log_t::resize_start(): Handle log_sys.disabled, that is, SET GLOBAL innodb_log_file_disabled=OFF when the redo log had previously been disabled. If we are on persistent memory, we will "fake" the dummy log_sys.buf to appear as memory-mapped as well, so that log_t::resize_write() and log_t::resize_write_buf() can assume that both log files are of the same type (memory-mapped or file-based). The dummy log_sys.flush_buf will be stored in log_sys.resize_flush_buf in that case. When moving from memory-mapped to a regular log file, we will allocate log_sys.checkpoint_buf. It will be freed in log_t::close(). log_t::resize_rename(): When innodb_log_group_home_dir is changed between file systems, handle the non-atomic replacement of the log file in a special way. For a moment, a recoverable ib_logfile0 will exist in both locations. log_t::resize_write(): Detect memory-mapped log by !resize_log.is_opened(). If the memory-mapped log is being re-enabled, log_sys.resize_flush_buf may temporarily store the value of a dummy log_sys.flush_buf. During any log resizing or disabling or enabling, both buf and resize_buf must appear to be either file-based or memory-mapped. log_t::write_buf(), log_write_up_to(): Handle the special case that disable() executed or resize_start() started re-enabling the log while we were waiting for flush_lock or write_lock. In the latter case, log_sys.writer will be changed from log_t::skip_write_buf to log_writer_resizing during the execution of log_write_up_to(). log_t::persist(): Skip the writes if the log is disabled, that is, a memory-mapped log is in the process being re-enabled. In this case, we cannot trust log_sys.file_size, and the pmem_persist() could be invoked on an invalid address range. log_resize_acquire_group(): Acquier the group locks for write and flush. log_resize_release_group(): Release the group locks for write and flush. log_resize_acquire(): Return whether the group locks were elided. log_write_and_flush_prepare(), log_write_and_flush(): Protect also the log_sys.is_mmap() case with write_lock and flush_lock, in order to prevent a race condition between mtr_t::commit_file() and log_t::disable(). log_t::persist(): Remove the assertions about not holding write_lock or flush_lock. We will hold them during DDL operations. |
||
|---|---|---|
| .. | ||
| btr0btr.h | ||
| btr0btr.inl | ||
| btr0bulk.h | ||
| btr0cur.h | ||
| btr0cur.inl | ||
| btr0pcur.h | ||
| btr0pcur.inl | ||
| btr0sea.h | ||
| btr0types.h | ||
| buf0buddy.h | ||
| buf0buf.h | ||
| buf0buf.inl | ||
| buf0checksum.h | ||
| buf0dblwr.h | ||
| buf0dump.h | ||
| buf0flu.h | ||
| buf0lru.h | ||
| buf0rea.h | ||
| buf0types.h | ||
| cache.h | ||
| data0data.h | ||
| data0data.inl | ||
| data0type.h | ||
| data0type.inl | ||
| data0types.h | ||
| db0err.h | ||
| dict0boot.h | ||
| dict0crea.h | ||
| dict0crea.inl | ||
| dict0dict.h | ||
| dict0dict.inl | ||
| dict0load.h | ||
| dict0mem.h | ||
| dict0mem.inl | ||
| dict0pagecompress.h | ||
| dict0pagecompress.inl | ||
| dict0stats.h | ||
| dict0stats_bg.h | ||
| dict0types.h | ||
| dyn0buf.h | ||
| dyn0types.h | ||
| eval0eval.h | ||
| eval0eval.inl | ||
| eval0proc.h | ||
| eval0proc.inl | ||
| fil0crypt.h | ||
| fil0crypt.inl | ||
| fil0fil.h | ||
| fil0pagecompress.h | ||
| fsp0file.h | ||
| fsp0fsp.h | ||
| fsp0space.h | ||
| fsp0sysspace.h | ||
| fsp0types.h | ||
| fts0ast.h | ||
| fts0blex.h | ||
| fts0fts.h | ||
| fts0opt.h | ||
| fts0pars.h | ||
| fts0plugin.h | ||
| fts0priv.h | ||
| fts0priv.inl | ||
| fts0tlex.h | ||
| fts0tokenize.h | ||
| fts0types.h | ||
| fts0types.inl | ||
| fts0vlc.h | ||
| fut0lst.h | ||
| gis0geo.h | ||
| gis0rtree.h | ||
| gis0rtree.inl | ||
| gis0type.h | ||
| ha0storage.h | ||
| ha0storage.inl | ||
| ha_prototypes.h | ||
| handler0alter.h | ||
| hash0hash.h | ||
| ibuf0ibuf.h | ||
| lock0iter.h | ||
| lock0lock.h | ||
| lock0lock.inl | ||
| lock0prdt.h | ||
| lock0priv.h | ||
| lock0priv.inl | ||
| lock0types.h | ||
| log0crypt.h | ||
| log0log.h | ||
| log0recv.h | ||
| log0types.h | ||
| mach0data.h | ||
| mach0data.inl | ||
| mariadb_stats.h | ||
| mem0mem.h | ||
| mem0mem.inl | ||
| mtr0log.h | ||
| mtr0mtr.h | ||
| mtr0types.h | ||
| os0file.h | ||
| os0file.inl | ||
| page0cur.h | ||
| page0cur.inl | ||
| page0page.h | ||
| page0page.inl | ||
| page0types.h | ||
| page0zip.h | ||
| page0zip.inl | ||
| pars0grm.h | ||
| pars0opt.h | ||
| pars0pars.h | ||
| pars0sym.h | ||
| pars0types.h | ||
| que0que.h | ||
| que0que.inl | ||
| que0types.h | ||
| read0types.h | ||
| rem0cmp.h | ||
| rem0rec.h | ||
| rem0rec.inl | ||
| rem0types.h | ||
| row0ext.h | ||
| row0ext.inl | ||
| row0ftsort.h | ||
| row0import.h | ||
| row0ins.h | ||
| row0log.h | ||
| row0merge.h | ||
| row0mysql.h | ||
| row0purge.h | ||
| row0quiesce.h | ||
| row0row.h | ||
| row0row.inl | ||
| row0sel.h | ||
| row0types.h | ||
| row0uins.h | ||
| row0umod.h | ||
| row0undo.h | ||
| row0upd.h | ||
| row0upd.inl | ||
| row0vers.h | ||
| rw_lock.h | ||
| small_vector.h | ||
| srv0mon.h | ||
| srv0mon.inl | ||
| srv0srv.h | ||
| srv0start.h | ||
| srw_lock.h | ||
| sux_lock.h | ||
| transactional_lock_guard.h | ||
| trx0i_s.h | ||
| trx0purge.h | ||
| trx0rec.h | ||
| trx0roll.h | ||
| trx0rseg.h | ||
| trx0sys.h | ||
| trx0trx.h | ||
| trx0trx.inl | ||
| trx0types.h | ||
| trx0undo.h | ||
| trx0undo.inl | ||
| trx0xa.h | ||
| univ.i | ||
| ut0byte.h | ||
| ut0byte.inl | ||
| ut0counter.h | ||
| ut0dbg.h | ||
| ut0list.h | ||
| ut0list.inl | ||
| ut0lst.h | ||
| ut0mem.h | ||
| ut0mem.inl | ||
| ut0new.h | ||
| ut0pool.h | ||
| ut0rbt.h | ||
| ut0rnd.h | ||
| ut0sort.h | ||
| ut0stage.h | ||
| ut0ut.h | ||
| ut0vec.h | ||
| ut0vec.inl | ||
| ut0wqueue.h | ||