summaryrefslogtreecommitdiff
path: root/storage/innobase/buf
diff options
context:
space:
mode:
authorEugene Kosov <claprix@yandex.ru>2020-04-28 00:40:13 +0300
committerEugene Kosov <claprix@yandex.ru>2020-04-30 11:56:16 +0300
commit7f9dc0d84aeef01747389a3ef074217acdcb2410 (patch)
treed090079e165002100eb5c45c67ba227d68d81b59 /storage/innobase/buf
parent1fbdcada73c1861b85080eede95140296d6a3c20 (diff)
downloadmariadb-git-7f9dc0d84aeef01747389a3ef074217acdcb2410.tar.gz
split log_t::buf into two buffers
Maybe this patch will help catch problems like buffer overflow. log_t::first_in_use: removed log_t::buf: this is where mtr_t are supposed to append data log_t::flush_buf: this is from server writes to a file Those two buffers are std::swap()ped when some thread is gonna write to a file
Diffstat (limited to 'storage/innobase/buf')
-rw-r--r--storage/innobase/buf/buf0buf.cc11
1 files changed, 6 insertions, 5 deletions
diff --git a/storage/innobase/buf/buf0buf.cc b/storage/innobase/buf/buf0buf.cc
index cff6dcb50a6..f37411f17a7 100644
--- a/storage/innobase/buf/buf0buf.cc
+++ b/storage/innobase/buf/buf0buf.cc
@@ -1246,11 +1246,12 @@ buf_madvise_do_dump()
/* mirrors allocation in log_t::create() */
if (log_sys.buf) {
- ret+= madvise(log_sys.first_in_use
- ? log_sys.buf
- : log_sys.buf - srv_log_buffer_size,
- srv_log_buffer_size * 2,
- MADV_DODUMP);
+ ret += madvise(log_sys.buf,
+ srv_log_buffer_size,
+ MADV_DODUMP);
+ ret += madvise(log_sys.flush_buf,
+ srv_log_buffer_size,
+ MADV_DODUMP);
}
/* mirrors recv_sys_init() */
if (recv_sys->buf)