diff options
author | Eugene Kosov <claprix@yandex.ru> | 2020-04-28 00:40:13 +0300 |
---|---|---|
committer | Eugene Kosov <claprix@yandex.ru> | 2020-04-30 11:56:16 +0300 |
commit | 7f9dc0d84aeef01747389a3ef074217acdcb2410 (patch) | |
tree | d090079e165002100eb5c45c67ba227d68d81b59 /storage/innobase/buf | |
parent | 1fbdcada73c1861b85080eede95140296d6a3c20 (diff) | |
download | mariadb-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.cc | 11 |
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) |