summaryrefslogtreecommitdiff
path: root/extra/mariabackup
diff options
context:
space:
mode:
authorMarko Mäkelä <marko.makela@mariadb.com>2019-12-05 06:42:31 +0200
committerMarko Mäkelä <marko.makela@mariadb.com>2019-12-05 06:42:31 +0200
commit42a4ae54c2f05bccd2d6d752bbc23652962b6929 (patch)
treeb483ef198239a4c41556a8181d27b9bb7d053b03 /extra/mariabackup
parent504202bd7fe7d7e85039fface189e721d1aeff7a (diff)
downloadmariadb-git-42a4ae54c2f05bccd2d6d752bbc23652962b6929.tar.gz
MDEV-21225 Remove ut_align() and use aligned_malloc()
Before commit 90c52e5291b3ad0935df7da56ec0fcbf530733b4 introduced aligned_malloc(), InnoDB always used a pattern of over-allocating memory and invoking ut_align() to guarantee the desired alignment. It is cleaner to invoke aligned_malloc() and aligned_free() directly. ut_align(): Remove. In assertions, ut_align_down() can be used instead.
Diffstat (limited to 'extra/mariabackup')
-rw-r--r--extra/mariabackup/backup_copy.cc3
-rw-r--r--extra/mariabackup/fil_cur.cc11
-rw-r--r--extra/mariabackup/fil_cur.h3
-rw-r--r--extra/mariabackup/xtrabackup.cc28
4 files changed, 17 insertions, 28 deletions
diff --git a/extra/mariabackup/backup_copy.cc b/extra/mariabackup/backup_copy.cc
index 6ede0288e3a..ed977931423 100644
--- a/extra/mariabackup/backup_copy.cc
+++ b/extra/mariabackup/backup_copy.cc
@@ -466,14 +466,13 @@ struct datafile_cur_t {
char abs_path[FN_REFLEN];
MY_STAT statinfo;
uint thread_n;
- byte* orig_buf;
byte* buf;
size_t buf_size;
size_t buf_read;
size_t buf_offset;
explicit datafile_cur_t(const char* filename = NULL) :
- file(), thread_n(0), orig_buf(NULL), buf(NULL), buf_size(0),
+ file(), thread_n(0), buf(NULL), buf_size(0),
buf_read(0), buf_offset(0)
{
memset(rel_path, 0, sizeof rel_path);
diff --git a/extra/mariabackup/fil_cur.cc b/extra/mariabackup/fil_cur.cc
index 453aab802c9..d1b2275a845 100644
--- a/extra/mariabackup/fil_cur.cc
+++ b/extra/mariabackup/fil_cur.cc
@@ -142,7 +142,7 @@ xb_fil_cur_open(
int err;
/* Initialize these first so xb_fil_cur_close() handles them correctly
in case of error */
- cursor->orig_buf = NULL;
+ cursor->buf = NULL;
cursor->node = NULL;
cursor->space_id = node->space->id;
@@ -238,10 +238,8 @@ xb_fil_cur_open(
/* Allocate read buffer */
cursor->buf_size = XB_FIL_CUR_PAGES * cursor->page_size;
- cursor->orig_buf = static_cast<byte *>
- (malloc(cursor->buf_size + srv_page_size));
- cursor->buf = static_cast<byte *>
- (ut_align(cursor->orig_buf, srv_page_size));
+ cursor->buf = static_cast<byte*>(aligned_malloc(cursor->buf_size,
+ srv_page_size));
cursor->buf_read = 0;
cursor->buf_npages = 0;
@@ -494,7 +492,8 @@ xb_fil_cur_close(
cursor->read_filter->deinit(&cursor->read_filter_ctxt);
}
- free(cursor->orig_buf);
+ aligned_free(cursor->buf);
+ cursor->buf = NULL;
if (cursor->node != NULL) {
xb_fil_node_close_file(cursor->node);
diff --git a/extra/mariabackup/fil_cur.h b/extra/mariabackup/fil_cur.h
index b789efde05f..70e4888ba63 100644
--- a/extra/mariabackup/fil_cur.h
+++ b/extra/mariabackup/fil_cur.h
@@ -44,8 +44,7 @@ struct xb_fil_cur_t {
xb_read_filt_t* read_filter; /*!< read filter */
xb_read_filt_ctxt_t read_filter_ctxt;
/*!< read filter context */
- byte* orig_buf; /*!< read buffer */
- byte* buf; /*!< aligned pointer for orig_buf */
+ byte* buf; /*!< read buffer */
size_t buf_size; /*!< buffer size in bytes */
size_t buf_read; /*!< number of read bytes in buffer
after the last cursor read */
diff --git a/extra/mariabackup/xtrabackup.cc b/extra/mariabackup/xtrabackup.cc
index 03a82bfc58b..c53c9037bda 100644
--- a/extra/mariabackup/xtrabackup.cc
+++ b/extra/mariabackup/xtrabackup.cc
@@ -3269,8 +3269,6 @@ static dberr_t xb_assign_undo_space_start()
{
pfs_os_file_t file;
- byte* buf;
- byte* page;
bool ret;
dberr_t error = DB_SUCCESS;
ulint space;
@@ -3289,8 +3287,8 @@ static dberr_t xb_assign_undo_space_start()
return DB_ERROR;
}
- buf = static_cast<byte*>(ut_malloc_nokey(2U << srv_page_size_shift));
- page = static_cast<byte*>(ut_align(buf, srv_page_size));
+ byte* page = static_cast<byte*>
+ (aligned_malloc(srv_page_size, srv_page_size));
if (os_file_read(IORequestRead, file, page, 0, srv_page_size)
!= DB_SUCCESS) {
@@ -3337,7 +3335,7 @@ retry:
srv_undo_space_id_start = space;
func_exit:
- ut_free(buf);
+ aligned_free(page);
ret = os_file_close(file);
ut_a(ret);
@@ -4552,8 +4550,6 @@ xb_space_create_file(
pfs_os_file_t* file) /*!<out: file handle */
{
bool ret;
- byte* buf;
- byte* page;
*file = os_file_create_simple_no_error_handling(
0, path, OS_FILE_CREATE, OS_FILE_READ_WRITE, false, &ret);
@@ -4572,9 +4568,9 @@ xb_space_create_file(
return ret;
}
- buf = static_cast<byte *>(malloc(3U << srv_page_size_shift));
/* Align the memory for file i/o if we might have O_DIRECT set */
- page = static_cast<byte *>(ut_align(buf, srv_page_size));
+ byte* page = static_cast<byte*>(aligned_malloc(2 * srv_page_size,
+ srv_page_size));
memset(page, '\0', srv_page_size);
@@ -4608,7 +4604,7 @@ xb_space_create_file(
page_zip.data, 0, zip_size);
}
- free(buf);
+ aligned_free(page);
if (ret != DB_SUCCESS) {
msg("mariabackup: could not write the first page to %s",
@@ -4821,8 +4817,7 @@ xtrabackup_apply_delta(
xb_delta_info_t info(srv_page_size, 0, SRV_TMP_SPACE_ID);
ulint page_size;
ulint page_size_shift;
- byte* incremental_buffer_base = NULL;
- byte* incremental_buffer;
+ byte* incremental_buffer = NULL;
size_t offset;
@@ -4890,11 +4885,8 @@ xtrabackup_apply_delta(
posix_fadvise(dst_file, 0, 0, POSIX_FADV_DONTNEED);
/* allocate buffer for incremental backup (4096 pages) */
- incremental_buffer_base = static_cast<byte *>
- (malloc((page_size / 4 + 1) * page_size));
incremental_buffer = static_cast<byte *>
- (ut_align(incremental_buffer_base,
- page_size));
+ (aligned_malloc(page_size / 4 * page_size, page_size));
msg("Applying %s to %s...", src_path, dst_path);
@@ -5003,7 +4995,7 @@ xtrabackup_apply_delta(
incremental_buffers++;
}
- free(incremental_buffer_base);
+ aligned_free(incremental_buffer);
if (src_file != OS_FILE_CLOSED) {
os_file_close(src_file);
os_file_delete(0,src_path);
@@ -5013,7 +5005,7 @@ xtrabackup_apply_delta(
return TRUE;
error:
- free(incremental_buffer_base);
+ aligned_free(incremental_buffer);
if (src_file != OS_FILE_CLOSED)
os_file_close(src_file);
if (dst_file != OS_FILE_CLOSED)