diff options
Diffstat (limited to 'storage/innobase/buf/buf0rea.cc')
-rw-r--r-- | storage/innobase/buf/buf0rea.cc | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/storage/innobase/buf/buf0rea.cc b/storage/innobase/buf/buf0rea.cc index 6a06b97f5c0..0701a601afd 100644 --- a/storage/innobase/buf/buf0rea.cc +++ b/storage/innobase/buf/buf0rea.cc @@ -621,8 +621,9 @@ buf_read_ahead_linear( return(0); } - if (buf_pool->n_pend_reads - > buf_pool->curr_size / BUF_READ_AHEAD_PEND_LIMIT) { + if (my_atomic_loadlint(&buf_pool->n_pend_reads) + > (my_atomic_loadlint(&buf_pool->curr_size) + / BUF_READ_AHEAD_PEND_LIMIT)) { return(0); } @@ -871,8 +872,9 @@ tablespace_deleted: buf_pool_t* buf_pool = buf_pool_get(page_id); - while (buf_pool->n_pend_reads - > buf_pool->curr_size / BUF_READ_AHEAD_PEND_LIMIT) { + while (my_atomic_loadlint(&buf_pool->n_pend_reads) + > ((my_atomic_loadlint(&buf_pool->curr_size) + / BUF_READ_AHEAD_PEND_LIMIT))) { os_thread_sleep(500000); } @@ -942,7 +944,9 @@ buf_read_recv_pages( ulint count = 0; buf_pool = buf_pool_get(cur_page_id); - while (buf_pool->n_pend_reads >= recv_n_pool_free_frames / 2) { + + while (my_atomic_loadlint(&buf_pool->n_pend_reads) + >= (lint) recv_n_pool_free_frames / 2) { os_aio_simulated_wake_handler_threads(); os_thread_sleep(10000); |