summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarko Mäkelä <marko.makela@mariadb.com>2022-03-01 09:15:25 +0200
committerMarko Mäkelä <marko.makela@mariadb.com>2022-03-01 09:15:25 +0200
commit07f4a4a6d16f75731a1e97a0b551c730165293bd (patch)
tree49f0dc344ec9804c6780bd17dc621637d117f819
parentedb311ae5823cfbade9f459c4cc622b5c42d3462 (diff)
parenta710016d578dc1165c511db19a5d4a094e736012 (diff)
downloadmariadb-git-07f4a4a6d16f75731a1e97a0b551c730165293bd.tar.gz
Merge 10.5 into 10.6
-rw-r--r--mysql-test/include/have_crypt.inc2
-rw-r--r--mysql-test/main/backup_locks.result8
-rw-r--r--mysql-test/main/backup_locks.test8
-rw-r--r--mysql-test/main/func_crypt.test2
-rw-r--r--storage/innobase/include/buf0buf.h9
5 files changed, 17 insertions, 12 deletions
diff --git a/mysql-test/include/have_crypt.inc b/mysql-test/include/have_crypt.inc
index 422f8922edc..ae94121980c 100644
--- a/mysql-test/include/have_crypt.inc
+++ b/mysql-test/include/have_crypt.inc
@@ -1,3 +1,5 @@
+# MDEV-27964 The function ENCRYPT() causes SIGSEGV in WITH_MSAN builds
+-- source include/not_msan.inc
# encrypt('a') is NULL if crypt(3) is not available
# encrypt('a') is "*0" in fips mode
if (`select length(encrypt('a')) > 3 IS NOT TRUE`) {
diff --git a/mysql-test/main/backup_locks.result b/mysql-test/main/backup_locks.result
index 1e567c1a58d..478cd1ef537 100644
--- a/mysql-test/main/backup_locks.result
+++ b/mysql-test/main/backup_locks.result
@@ -2,19 +2,19 @@
# Test lock taken
#
BACKUP LOCK test.t1;
-SELECT LOCK_MODE, LOCK_TYPE, TABLE_SCHEMA, TABLE_NAME FROM information_schema.metadata_lock_info;
+SELECT LOCK_MODE, LOCK_TYPE, TABLE_SCHEMA, TABLE_NAME FROM information_schema.metadata_lock_info where table_name not like "innodb_%";
LOCK_MODE LOCK_TYPE TABLE_SCHEMA TABLE_NAME
MDL_SHARED_HIGH_PRIO Table metadata lock test t1
BACKUP UNLOCK;
-SELECT LOCK_MODE, LOCK_TYPE, TABLE_SCHEMA, TABLE_NAME FROM information_schema.metadata_lock_info;
+SELECT LOCK_MODE, LOCK_TYPE, TABLE_SCHEMA, TABLE_NAME FROM information_schema.metadata_lock_info where table_name not like "innodb_%";
LOCK_MODE LOCK_TYPE TABLE_SCHEMA TABLE_NAME
BACKUP LOCK t1;
-SELECT LOCK_MODE, LOCK_TYPE, TABLE_SCHEMA, TABLE_NAME FROM information_schema.metadata_lock_info;
+SELECT LOCK_MODE, LOCK_TYPE, TABLE_SCHEMA, TABLE_NAME FROM information_schema.metadata_lock_info where table_name not like "innodb_%";
LOCK_MODE LOCK_TYPE TABLE_SCHEMA TABLE_NAME
MDL_SHARED_HIGH_PRIO Table metadata lock test t1
BACKUP UNLOCK;
BACKUP LOCK non_existing.t1;
-SELECT LOCK_MODE, LOCK_TYPE, TABLE_SCHEMA, TABLE_NAME FROM information_schema.metadata_lock_info;
+SELECT LOCK_MODE, LOCK_TYPE, TABLE_SCHEMA, TABLE_NAME FROM information_schema.metadata_lock_info where table_name not like "innodb_%";
LOCK_MODE LOCK_TYPE TABLE_SCHEMA TABLE_NAME
MDL_SHARED_HIGH_PRIO Table metadata lock non_existing t1
BACKUP UNLOCK;
diff --git a/mysql-test/main/backup_locks.test b/mysql-test/main/backup_locks.test
index 1271abfd993..02313186bec 100644
--- a/mysql-test/main/backup_locks.test
+++ b/mysql-test/main/backup_locks.test
@@ -11,14 +11,14 @@
--echo #
BACKUP LOCK test.t1;
-SELECT LOCK_MODE, LOCK_TYPE, TABLE_SCHEMA, TABLE_NAME FROM information_schema.metadata_lock_info;
+SELECT LOCK_MODE, LOCK_TYPE, TABLE_SCHEMA, TABLE_NAME FROM information_schema.metadata_lock_info where table_name not like "innodb_%";
BACKUP UNLOCK;
-SELECT LOCK_MODE, LOCK_TYPE, TABLE_SCHEMA, TABLE_NAME FROM information_schema.metadata_lock_info;
+SELECT LOCK_MODE, LOCK_TYPE, TABLE_SCHEMA, TABLE_NAME FROM information_schema.metadata_lock_info where table_name not like "innodb_%";
BACKUP LOCK t1;
-SELECT LOCK_MODE, LOCK_TYPE, TABLE_SCHEMA, TABLE_NAME FROM information_schema.metadata_lock_info;
+SELECT LOCK_MODE, LOCK_TYPE, TABLE_SCHEMA, TABLE_NAME FROM information_schema.metadata_lock_info where table_name not like "innodb_%";
BACKUP UNLOCK;
BACKUP LOCK non_existing.t1;
-SELECT LOCK_MODE, LOCK_TYPE, TABLE_SCHEMA, TABLE_NAME FROM information_schema.metadata_lock_info;
+SELECT LOCK_MODE, LOCK_TYPE, TABLE_SCHEMA, TABLE_NAME FROM information_schema.metadata_lock_info where table_name not like "innodb_%";
BACKUP UNLOCK;
--echo #
diff --git a/mysql-test/main/func_crypt.test b/mysql-test/main/func_crypt.test
index 7da3f0c0f98..907376049d8 100644
--- a/mysql-test/main/func_crypt.test
+++ b/mysql-test/main/func_crypt.test
@@ -1,6 +1,4 @@
-- source include/have_crypt.inc
-# MDEV-27964 The function ENCRYPT() causes SIGSEGV in WITH_MSAN builds
--- source include/not_msan.inc
--disable_warnings
drop table if exists t1;
diff --git a/storage/innobase/include/buf0buf.h b/storage/innobase/include/buf0buf.h
index 3f7cc4fb516..c512cd62e2e 100644
--- a/storage/innobase/include/buf0buf.h
+++ b/storage/innobase/include/buf0buf.h
@@ -1882,9 +1882,14 @@ public:
buf_tmp_buffer_t *io_buf_reserve() { return io_buf.reserve(); }
/** @return whether any I/O is pending */
- bool any_io_pending() const
+ bool any_io_pending()
{
- return n_pend_reads || n_flush_LRU() || n_flush_list();
+ if (n_pend_reads)
+ return true;
+ mysql_mutex_lock(&mutex);
+ const bool any_pending{n_flush_LRU_ || n_flush_list_};
+ mysql_mutex_unlock(&mutex);
+ return any_pending;
}
/** @return total amount of pending I/O */
ulint io_pending() const