summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarko Mäkelä <marko.makela@mariadb.com>2020-10-26 16:43:52 +0200
committerMarko Mäkelä <marko.makela@mariadb.com>2020-10-26 17:53:55 +0200
commitc27e53f45992d0b0b5eb5ff6242cfe1a78eba8b5 (patch)
tree638169355bcefadd3c0155c3022038ac4077a876
parenta5a2ef079cec378340d8b575aef05974b0b3442e (diff)
downloadmariadb-git-c27e53f45992d0b0b5eb5ff6242cfe1a78eba8b5.tar.gz
MDEV-23855: Use normal mutex for log_sys.mutex, log_sys.flush_order_mutex
With an unreasonably small innodb_log_file_size, the page cleaner thread would frequently acquire log_sys.flush_order_mutex and spend a significant portion of CPU time spinning on that mutex when determining the checkpoint LSN.
-rw-r--r--extra/mariabackup/xtrabackup.cc24
-rw-r--r--storage/innobase/buf/buf0flu.cc36
-rw-r--r--storage/innobase/fil/fil0fil.cc22
-rw-r--r--storage/innobase/include/fil0fil.h2
-rw-r--r--storage/innobase/include/log0log.h63
-rw-r--r--storage/innobase/include/log0log.ic2
-rw-r--r--storage/innobase/include/mtr0mtr.h2
-rw-r--r--storage/innobase/include/sync0types.h4
-rw-r--r--storage/innobase/log/log0log.cc64
-rw-r--r--storage/innobase/log/log0recv.cc48
-rw-r--r--storage/innobase/mtr/mtr0mtr.cc28
-rw-r--r--storage/innobase/srv/srv0mon.cc12
-rw-r--r--storage/innobase/srv/srv0srv.cc4
-rw-r--r--storage/innobase/srv/srv0start.cc12
-rw-r--r--storage/innobase/sync/sync0debug.cc9
15 files changed, 149 insertions, 183 deletions
diff --git a/extra/mariabackup/xtrabackup.cc b/extra/mariabackup/xtrabackup.cc
index c05677b8810..b63e50474ca 100644
--- a/extra/mariabackup/xtrabackup.cc
+++ b/extra/mariabackup/xtrabackup.cc
@@ -2711,7 +2711,7 @@ static bool xtrabackup_copy_logfile(bool last = false)
xtrabackup_io_throttling();
- log_mutex_enter();
+ mysql_mutex_lock(&log_sys.mutex);
lsn_t lsn= start_lsn;
for (int retries= 0; retries < 100; retries++) {
if (log_sys.log.read_log_seg(&lsn, end_lsn)
@@ -2735,7 +2735,7 @@ static bool xtrabackup_copy_logfile(bool last = false)
mutex_exit(&recv_sys.mutex);
}
- log_mutex_exit();
+ mysql_mutex_unlock(&log_sys.mutex);
if (!start_lsn) {
const char *reason = recv_sys.found_corrupt_log
@@ -2795,10 +2795,10 @@ static os_thread_ret_t DECLARE_THREAD(log_copying_thread)(void*)
break;
}
- log_mutex_enter();
+ mysql_mutex_lock(&log_sys.mutex);
bool completed = metadata_to_lsn
&& metadata_to_lsn <= log_copy_scanned_lsn;
- log_mutex_exit();
+ mysql_mutex_unlock(&log_sys.mutex);
if (completed) {
break;
}
@@ -3848,7 +3848,7 @@ static bool xtrabackup_backup_low()
{
ulint max_cp_field;
- log_mutex_enter();
+ mysql_mutex_lock(&log_sys.mutex);
if (recv_find_max_checkpoint(&max_cp_field) == DB_SUCCESS
&& log_sys.log.format != 0) {
@@ -3865,7 +3865,7 @@ static bool xtrabackup_backup_low()
} else {
msg("Error: recv_find_max_checkpoint() failed.");
}
- log_mutex_exit();
+ mysql_mutex_unlock(&log_sys.mutex);
}
stop_backup_threads();
@@ -4037,20 +4037,20 @@ fail:
/* get current checkpoint_lsn */
/* Look for the latest checkpoint from any of the log groups */
- log_mutex_enter();
+ mysql_mutex_lock(&log_sys.mutex);
reread_log_header:
dberr_t err = recv_find_max_checkpoint(&max_cp_field);
if (err != DB_SUCCESS) {
msg("Error: cannot read redo log header");
- log_mutex_exit();
+ mysql_mutex_unlock(&log_sys.mutex);
goto fail;
}
if (log_sys.log.format == 0) {
msg("Error: cannot process redo log before MariaDB 10.2.2");
- log_mutex_exit();
+ mysql_mutex_unlock(&log_sys.mutex);
goto fail;
}
@@ -4067,7 +4067,7 @@ reread_log_header:
!= mach_read_from_8(buf + LOG_CHECKPOINT_OFFSET))
goto reread_log_header;
- log_mutex_exit();
+ mysql_mutex_unlock(&log_sys.mutex);
xtrabackup_init_datasinks();
@@ -4603,7 +4603,7 @@ xb_delta_open_matching_space(
return OS_FILE_CLOSED;
}
- log_mutex_enter();
+ mysql_mutex_lock(&log_sys.mutex);
if (!fil_is_user_tablespace_id(info.space_id)) {
found:
/* open the file and return its handle */
@@ -4616,7 +4616,7 @@ found:
msg("mariabackup: Cannot open file %s\n", real_name);
}
exit:
- log_mutex_exit();
+ mysql_mutex_unlock(&log_sys.mutex);
return file;
}
diff --git a/storage/innobase/buf/buf0flu.cc b/storage/innobase/buf/buf0flu.cc
index 22b5bec0520..cc2f4c36fa4 100644
--- a/storage/innobase/buf/buf0flu.cc
+++ b/storage/innobase/buf/buf0flu.cc
@@ -132,7 +132,7 @@ static void buf_flush_validate_skip()
void buf_flush_insert_into_flush_list(buf_block_t* block, lsn_t lsn)
{
mysql_mutex_assert_not_owner(&buf_pool.mutex);
- ut_ad(log_flush_order_mutex_own());
+ mysql_mutex_assert_owner(&log_sys.flush_order_mutex);
ut_ad(lsn);
mysql_mutex_lock(&buf_pool.flush_list_mutex);
@@ -1564,7 +1564,7 @@ ulint buf_flush_lists(ulint max_n, lsn_t lsn)
static bool log_checkpoint_low(lsn_t oldest_lsn, lsn_t end_lsn)
{
ut_ad(!srv_read_only_mode);
- ut_ad(log_mutex_own());
+ mysql_mutex_assert_owner(&log_sys.mutex);
ut_ad(oldest_lsn <= end_lsn);
ut_ad(end_lsn == log_sys.get_lsn());
ut_ad(!recv_no_log_write);
@@ -1581,7 +1581,7 @@ static bool log_checkpoint_low(lsn_t oldest_lsn, lsn_t end_lsn)
{
/* Do nothing, because nothing was logged (other than a
FILE_CHECKPOINT record) since the previous checkpoint. */
- log_mutex_exit();
+ mysql_mutex_unlock(&log_sys.mutex);
return true;
}
@@ -1602,12 +1602,12 @@ static bool log_checkpoint_low(lsn_t oldest_lsn, lsn_t end_lsn)
{
flush_lsn= log_sys.get_lsn();
ut_ad(flush_lsn >= end_lsn + SIZE_OF_FILE_CHECKPOINT);
- log_mutex_exit();
+ mysql_mutex_unlock(&log_sys.mutex);
log_write_up_to(flush_lsn, true, true);
- log_mutex_enter();
+ mysql_mutex_lock(&log_sys.mutex);
if (log_sys.last_checkpoint_lsn >= oldest_lsn)
{
- log_mutex_exit();
+ mysql_mutex_unlock(&log_sys.mutex);
return true;
}
}
@@ -1619,13 +1619,13 @@ static bool log_checkpoint_low(lsn_t oldest_lsn, lsn_t end_lsn)
if (log_sys.n_pending_checkpoint_writes)
{
/* A checkpoint write is running */
- log_mutex_exit();
+ mysql_mutex_unlock(&log_sys.mutex);
return false;
}
log_sys.next_checkpoint_lsn= oldest_lsn;
log_write_checkpoint_info(end_lsn);
- ut_ad(!log_mutex_own());
+ mysql_mutex_assert_not_owner(&log_sys.mutex);
return true;
}
@@ -1649,13 +1649,13 @@ static bool log_checkpoint()
fil_flush_file_spaces();
}
- log_mutex_enter();
+ mysql_mutex_lock(&log_sys.mutex);
const lsn_t end_lsn= log_sys.get_lsn();
- log_flush_order_mutex_enter();
+ mysql_mutex_lock(&log_sys.flush_order_mutex);
mysql_mutex_lock(&buf_pool.flush_list_mutex);
const lsn_t oldest_lsn= buf_pool.get_oldest_modification(end_lsn);
mysql_mutex_unlock(&buf_pool.flush_list_mutex);
- log_flush_order_mutex_exit();
+ mysql_mutex_unlock(&log_sys.flush_order_mutex);
return log_checkpoint_low(oldest_lsn, end_lsn);
}
@@ -1672,7 +1672,7 @@ ATTRIBUTE_COLD void buf_flush_wait_flushed(lsn_t sync_lsn)
{
ut_ad(sync_lsn);
ut_ad(sync_lsn < LSN_MAX);
- ut_ad(!log_mutex_own());
+ mysql_mutex_assert_not_owner(&log_sys.mutex);
ut_ad(!srv_read_only_mode);
if (recv_recovery_is_on())
@@ -1732,7 +1732,7 @@ ATTRIBUTE_COLD void buf_flush_wait_flushed(lsn_t sync_lsn)
@param lsn buf_pool.get_oldest_modification(LSN_MAX) target */
void buf_flush_ahead(lsn_t lsn)
{
- ut_ad(!log_mutex_own());
+ mysql_mutex_assert_not_owner(&log_sys.mutex);
ut_ad(!srv_read_only_mode);
if (recv_recovery_is_on())
@@ -1792,12 +1792,12 @@ ATTRIBUTE_COLD static void buf_flush_sync_for_checkpoint(lsn_t lsn)
fil_flush_file_spaces();
}
- log_mutex_enter();
+ mysql_mutex_lock(&log_sys.mutex);
const lsn_t newest_lsn= log_sys.get_lsn();
- log_flush_order_mutex_enter();
+ mysql_mutex_lock(&log_sys.flush_order_mutex);
mysql_mutex_lock(&buf_pool.flush_list_mutex);
lsn_t measure= buf_pool.get_oldest_modification(0);
- log_flush_order_mutex_exit();
+ mysql_mutex_unlock(&log_sys.flush_order_mutex);
const lsn_t checkpoint_lsn= measure ? measure : newest_lsn;
if (checkpoint_lsn > log_sys.last_checkpoint_lsn + SIZE_OF_FILE_CHECKPOINT)
@@ -1809,12 +1809,12 @@ ATTRIBUTE_COLD static void buf_flush_sync_for_checkpoint(lsn_t lsn)
}
else
{
- log_mutex_exit();
+ mysql_mutex_unlock(&log_sys.mutex);
if (!measure)
measure= LSN_MAX;
}
- ut_ad(!log_mutex_own());
+ mysql_mutex_assert_not_owner(&log_sys.mutex);
/* After attempting log checkpoint, check if we have reached our target. */
const lsn_t target= buf_flush_sync_lsn;
diff --git a/storage/innobase/fil/fil0fil.cc b/storage/innobase/fil/fil0fil.cc
index 97595909f24..d234fed4e89 100644
--- a/storage/innobase/fil/fil0fil.cc
+++ b/storage/innobase/fil/fil0fil.cc
@@ -885,10 +885,10 @@ fil_space_free(
}
if (!recv_recovery_is_on()) {
- log_mutex_enter();
+ mysql_mutex_lock(&log_sys.mutex);
}
- ut_ad(log_mutex_own());
+ mysql_mutex_assert_owner(&log_sys.mutex);
if (space->max_lsn != 0) {
ut_d(space->max_lsn = 0);
@@ -896,7 +896,7 @@ fil_space_free(
}
if (!recv_recovery_is_on()) {
- log_mutex_exit();
+ mysql_mutex_unlock(&log_sys.mutex);
}
fil_space_free_low(space);
@@ -1916,14 +1916,14 @@ dberr_t fil_delete_tablespace(ulint id, bool if_exists,
}
mutex_exit(&fil_system.mutex);
- log_mutex_enter();
+ mysql_mutex_lock(&log_sys.mutex);
if (space->max_lsn != 0) {
ut_d(space->max_lsn = 0);
UT_LIST_REMOVE(fil_system.named_spaces, space);
}
- log_mutex_exit();
+ mysql_mutex_unlock(&log_sys.mutex);
fil_space_free_low(space);
if (!os_file_delete(innodb_data_file_key, path)
@@ -2204,11 +2204,11 @@ fil_rename_tablespace(
if (!recv_recovery_is_on()) {
fil_name_write_rename(id, old_file_name, new_file_name);
- log_mutex_enter();
+ mysql_mutex_lock(&log_sys.mutex);
}
/* log_sys.mutex is above fil_system.mutex in the latching order */
- ut_ad(log_mutex_own());
+ mysql_mutex_assert_owner(&log_sys.mutex);
mutex_enter(&fil_system.mutex);
space->release();
ut_ad(space->name == old_space_name);
@@ -2230,7 +2230,7 @@ skip_second_rename:
}
if (!recv_recovery_is_on()) {
- log_mutex_exit();
+ mysql_mutex_unlock(&log_sys.mutex);
}
ut_ad(space->name == old_space_name);
@@ -3667,7 +3667,7 @@ void
fil_names_dirty(
fil_space_t* space)
{
- ut_ad(log_mutex_own());
+ mysql_mutex_assert_owner(&log_sys.mutex);
ut_ad(recv_recovery_is_on());
ut_ad(log_sys.get_lsn() != 0);
ut_ad(space->max_lsn == 0);
@@ -3683,7 +3683,7 @@ fil_names_clear().
@param[in,out] space tablespace */
void fil_names_dirty_and_write(fil_space_t* space)
{
- ut_ad(log_mutex_own());
+ mysql_mutex_assert_owner(&log_sys.mutex);
ut_d(fil_space_validate_for_mtr_commit(space));
ut_ad(space->max_lsn == log_sys.get_lsn());
@@ -3724,7 +3724,7 @@ fil_names_clear(
mtr_checkpoint_size = 75 * 1024;
);
- ut_ad(log_mutex_own());
+ mysql_mutex_assert_owner(&log_sys.mutex);
ut_ad(lsn);
mtr.start();
diff --git a/storage/innobase/include/fil0fil.h b/storage/innobase/include/fil0fil.h
index a980c21ead0..e645ce31232 100644
--- a/storage/innobase/include/fil0fil.h
+++ b/storage/innobase/include/fil0fil.h
@@ -1780,7 +1780,7 @@ for the first time since the latest fil_names_clear().
@return whether any FILE_MODIFY record was written */
inline bool fil_names_write_if_was_clean(fil_space_t* space)
{
- ut_ad(log_mutex_own());
+ mysql_mutex_assert_owner(&log_sys.mutex);
if (space == NULL) {
return(false);
diff --git a/storage/innobase/include/log0log.h b/storage/innobase/include/log0log.h
index b82857a8e0f..5a26b4baf7d 100644
--- a/storage/innobase/include/log0log.h
+++ b/storage/innobase/include/log0log.h
@@ -35,7 +35,6 @@ Created 12/9/1995 Heikki Tuuri
#define log0log_h
#include "log0types.h"
-#include "ut0mutex.h"
#include "os0file.h"
#include "span.h"
#include <atomic>
@@ -127,7 +126,7 @@ ATTRIBUTE_COLD void log_make_checkpoint();
/** Make a checkpoint at the latest lsn on shutdown. */
ATTRIBUTE_COLD void logs_empty_and_mark_files_at_shutdown();
-/** Write checkpoint info to the log header and invoke log_mutex_exit().
+/** Write checkpoint info to the log header and release log_sys.mutex.
@param[in] end_lsn start LSN of the FILE_CHECKPOINT mini-transaction */
ATTRIBUTE_COLD void log_write_checkpoint_info(lsn_t end_lsn);
@@ -349,9 +348,6 @@ or the MySQL version that created the redo log file. */
header */
#define LOG_FILE_HDR_SIZE (4 * OS_FILE_LOG_BLOCK_SIZE)
-typedef ib_mutex_t LogSysMutex;
-typedef ib_mutex_t FlushOrderMutex;
-
/** Memory mapped file */
class mapped_file_t
{
@@ -471,7 +467,7 @@ struct log_t{
private:
/** The log sequence number of the last change of durable InnoDB files */
- MY_ALIGNED(CACHE_LINE_SIZE)
+ MY_ALIGNED(CPU_LEVEL1_DCACHE_LINESIZE)
std::atomic<lsn_t> lsn;
/** the first guaranteed-durable log sequence number */
std::atomic<lsn_t> flushed_to_disk_lsn;
@@ -480,10 +476,8 @@ private:
This must hold if lsn - last_checkpoint_lsn > max_checkpoint_age. */
std::atomic<bool> check_flush_or_checkpoint_;
public:
-
/** mutex protecting the log */
- MY_ALIGNED(CACHE_LINE_SIZE)
- LogSysMutex mutex;
+ MY_ALIGNED(CPU_LEVEL1_DCACHE_LINESIZE) mysql_mutex_t mutex;
/** first free offset within the log buffer in use */
size_t buf_free;
/** recommended maximum size of buf, after which the buffer is flushed */
@@ -492,8 +486,7 @@ public:
dirty blocks in the list. The idea behind this mutex is to be able
to release log_sys.mutex during mtr_commit and still ensure that
insertions in the flush_list happen in the LSN order. */
- MY_ALIGNED(CACHE_LINE_SIZE) FlushOrderMutex
- log_flush_order_mutex;
+ MY_ALIGNED(CPU_LEVEL1_DCACHE_LINESIZE) mysql_mutex_t flush_order_mutex;
/** log_buffer, append data here */
byte *buf;
/** log_buffer, writing data to file from this buffer.
@@ -736,7 +729,9 @@ inline lsn_t log_t::file::calc_lsn_offset(lsn_t lsn) const
ut_ad(this == &log_sys.log);
/* The lsn parameters are updated while holding both the mutexes
and it is ok to have either of them while reading */
- ut_ad(log_sys.mutex.is_owned() || log_write_lock_own());
+#ifdef SAFE_MUTEX
+ ut_ad(mysql_mutex_is_owner(&log_sys.mutex) || log_write_lock_own());
+#endif /* SAFE_MUTEX */
const lsn_t size = capacity();
lsn_t l= lsn - this->lsn;
if (longlong(l) < 0) {
@@ -749,41 +744,23 @@ inline lsn_t log_t::file::calc_lsn_offset(lsn_t lsn) const
return l + LOG_FILE_HDR_SIZE * (1 + l / (file_size - LOG_FILE_HDR_SIZE));
}
-inline void log_t::file::set_lsn(lsn_t a_lsn) {
- ut_ad(log_sys.mutex.is_owned() || log_write_lock_own());
- lsn = a_lsn;
+inline void log_t::file::set_lsn(lsn_t a_lsn)
+{
+#ifdef SAFE_MUTEX
+ ut_ad(mysql_mutex_is_owner(&log_sys.mutex) || log_write_lock_own());
+#endif /* SAFE_MUTEX */
+ lsn= a_lsn;
}
-inline void log_t::file::set_lsn_offset(lsn_t a_lsn) {
- ut_ad(log_sys.mutex.is_owned() || log_write_lock_own());
- ut_ad((lsn % OS_FILE_LOG_BLOCK_SIZE) == (a_lsn % OS_FILE_LOG_BLOCK_SIZE));
- lsn_offset = a_lsn;
+inline void log_t::file::set_lsn_offset(lsn_t a_lsn)
+{
+#ifdef SAFE_MUTEX
+ ut_ad(mysql_mutex_is_owner(&log_sys.mutex) || log_write_lock_own());
+#endif /* SAFE_MUTEX */
+ ut_ad((lsn % OS_FILE_LOG_BLOCK_SIZE) == (a_lsn % OS_FILE_LOG_BLOCK_SIZE));
+ lsn_offset= a_lsn;
}
-/** Test if flush order mutex is owned. */
-#define log_flush_order_mutex_own() \
- mutex_own(&log_sys.log_flush_order_mutex)
-
-/** Acquire the flush order mutex. */
-#define log_flush_order_mutex_enter() do { \
- mutex_enter(&log_sys.log_flush_order_mutex); \
-} while (0)
-/** Release the flush order mutex. */
-# define log_flush_order_mutex_exit() do { \
- mutex_exit(&log_sys.log_flush_order_mutex); \
-} while (0)
-
-/** Test if log sys mutex is owned. */
-#define log_mutex_own() mutex_own(&log_sys.mutex)
-
-
-/** Acquire the log sys mutex. */
-#define log_mutex_enter() mutex_enter(&log_sys.mutex)
-
-
-/** Release the log sys mutex. */
-#define log_mutex_exit() mutex_exit(&log_sys.mutex)
-
#include "log0log.ic"
#endif
diff --git a/storage/innobase/include/log0log.ic b/storage/innobase/include/log0log.ic
index d7232bc5944..d503e3ffec9 100644
--- a/storage/innobase/include/log0log.ic
+++ b/storage/innobase/include/log0log.ic
@@ -255,7 +255,7 @@ log_reserve_and_write_fast(
ulint len,
lsn_t* start_lsn)
{
- ut_ad(log_mutex_own());
+ mysql_mutex_assert_owner(&log_sys.mutex);
ut_ad(len > 0);
const ulint data_len = len
diff --git a/storage/innobase/include/mtr0mtr.h b/storage/innobase/include/mtr0mtr.h
index 72eadc60ae8..cf8f37c3fa5 100644
--- a/storage/innobase/include/mtr0mtr.h
+++ b/storage/innobase/include/mtr0mtr.h
@@ -106,7 +106,7 @@ struct mtr_t {
/** Commit a mini-transaction that did not modify any pages,
but generated some redo log on a higher level, such as
FILE_MODIFY records and an optional FILE_CHECKPOINT marker.
- The caller must invoke log_mutex_enter() and log_mutex_exit().
+ The caller must hold log_sys.mutex.
This is to be used at log_checkpoint().
@param checkpoint_lsn the log sequence number of a checkpoint, or 0 */
void commit_files(lsn_t checkpoint_lsn= 0);
diff --git a/storage/innobase/include/sync0types.h b/storage/innobase/include/sync0types.h
index f0168bd1c27..feb1e3b45ef 100644
--- a/storage/innobase/include/sync0types.h
+++ b/storage/innobase/include/sync0types.h
@@ -199,8 +199,6 @@ enum latch_level_t {
SYNC_FTS_OPTIMIZE,
SYNC_FTS_CACHE_INIT,
SYNC_RECV,
- SYNC_LOG_FLUSH_ORDER,
- SYNC_LOG,
SYNC_PURGE_QUEUE,
SYNC_TRX_SYS_HEADER,
SYNC_TRX,
@@ -271,8 +269,6 @@ enum latch_id_t {
LATCH_ID_IBUF_BITMAP,
LATCH_ID_IBUF,
LATCH_ID_IBUF_PESSIMISTIC_INSERT,
- LATCH_ID_LOG_SYS,
- LATCH_ID_LOG_FLUSH_ORDER,
LATCH_ID_PURGE_SYS_PQ,
LATCH_ID_RECALC_POOL,
LATCH_ID_RECV_SYS,
diff --git a/storage/innobase/log/log0log.cc b/storage/innobase/log/log0log.cc
index 472e39130c3..e65498321e4 100644
--- a/storage/innobase/log/log0log.cc
+++ b/storage/innobase/log/log0log.cc
@@ -50,6 +50,7 @@ Created 12/9/1995 Heikki Tuuri
#include "trx0trx.h"
#include "trx0roll.h"
#include "srv0mon.h"
+#include "sync0sync.h"
#include "buf0dump.h"
#include "log0sync.h"
@@ -83,11 +84,11 @@ void log_buffer_extend(ulong len)
(ut_malloc_dontdump(new_buf_size, PSI_INSTRUMENT_ME));
TRASH_ALLOC(new_flush_buf, new_buf_size);
- log_mutex_enter();
+ mysql_mutex_lock(&log_sys.mutex);
if (len <= srv_log_buffer_size) {
/* Already extended enough by the others */
- log_mutex_exit();
+ mysql_mutex_unlock(&log_sys.mutex);
ut_free_dodump(new_buf, new_buf_size);
ut_free_dodump(new_flush_buf, new_buf_size);
return;
@@ -109,7 +110,7 @@ void log_buffer_extend(ulong len)
log_sys.max_buf_free = new_buf_size / LOG_BUF_FLUSH_RATIO
- LOG_BUF_FLUSH_MARGIN;
- log_mutex_exit();
+ mysql_mutex_unlock(&log_sys.mutex);
ut_free_dodump(old_buf, old_buf_size);
ut_free_dodump(old_flush_buf, old_buf_size);
@@ -158,14 +159,14 @@ log_set_capacity(ulonglong file_size)
margin = smallest_capacity - free;
margin = margin - margin / 10; /* Add still some extra safety */
- log_mutex_enter();
+ mysql_mutex_lock(&log_sys.mutex);
log_sys.log_capacity = smallest_capacity;
log_sys.max_modified_age_async = margin - margin / 8;
log_sys.max_checkpoint_age = margin;
- log_mutex_exit();
+ mysql_mutex_unlock(&log_sys.mutex);
return(true);
}
@@ -177,8 +178,8 @@ void log_t::create()
ut_ad(!is_initialised());
m_initialised= true;
- mutex_create(LATCH_ID_LOG_SYS, &mutex);
- mutex_create(LATCH_ID_LOG_FLUSH_ORDER, &log_flush_order_mutex);
+ mysql_mutex_init(log_sys_mutex_key, &mutex, nullptr);
+ mysql_mutex_init(log_flush_order_mutex_key, &flush_order_mutex, nullptr);
/* Start the lsn from one log block from zero: this way every
log record has a non-zero start lsn, a fact which we will use */
@@ -622,7 +623,7 @@ loop:
}
/** Flush the recently written changes to the log file.
-and invoke log_mutex_enter(). */
+and invoke mysql_mutex_lock(&log_sys.mutex). */
static void log_write_flush_to_disk_low(lsn_t lsn)
{
if (!log_sys.log.writes_are_durable())
@@ -638,7 +639,7 @@ static inline
void
log_buffer_switch()
{
- ut_ad(log_mutex_own());
+ mysql_mutex_assert_owner(&log_sys.mutex);
ut_ad(log_write_lock_own());
size_t area_end = ut_calc_align<size_t>(
@@ -662,18 +663,18 @@ which is the "write" part of log_write_up_to().
This function does not flush anything.
-Note : the caller must have log_mutex locked, and this
+Note : the caller must have log_sys.mutex locked, and this
mutex is released in the function.
*/
static void log_write(bool rotate_key)
{
- ut_ad(log_mutex_own());
+ mysql_mutex_assert_owner(&log_sys.mutex);
ut_ad(!recv_no_log_write);
lsn_t write_lsn;
if (log_sys.buf_free == log_sys.buf_next_to_write) {
/* Nothing to write */
- log_mutex_exit();
+ mysql_mutex_unlock(&log_sys.mutex);
return;
}
@@ -710,7 +711,7 @@ static void log_write(bool rotate_key)
log_sys.log.set_fields(log_sys.write_lsn);
- log_mutex_exit();
+ mysql_mutex_unlock(&log_sys.mutex);
/* Erase the end of the last log block. */
memset(write_buf + end_offset, 0,
~end_offset & (OS_FILE_LOG_BLOCK_SIZE - 1));
@@ -801,7 +802,7 @@ void log_write_up_to(lsn_t lsn, bool flush_to_disk, bool rotate_key)
if (write_lock.acquire(lsn) == group_commit_lock::ACQUIRED)
{
- log_mutex_enter();
+ mysql_mutex_lock(&log_sys.mutex);
lsn_t write_lsn= log_sys.get_lsn();
write_lock.set_pending(write_lsn);
@@ -844,25 +845,24 @@ ATTRIBUTE_COLD static void log_flush_margin()
{
lsn_t lsn = 0;
- log_mutex_enter();
+ mysql_mutex_lock(&log_sys.mutex);
if (log_sys.buf_free > log_sys.max_buf_free) {
/* We can write during flush */
lsn = log_sys.get_lsn();
}
- log_mutex_exit();
+ mysql_mutex_unlock(&log_sys.mutex);
if (lsn) {
log_write_up_to(lsn, false);
}
}
-/** Write checkpoint info to the log header and invoke log_mutex_exit().
+/** Write checkpoint info to the log header and release log_sys.mutex.
@param[in] end_lsn start LSN of the FILE_CHECKPOINT mini-transaction */
ATTRIBUTE_COLD void log_write_checkpoint_info(lsn_t end_lsn)
{
- ut_ad(log_mutex_own());
ut_ad(!srv_read_only_mode);
ut_ad(end_lsn == 0 || end_lsn >= log_sys.next_checkpoint_lsn);
ut_ad(end_lsn <= log_sys.get_lsn());
@@ -898,7 +898,7 @@ ATTRIBUTE_COLD void log_write_checkpoint_info(lsn_t end_lsn)
++log_sys.n_pending_checkpoint_writes;
- log_mutex_exit();
+ mysql_mutex_unlock(&log_sys.mutex);
/* Note: We alternate the physical place of the checkpoint info.
See the (next_checkpoint_no & 1) below. */
@@ -909,7 +909,7 @@ ATTRIBUTE_COLD void log_write_checkpoint_info(lsn_t end_lsn)
log_sys.log.flush();
- log_mutex_enter();
+ mysql_mutex_lock(&log_sys.mutex);
--log_sys.n_pending_checkpoint_writes;
ut_ad(log_sys.n_pending_checkpoint_writes == 0);
@@ -927,7 +927,7 @@ ATTRIBUTE_COLD void log_write_checkpoint_info(lsn_t end_lsn)
DBUG_EXECUTE_IF("crash_after_checkpoint", DBUG_SUICIDE(););
- log_mutex_exit();
+ mysql_mutex_unlock(&log_sys.mutex);
}
/****************************************************************//**
@@ -939,13 +939,13 @@ ATTRIBUTE_COLD static void log_checkpoint_margin()
{
while (log_sys.check_flush_or_checkpoint())
{
- log_mutex_enter();
+ mysql_mutex_lock(&log_sys.mutex);
ut_ad(!recv_no_log_write);
if (!log_sys.check_flush_or_checkpoint())
{
func_exit:
- log_mutex_exit();
+ mysql_mutex_unlock(&log_sys.mutex);
return;
}
@@ -958,7 +958,7 @@ func_exit:
goto func_exit;
}
- log_mutex_exit();
+ mysql_mutex_unlock(&log_sys.mutex);
/* We must wait to prevent the tail of the log overwriting the head. */
buf_flush_wait_flushed(std::min(sync_lsn, checkpoint + (1U << 20)));
@@ -1108,10 +1108,10 @@ wait_suspend_loop:
}
if (log_sys.is_initialised()) {
- log_mutex_enter();
+ mysql_mutex_lock(&log_sys.mutex);
const ulint n_write = log_sys.n_pending_checkpoint_writes;
const ulint n_flush = log_sys.pending_flushes;
- log_mutex_exit();
+ mysql_mutex_unlock(&log_sys.mutex);
if (n_write || n_flush) {
if (srv_print_verbose_log && count > 600) {
@@ -1154,7 +1154,7 @@ wait_suspend_loop:
"ensuring dirty buffer pool are written to log");
log_make_checkpoint();
- log_mutex_enter();
+ mysql_mutex_lock(&log_sys.mutex);
lsn = log_sys.get_lsn();
@@ -1163,7 +1163,7 @@ wait_suspend_loop:
+ SIZE_OF_FILE_CHECKPOINT;
ut_ad(lsn >= log_sys.last_checkpoint_lsn);
- log_mutex_exit();
+ mysql_mutex_unlock(&log_sys.mutex);
if (lsn_changed) {
goto loop;
@@ -1220,7 +1220,7 @@ log_print(
double time_elapsed;
time_t current_time;
- log_mutex_enter();
+ mysql_mutex_lock(&log_sys.mutex);
const lsn_t lsn= log_sys.get_lsn();
mysql_mutex_lock(&buf_pool.flush_list_mutex);
@@ -1260,7 +1260,7 @@ log_print(
log_sys.n_log_ios_old = log_sys.n_log_ios;
log_sys.last_printout_time = current_time;
- log_mutex_exit();
+ mysql_mutex_unlock(&log_sys.mutex);
}
/**********************************************************************//**
@@ -1286,8 +1286,8 @@ void log_t::close()
ut_free_dodump(flush_buf, srv_log_buffer_size);
flush_buf = NULL;
- mutex_free(&mutex);
- mutex_free(&log_flush_order_mutex);
+ mysql_mutex_destroy(&mutex);
+ mysql_mutex_destroy(&flush_order_mutex);
recv_sys.close();
}
diff --git a/storage/innobase/log/log0recv.cc b/storage/innobase/log/log0recv.cc
index 8eeadc8e805..c5cf21bf59a 100644
--- a/storage/innobase/log/log0recv.cc
+++ b/storage/innobase/log/log0recv.cc
@@ -1086,7 +1086,7 @@ bool log_t::file::read_log_seg(lsn_t* start_lsn, lsn_t end_lsn)
{
ulint len;
bool success = true;
- ut_ad(log_sys.mutex.is_owned());
+ mysql_mutex_assert_owner(&log_sys.mutex);
ut_ad(!(*start_lsn % OS_FILE_LOG_BLOCK_SIZE));
ut_ad(!(end_lsn % OS_FILE_LOG_BLOCK_SIZE));
byte* buf = log_sys.buf;
@@ -1209,7 +1209,7 @@ recv_synchronize_groups()
if (!srv_read_only_mode) {
log_write_checkpoint_info(0);
- log_mutex_enter();
+ mysql_mutex_lock(&log_sys.mutex);
}
}
@@ -1739,7 +1739,7 @@ static void store_freed_or_init_rec(page_id_t page_id, bool freed)
or corruption was noticed */
bool recv_sys_t::parse(lsn_t checkpoint_lsn, store_t *store, bool apply)
{
- ut_ad(log_mutex_own());
+ mysql_mutex_assert_owner(&log_sys.mutex);
ut_ad(mutex_own(&mutex));
ut_ad(parse_start_lsn);
ut_ad(log_sys.is_physical());
@@ -2378,9 +2378,9 @@ set_start_lsn:
}
buf_block_modify_clock_inc(block);
- log_flush_order_mutex_enter();
+ mysql_mutex_lock(&log_sys.flush_order_mutex);
buf_flush_note_modification(block, start_lsn, end_lsn);
- log_flush_order_mutex_exit();
+ mysql_mutex_unlock(&log_sys.flush_order_mutex);
} else if (free_page && init) {
/* There have been no operations that modify the page.
Any buffered changes must not be merged. A subsequent
@@ -2599,7 +2599,9 @@ void recv_sys_t::apply(bool last_batch)
mutex_enter(&mutex);
}
- ut_ad(!last_batch == log_mutex_own());
+#ifdef SAFE_MUTEX
+ DBUG_ASSERT(!last_batch == mysql_mutex_is_owner(&log_sys.mutex));
+#endif /* SAFE_MUTEX */
recv_no_ibuf_operations = !last_batch ||
srv_operation == SRV_OPERATION_RESTORE ||
@@ -2703,10 +2705,10 @@ next_page:
else
{
mlog_init.reset();
- log_mutex_exit();
+ mysql_mutex_unlock(&log_sys.mutex);
}
- ut_ad(!log_mutex_own());
+ mysql_mutex_assert_not_owner(&log_sys.mutex);
mutex_exit(&mutex);
/* Instead of flushing, last_batch could sort the buf_pool.flush_list
@@ -2716,7 +2718,7 @@ next_page:
if (!last_batch)
{
buf_pool_invalidate();
- log_mutex_enter();
+ mysql_mutex_lock(&log_sys.mutex);
}
mutex_enter(&mutex);
@@ -3305,14 +3307,14 @@ recv_recovery_from_checkpoint_start(lsn_t flush_lsn)
recv_sys.recovery_on = true;
- log_mutex_enter();
+ mysql_mutex_lock(&log_sys.mutex);
err = recv_find_max_checkpoint(&max_cp_field);
if (err != DB_SUCCESS) {
recv_sys.recovered_lsn = log_sys.get_lsn();
- log_mutex_exit();
+ mysql_mutex_unlock(&log_sys.mutex);
return(err);
}
@@ -3336,7 +3338,7 @@ recv_recovery_from_checkpoint_start(lsn_t flush_lsn)
contiguous_lsn = checkpoint_lsn;
switch (log_sys.log.format) {
case 0:
- log_mutex_exit();
+ mysql_mutex_unlock(&log_sys.mutex);
return DB_SUCCESS;
default:
if (end_lsn == 0) {
@@ -3347,7 +3349,7 @@ recv_recovery_from_checkpoint_start(lsn_t flush_lsn)
break;
}
recv_sys.found_corrupt_log = true;
- log_mutex_exit();
+ mysql_mutex_unlock(&log_sys.mutex);
return(DB_ERROR);
}
@@ -3365,12 +3367,12 @@ recv_recovery_from_checkpoint_start(lsn_t flush_lsn)
ut_ad(!recv_sys.found_corrupt_fs);
if (srv_read_only_mode && recv_needed_recovery) {
- log_mutex_exit();
+ mysql_mutex_unlock(&log_sys.mutex);
return(DB_READ_ONLY);
}
if (recv_sys.found_corrupt_log && !srv_force_recovery) {
- log_mutex_exit();
+ mysql_mutex_unlock(&log_sys.mutex);
ib::warn() << "Log scan aborted at LSN " << contiguous_lsn;
return(DB_ERROR);
}
@@ -3378,7 +3380,7 @@ recv_recovery_from_checkpoint_start(lsn_t flush_lsn)
if (recv_sys.mlog_checkpoint_lsn == 0) {
lsn_t scan_lsn = log_sys.log.scanned_lsn;
if (!srv_read_only_mode && scan_lsn != checkpoint_lsn) {
- log_mutex_exit();
+ mysql_mutex_unlock(&log_sys.mutex);
ib::error err;
err << "Missing FILE_CHECKPOINT";
if (end_lsn) {
@@ -3397,7 +3399,7 @@ recv_recovery_from_checkpoint_start(lsn_t flush_lsn)
if ((recv_sys.found_corrupt_log && !srv_force_recovery)
|| recv_sys.found_corrupt_fs) {
- log_mutex_exit();
+ mysql_mutex_unlock(&log_sys.mutex);
return(DB_ERROR);
}
}
@@ -3438,7 +3440,7 @@ completed:
if (srv_read_only_mode) {
ib::error() << "innodb_read_only"
" prevents crash recovery";
- log_mutex_exit();
+ mysql_mutex_unlock(&log_sys.mutex);
return(DB_READ_ONLY);
}
@@ -3460,7 +3462,7 @@ completed:
rescan, missing_tablespace);
if (err != DB_SUCCESS) {
- log_mutex_exit();
+ mysql_mutex_unlock(&log_sys.mutex);
return(err);
}
@@ -3490,7 +3492,7 @@ completed:
rescan, missing_tablespace);
if (err != DB_SUCCESS) {
- log_mutex_exit();
+ mysql_mutex_unlock(&log_sys.mutex);
return err;
}
@@ -3514,7 +3516,7 @@ completed:
if ((recv_sys.found_corrupt_log
&& !srv_force_recovery)
|| recv_sys.found_corrupt_fs) {
- log_mutex_exit();
+ mysql_mutex_unlock(&log_sys.mutex);
return(DB_ERROR);
}
}
@@ -3535,7 +3537,7 @@ completed:
}
if (recv_sys.recovered_lsn < checkpoint_lsn) {
- log_mutex_exit();
+ mysql_mutex_unlock(&log_sys.mutex);
ib::error() << "Recovered only to lsn:"
<< recv_sys.recovered_lsn << " checkpoint_lsn: " << checkpoint_lsn;
@@ -3573,7 +3575,7 @@ completed:
mutex_exit(&recv_sys.mutex);
- log_mutex_exit();
+ mysql_mutex_unlock(&log_sys.mutex);
recv_lsn_checks_on = true;
diff --git a/storage/innobase/mtr/mtr0mtr.cc b/storage/innobase/mtr/mtr0mtr.cc
index e04a2af92c8..dede92ad755 100644
--- a/storage/innobase/mtr/mtr0mtr.cc
+++ b/storage/innobase/mtr/mtr0mtr.cc
@@ -408,12 +408,12 @@ void mtr_t::commit()
lsns= { m_commit_lsn, false };
if (m_made_dirty)
- log_flush_order_mutex_enter();
+ mysql_mutex_lock(&log_sys.flush_order_mutex);
/* It is now safe to release the log mutex because the
flush_order mutex will ensure that we are the first one
to insert into the flush list. */
- log_mutex_exit();
+ mysql_mutex_unlock(&log_sys.mutex);
if (m_freed_pages)
{
@@ -445,7 +445,7 @@ void mtr_t::commit()
(ReleaseBlocks(lsns.first, m_commit_lsn,
m_memo)));
if (m_made_dirty)
- log_flush_order_mutex_exit();
+ mysql_mutex_unlock(&log_sys.flush_order_mutex);
m_memo.for_each_block_in_reverse(CIterate<ReleaseLatches>());
@@ -464,12 +464,12 @@ void mtr_t::commit()
/** Commit a mini-transaction that did not modify any pages,
but generated some redo log on a higher level, such as
FILE_MODIFY records and an optional FILE_CHECKPOINT marker.
-The caller must invoke log_mutex_enter() and log_mutex_exit().
+The caller must hold log_sys.mutex.
This is to be used at log_checkpoint().
@param[in] checkpoint_lsn log checkpoint LSN, or 0 */
void mtr_t::commit_files(lsn_t checkpoint_lsn)
{
- ut_ad(log_mutex_own());
+ mysql_mutex_assert_owner(&log_sys.mutex);
ut_ad(is_active());
ut_ad(!is_inside_ibuf());
ut_ad(m_log_mode == MTR_LOG_ALL);
@@ -643,7 +643,7 @@ static void log_margin_checkpoint_age(ulint len)
const ulint margin= len + extra_len;
- ut_ad(log_mutex_own());
+ mysql_mutex_assert_owner(&log_sys.mutex);
const lsn_t lsn= log_sys.get_lsn();
@@ -676,7 +676,7 @@ static lsn_t log_reserve_and_open(size_t len)
{
for (ut_d(ulint count= 0);;)
{
- ut_ad(log_mutex_own());
+ mysql_mutex_assert_owner(&log_sys.mutex);
/* Calculate an upper limit for the space the string may take in
the log buffer */
@@ -687,7 +687,7 @@ static lsn_t log_reserve_and_open(size_t len)
if (log_sys.buf_free + len_upper_limit <= srv_log_buffer_size)
break;
- log_mutex_exit();
+ mysql_mutex_unlock(&log_sys.mutex);
DEBUG_SYNC_C("log_buf_size_exceeded");
/* Not enough free space, do a write of the log buffer */
@@ -697,7 +697,7 @@ static lsn_t log_reserve_and_open(size_t len)
ut_ad(++count < 50);
- log_mutex_enter();
+ mysql_mutex_lock(&log_sys.mutex);
}
return log_sys.get_lsn();
@@ -706,7 +706,7 @@ static lsn_t log_reserve_and_open(size_t len)
/** Append data to the log buffer. */
static void log_write_low(const void *str, size_t size)
{
- ut_ad(log_mutex_own());
+ mysql_mutex_assert_owner(&log_sys.mutex);
const ulint trailer_offset= log_sys.trailer_offset();
do
@@ -758,7 +758,7 @@ static void log_write_low(const void *str, size_t size)
@return whether buffer pool flushing is needed */
static bool log_close(lsn_t lsn)
{
- ut_ad(log_mutex_own());
+ mysql_mutex_assert_owner(&log_sys.mutex);
ut_ad(lsn == log_sys.get_lsn());
byte *log_block= static_cast<byte*>(ut_align_down(log_sys.buf +
@@ -820,7 +820,7 @@ inline ulint mtr_t::prepare_write()
if (UNIV_UNLIKELY(m_log_mode != MTR_LOG_ALL)) {
ut_ad(m_log_mode == MTR_LOG_NO_REDO);
ut_ad(m_log.size() == 0);
- log_mutex_enter();
+ mysql_mutex_lock(&log_sys.mutex);
m_commit_lsn = log_sys.get_lsn();
return 0;
}
@@ -839,7 +839,7 @@ inline ulint mtr_t::prepare_write()
space = NULL;
}
- log_mutex_enter();
+ mysql_mutex_lock(&log_sys.mutex);
if (fil_names_write_if_was_clean(space)) {
len = m_log.size();
@@ -864,7 +864,7 @@ inline ulint mtr_t::prepare_write()
inline std::pair<lsn_t,bool> mtr_t::finish_write(ulint len)
{
ut_ad(m_log_mode == MTR_LOG_ALL);
- ut_ad(log_mutex_own());
+ mysql_mutex_assert_owner(&log_sys.mutex);
ut_ad(m_log.size() == len);
ut_ad(len > 0);
diff --git a/storage/innobase/srv/srv0mon.cc b/storage/innobase/srv/srv0mon.cc
index 2af29fded26..174355f992a 100644
--- a/storage/innobase/srv/srv0mon.cc
+++ b/storage/innobase/srv/srv0mon.cc
@@ -1905,23 +1905,23 @@ srv_mon_process_existing_counter(
break;
case MONITOR_PENDING_CHECKPOINT_WRITE:
- mutex_enter(&log_sys.mutex);
+ mysql_mutex_lock(&log_sys.mutex);
value = static_cast<mon_type_t>(
log_sys.n_pending_checkpoint_writes);
- mutex_exit(&log_sys.mutex);
+ mysql_mutex_unlock(&log_sys.mutex);
break;
case MONITOR_LOG_IO:
- mutex_enter(&log_sys.mutex);
+ mysql_mutex_lock(&log_sys.mutex);
value = static_cast<mon_type_t>(log_sys.n_log_ios);
- mutex_exit(&log_sys.mutex);
+ mysql_mutex_unlock(&log_sys.mutex);
break;
case MONITOR_LSN_CHECKPOINT_AGE:
- mutex_enter(&log_sys.mutex);
+ mysql_mutex_lock(&log_sys.mutex);
value = static_cast<mon_type_t>(log_sys.get_lsn()
- log_sys.last_checkpoint_lsn);
- mutex_exit(&log_sys.mutex);
+ mysql_mutex_unlock(&log_sys.mutex);
break;
case MONITOR_OVLD_BUF_OLDEST_LSN:
diff --git a/storage/innobase/srv/srv0srv.cc b/storage/innobase/srv/srv0srv.cc
index 030acc72e63..554e2043ad1 100644
--- a/storage/innobase/srv/srv0srv.cc
+++ b/storage/innobase/srv/srv0srv.cc
@@ -1281,13 +1281,13 @@ srv_export_innodb_status(void)
mutex_exit(&srv_innodb_monitor_mutex);
- log_mutex_enter();
+ mysql_mutex_lock(&log_sys.mutex);
export_vars.innodb_lsn_current = log_sys.get_lsn();
export_vars.innodb_lsn_flushed = log_sys.get_flushed_lsn();
export_vars.innodb_lsn_last_checkpoint = log_sys.last_checkpoint_lsn;
export_vars.innodb_checkpoint_max_age = static_cast<ulint>(
log_sys.max_checkpoint_age);
- log_mutex_exit();
+ mysql_mutex_unlock(&log_sys.mutex);
export_vars.innodb_checkpoint_age = static_cast<ulint>(
export_vars.innodb_lsn_current
diff --git a/storage/innobase/srv/srv0start.cc b/storage/innobase/srv/srv0start.cc
index 78b7cbb635b..b53c7888509 100644
--- a/storage/innobase/srv/srv0start.cc
+++ b/storage/innobase/srv/srv0start.cc
@@ -303,7 +303,7 @@ static dberr_t create_log_file(bool create_new_db, lsn_t lsn,
}
/* Create a log checkpoint. */
- log_mutex_enter();
+ mysql_mutex_lock(&log_sys.mutex);
if (log_sys.is_encrypted() && !log_crypt_init()) {
return DB_ERROR;
}
@@ -328,7 +328,7 @@ static dberr_t create_log_file(bool create_new_db, lsn_t lsn,
log_sys.log.write_header_durable(lsn);
- log_mutex_exit();
+ mysql_mutex_unlock(&log_sys.mutex);
log_make_checkpoint();
log_write_up_to(LSN_MAX, true);
@@ -355,12 +355,12 @@ static dberr_t create_log_file_rename(lsn_t lsn, std::string &logfile0)
ib::info() << "Renaming log file " << logfile0 << " to " << new_name;
- log_mutex_enter();
+ mysql_mutex_lock(&log_sys.mutex);
ut_ad(logfile0.size() == 2 + new_name.size());
logfile0= new_name;
dberr_t err= log_sys.log.rename(std::move(new_name));
- log_mutex_exit();
+ mysql_mutex_unlock(&log_sys.mutex);
DBUG_EXECUTE_IF("innodb_log_abort_10", err= DB_ERROR;);
@@ -910,7 +910,7 @@ static lsn_t srv_prepare_to_delete_redo_log_file(bool old_exists)
DBUG_EXECUTE_IF("innodb_log_abort_1", DBUG_RETURN(0););
DBUG_PRINT("ib_log", ("After innodb_log_abort_1"));
- log_mutex_enter();
+ mysql_mutex_lock(&log_sys.mutex);
fil_names_clear(log_sys.get_lsn(), false);
@@ -949,7 +949,7 @@ static lsn_t srv_prepare_to_delete_redo_log_file(bool old_exists)
<< " bytes; LSN=" << flushed_lsn;
}
- log_mutex_exit();
+ mysql_mutex_unlock(&log_sys.mutex);
if (flushed_lsn != log_sys.get_flushed_lsn()) {
log_write_up_to(flushed_lsn, false);
diff --git a/storage/innobase/sync/sync0debug.cc b/storage/innobase/sync/sync0debug.cc
index b809e5cb42a..a41d8a0d4f9 100644
--- a/storage/innobase/sync/sync0debug.cc
+++ b/storage/innobase/sync/sync0debug.cc
@@ -461,8 +461,6 @@ LatchDebug::LatchDebug()
LEVEL_MAP_INSERT(SYNC_FTS_OPTIMIZE);
LEVEL_MAP_INSERT(SYNC_FTS_CACHE_INIT);
LEVEL_MAP_INSERT(SYNC_RECV);
- LEVEL_MAP_INSERT(SYNC_LOG_FLUSH_ORDER);
- LEVEL_MAP_INSERT(SYNC_LOG);
LEVEL_MAP_INSERT(SYNC_PURGE_QUEUE);
LEVEL_MAP_INSERT(SYNC_TRX_SYS_HEADER);
LEVEL_MAP_INSERT(SYNC_TRX);
@@ -734,8 +732,6 @@ LatchDebug::check_order(
case SYNC_FTS_OPTIMIZE:
case SYNC_FTS_CACHE:
case SYNC_FTS_CACHE_INIT:
- case SYNC_LOG:
- case SYNC_LOG_FLUSH_ORDER:
case SYNC_SEARCH_SYS:
case SYNC_LOCK_SYS:
case SYNC_LOCK_WAIT_SYS:
@@ -1237,11 +1233,6 @@ sync_latch_meta_init()
LATCH_ADD_MUTEX(IBUF_PESSIMISTIC_INSERT, SYNC_IBUF_PESS_INSERT_MUTEX,
ibuf_pessimistic_insert_mutex_key);
- LATCH_ADD_MUTEX(LOG_SYS, SYNC_LOG, log_sys_mutex_key);
-
- LATCH_ADD_MUTEX(LOG_FLUSH_ORDER, SYNC_LOG_FLUSH_ORDER,
- log_flush_order_mutex_key);
-
LATCH_ADD_MUTEX(PURGE_SYS_PQ, SYNC_PURGE_QUEUE,
purge_sys_pq_mutex_key);