diff options
author | Marko Mäkelä <marko.makela@mariadb.com> | 2021-09-07 08:55:08 +0300 |
---|---|---|
committer | Marko Mäkelä <marko.makela@mariadb.com> | 2021-09-07 08:55:08 +0300 |
commit | eb2f2c1e5f5989a225154f6a7eb3487fb722f65e (patch) | |
tree | 80d64ca29dbdfb0cab8f1bb98146407da19375de /storage/innobase/os | |
parent | b729c1a1ecce6c2e6c790fc011fc7363016d6a7e (diff) | |
download | mariadb-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.cc | 14 |
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 |