summaryrefslogtreecommitdiff
path: root/storage/innobase/buf/buf0dblwr.cc
diff options
context:
space:
mode:
authorJan Lindström <jplindst@mariadb.org>2013-12-19 14:36:38 +0200
committerJan Lindström <jplindst@mariadb.org>2013-12-19 14:36:38 +0200
commit5e55d1ced52c52fb2f0508e1346059901a85960f (patch)
tree517032a404d9b0ebde9b9174459fbce301dcec95 /storage/innobase/buf/buf0dblwr.cc
parent1f4f425a2007c51eeee35f911a787fc7d82d977c (diff)
downloadmariadb-git-5e55d1ced52c52fb2f0508e1346059901a85960f.tar.gz
Changes for Fusion-io multi-threaded flush, page compressed tables and
tables using atomic write/table. This is work in progress and some parts are at most POC quality.
Diffstat (limited to 'storage/innobase/buf/buf0dblwr.cc')
-rw-r--r--storage/innobase/buf/buf0dblwr.cc31
1 files changed, 16 insertions, 15 deletions
diff --git a/storage/innobase/buf/buf0dblwr.cc b/storage/innobase/buf/buf0dblwr.cc
index fb853fe1543..933b56eaf88 100644
--- a/storage/innobase/buf/buf0dblwr.cc
+++ b/storage/innobase/buf/buf0dblwr.cc
@@ -1,6 +1,7 @@
/*****************************************************************************
Copyright (c) 1995, 2012, Oracle and/or its affiliates. All Rights Reserved.
+Copyright (c) 2013, SkySQL Ab. All Rights Reserved.
This program is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
@@ -365,8 +366,8 @@ buf_dblwr_init_or_restore_pages(
/* Read the trx sys header to check if we are using the doublewrite
buffer */
- fil_io(OS_FILE_READ, TRUE, TRX_SYS_SPACE, 0, TRX_SYS_PAGE_NO, 0,
- UNIV_PAGE_SIZE, read_buf, NULL);
+ fil_io(OS_FILE_READ, true, TRX_SYS_SPACE, 0, TRX_SYS_PAGE_NO, 0,
+ UNIV_PAGE_SIZE, read_buf, NULL, 0);
doublewrite = read_buf + TRX_SYS_DOUBLEWRITE;
if (mach_read_from_4(doublewrite + TRX_SYS_DOUBLEWRITE_MAGIC)
@@ -402,11 +403,11 @@ buf_dblwr_init_or_restore_pages(
fil_io(OS_FILE_READ, TRUE, TRX_SYS_SPACE, 0, block1, 0,
TRX_SYS_DOUBLEWRITE_BLOCK_SIZE * UNIV_PAGE_SIZE,
- buf, NULL);
- fil_io(OS_FILE_READ, TRUE, TRX_SYS_SPACE, 0, block2, 0,
+ buf, NULL, 0);
+ fil_io(OS_FILE_READ, true, TRX_SYS_SPACE, 0, block2, 0,
TRX_SYS_DOUBLEWRITE_BLOCK_SIZE * UNIV_PAGE_SIZE,
buf + TRX_SYS_DOUBLEWRITE_BLOCK_SIZE * UNIV_PAGE_SIZE,
- NULL);
+ NULL, 0);
/* Check if any of these pages is half-written in data files, in the
intended position */
@@ -433,8 +434,8 @@ buf_dblwr_init_or_restore_pages(
+ i - TRX_SYS_DOUBLEWRITE_BLOCK_SIZE;
}
- fil_io(OS_FILE_WRITE, TRUE, 0, 0, source_page_no, 0,
- UNIV_PAGE_SIZE, page, NULL);
+ fil_io(OS_FILE_WRITE, true, 0, 0, source_page_no, 0,
+ UNIV_PAGE_SIZE, page, NULL, 0);
} else {
space_id = mach_read_from_4(
@@ -476,7 +477,7 @@ buf_dblwr_init_or_restore_pages(
fil_io(OS_FILE_READ, TRUE, space_id, zip_size,
page_no, 0,
zip_size ? zip_size : UNIV_PAGE_SIZE,
- read_buf, NULL);
+ read_buf, NULL, 0);
/* Check if the page is corrupt */
@@ -528,7 +529,7 @@ buf_dblwr_init_or_restore_pages(
fil_io(OS_FILE_WRITE, TRUE, space_id,
zip_size, page_no, 0,
zip_size ? zip_size : UNIV_PAGE_SIZE,
- page, NULL);
+ page, NULL, 0);
ib_logf(IB_LOG_LEVEL_INFO,
"Recovered the page from"
@@ -714,7 +715,7 @@ buf_dblwr_write_block_to_datafile(
buf_page_get_page_no(bpage), 0,
buf_page_get_zip_size(bpage),
(void*) bpage->zip.data,
- (void*) bpage);
+ (void*) bpage, 0);
return;
}
@@ -727,7 +728,7 @@ buf_dblwr_write_block_to_datafile(
fil_io(OS_FILE_WRITE | OS_AIO_SIMULATED_WAKE_LATER,
FALSE, buf_block_get_space(block), 0,
buf_block_get_page_no(block), 0, UNIV_PAGE_SIZE,
- (void*) block->frame, (void*) block);
+ (void*) block->frame, (void*) block, 0);
}
/********************************************************************//**
@@ -820,7 +821,7 @@ try_again:
fil_io(OS_FILE_WRITE, TRUE, TRX_SYS_SPACE, 0,
buf_dblwr->block1, 0, len,
- (void*) write_buf, NULL);
+ (void*) write_buf, NULL, 0);
if (buf_dblwr->first_free <= TRX_SYS_DOUBLEWRITE_BLOCK_SIZE) {
/* No unwritten pages in the second block. */
@@ -836,7 +837,7 @@ try_again:
fil_io(OS_FILE_WRITE, TRUE, TRX_SYS_SPACE, 0,
buf_dblwr->block2, 0, len,
- (void*) write_buf, NULL);
+ (void*) write_buf, NULL, 0);
flush:
/* increment the doublewrite flushed pages counter */
@@ -1056,14 +1057,14 @@ retry:
fil_io(OS_FILE_WRITE, TRUE, TRX_SYS_SPACE, 0,
offset, 0, UNIV_PAGE_SIZE,
(void*) (buf_dblwr->write_buf
- + UNIV_PAGE_SIZE * i), NULL);
+ + UNIV_PAGE_SIZE * i), NULL, 0);
} else {
/* It is a regular page. Write it directly to the
doublewrite buffer */
fil_io(OS_FILE_WRITE, TRUE, TRX_SYS_SPACE, 0,
offset, 0, UNIV_PAGE_SIZE,
(void*) ((buf_block_t*) bpage)->frame,
- NULL);
+ NULL, 0);
}
/* Now flush the doublewrite buffer data to disk */