MDEV-11520 post-fix
fil_extend_space_to_desired_size(): Use a proper type cast when computing start_offset for the posix_fallocate() call on 32-bit systems (where sizeof(ulint) < sizeof(os_offset_t)). This could affect 32-bit systems when extending files that are at least 4 MiB long. This bug existed in MariaDB 10.0 before MDEV-11520. In MariaDB 10.1 it had been fixed in MDEV-11556.
This commit is contained in:
parent
81695ab8b5
commit
a0ce92ddc7
@ -5016,10 +5016,12 @@ retry:
|
||||
const ulint file_start_page_no = space->size - node->size;
|
||||
#ifdef HAVE_POSIX_FALLOCATE
|
||||
if (srv_use_posix_fallocate) {
|
||||
os_offset_t start_offset
|
||||
= (start_page_no - file_start_page_no) * page_size;
|
||||
ulint n_pages = size_after_extend - start_page_no;
|
||||
os_offset_t len = os_offset_t(n_pages) * page_size;
|
||||
const os_offset_t start_offset
|
||||
= os_offset_t(start_page_no - file_start_page_no)
|
||||
* page_size;
|
||||
const ulint n_pages
|
||||
= size_after_extend - start_page_no;
|
||||
const os_offset_t len = os_offset_t(n_pages) * page_size;
|
||||
|
||||
int err = posix_fallocate(node->handle, start_offset, len);
|
||||
success = !err;
|
||||
|
@ -5056,10 +5056,12 @@ retry:
|
||||
const ulint file_start_page_no = space->size - node->size;
|
||||
#ifdef HAVE_POSIX_FALLOCATE
|
||||
if (srv_use_posix_fallocate) {
|
||||
os_offset_t start_offset
|
||||
= (start_page_no - file_start_page_no) * page_size;
|
||||
ulint n_pages = size_after_extend - start_page_no;
|
||||
os_offset_t len = os_offset_t(n_pages) * page_size;
|
||||
const os_offset_t start_offset
|
||||
= os_offset_t(start_page_no - file_start_page_no)
|
||||
* page_size;
|
||||
const ulint n_pages
|
||||
= size_after_extend - start_page_no;
|
||||
const os_offset_t len = os_offset_t(n_pages) * page_size;
|
||||
|
||||
int err = posix_fallocate(node->handle, start_offset, len);
|
||||
success = !err;
|
||||
|
Loading…
x
Reference in New Issue
Block a user