summaryrefslogtreecommitdiff
path: root/storage/innobase/os
diff options
context:
space:
mode:
authorMarko Mäkelä <marko.makela@mariadb.com>2021-09-07 08:55:08 +0300
committerMarko Mäkelä <marko.makela@mariadb.com>2021-09-07 08:55:08 +0300
commiteb2f2c1e5f5989a225154f6a7eb3487fb722f65e (patch)
tree80d64ca29dbdfb0cab8f1bb98146407da19375de /storage/innobase/os
parentb729c1a1ecce6c2e6c790fc011fc7363016d6a7e (diff)
downloadmariadb-git-eb2f2c1e5f5989a225154f6a7eb3487fb722f65e.tar.gz
MDEV-26547 fixup: Wait for read completion
buf_load(): Wait for the submitted reads to finish before updating innodb_buffer_pool_load_status.
Diffstat (limited to 'storage/innobase/os')
-rw-r--r--storage/innobase/os/os0file.cc14
1 files changed, 14 insertions, 0 deletions
diff --git a/storage/innobase/os/os0file.cc b/storage/innobase/os/os0file.cc
index 7a6829e7865..dde1975ea08 100644
--- a/storage/innobase/os/os0file.cc
+++ b/storage/innobase/os/os0file.cc
@@ -3828,6 +3828,20 @@ void os_aio_wait_until_no_pending_writes()
buf_dblwr.wait_flush_buffered_writes();
}
+/** Wait until there are no pending asynchronous reads. */
+void os_aio_wait_until_no_pending_reads()
+{
+ const auto notify_wait= read_slots->pending_io_count();
+
+ if (notify_wait)
+ tpool::tpool_wait_begin();
+
+ read_slots->wait();
+
+ if (notify_wait)
+ tpool::tpool_wait_end();
+}
+
/** Request a read or write.
@param type I/O request
@param buf buffer