diff options
Diffstat (limited to 'storage/innobase/buf/buf0dblwr.cc')
-rw-r--r-- | storage/innobase/buf/buf0dblwr.cc | 38 |
1 files changed, 19 insertions, 19 deletions
diff --git a/storage/innobase/buf/buf0dblwr.cc b/storage/innobase/buf/buf0dblwr.cc index b8371864e16..f1e728e94a8 100644 --- a/storage/innobase/buf/buf0dblwr.cc +++ b/storage/innobase/buf/buf0dblwr.cc @@ -86,11 +86,12 @@ start_again: buf_block_t *trx_sys_block= buf_dblwr_trx_sys_get(&mtr); if (mach_read_from_4(TRX_SYS_DOUBLEWRITE + TRX_SYS_DOUBLEWRITE_MAGIC + - trx_sys_block->frame) == TRX_SYS_DOUBLEWRITE_MAGIC_N) + trx_sys_block->page.frame) == + TRX_SYS_DOUBLEWRITE_MAGIC_N) { /* The doublewrite buffer has already been created: just read in some numbers */ - init(TRX_SYS_DOUBLEWRITE + trx_sys_block->frame); + init(TRX_SYS_DOUBLEWRITE + trx_sys_block->page.frame); mtr.commit(); return true; } @@ -121,7 +122,7 @@ too_small: } byte *fseg_header= TRX_SYS_DOUBLEWRITE + TRX_SYS_DOUBLEWRITE_FSEG + - trx_sys_block->frame; + trx_sys_block->page.frame; for (uint32_t prev_page_no= 0, i= 0, extent_size= FSP_EXTENT_SIZE; i < 2 * size + extent_size / 2; i++) { @@ -149,12 +150,12 @@ too_small: tablespace, then the page has not been written to in doublewrite. */ - ut_ad(new_block->lock.not_recursive()); + ut_ad(new_block->page.lock.not_recursive()); const page_id_t id= new_block->page.id(); /* We only do this in the debug build, to ensure that the check in buf_flush_init_for_writing() will see a valid page type. The flushes of new_block are actually unnecessary here. */ - ut_d(mtr.write<2>(*new_block, FIL_PAGE_TYPE + new_block->frame, + ut_d(mtr.write<2>(*new_block, FIL_PAGE_TYPE + new_block->page.frame, FIL_PAGE_TYPE_SYS)); if (i == size / 2) @@ -162,10 +163,10 @@ too_small: ut_a(id.page_no() == size); mtr.write<4>(*trx_sys_block, TRX_SYS_DOUBLEWRITE + TRX_SYS_DOUBLEWRITE_BLOCK1 + - trx_sys_block->frame, id.page_no()); + trx_sys_block->page.frame, id.page_no()); mtr.write<4>(*trx_sys_block, TRX_SYS_DOUBLEWRITE + TRX_SYS_DOUBLEWRITE_REPEAT + - TRX_SYS_DOUBLEWRITE_BLOCK1 + trx_sys_block->frame, + TRX_SYS_DOUBLEWRITE_BLOCK1 + trx_sys_block->page.frame, id.page_no()); } else if (i == size / 2 + size) @@ -173,10 +174,10 @@ too_small: ut_a(id.page_no() == 2 * size); mtr.write<4>(*trx_sys_block, TRX_SYS_DOUBLEWRITE + TRX_SYS_DOUBLEWRITE_BLOCK2 + - trx_sys_block->frame, id.page_no()); + trx_sys_block->page.frame, id.page_no()); mtr.write<4>(*trx_sys_block, TRX_SYS_DOUBLEWRITE + TRX_SYS_DOUBLEWRITE_REPEAT + - TRX_SYS_DOUBLEWRITE_BLOCK2 + trx_sys_block->frame, + TRX_SYS_DOUBLEWRITE_BLOCK2 + trx_sys_block->page.frame, id.page_no()); } else if (i > size / 2) @@ -193,7 +194,7 @@ too_small: mtr.start(); trx_sys_block= buf_dblwr_trx_sys_get(&mtr); fseg_header= TRX_SYS_DOUBLEWRITE + TRX_SYS_DOUBLEWRITE_FSEG + - trx_sys_block->frame; + trx_sys_block->page.frame; } prev_page_no= id.page_no(); @@ -201,15 +202,16 @@ too_small: mtr.write<4>(*trx_sys_block, TRX_SYS_DOUBLEWRITE + TRX_SYS_DOUBLEWRITE_MAGIC + - trx_sys_block->frame, TRX_SYS_DOUBLEWRITE_MAGIC_N); + trx_sys_block->page.frame, TRX_SYS_DOUBLEWRITE_MAGIC_N); mtr.write<4>(*trx_sys_block, TRX_SYS_DOUBLEWRITE + TRX_SYS_DOUBLEWRITE_MAGIC + - TRX_SYS_DOUBLEWRITE_REPEAT + trx_sys_block->frame, + TRX_SYS_DOUBLEWRITE_REPEAT + trx_sys_block->page.frame, TRX_SYS_DOUBLEWRITE_MAGIC_N); mtr.write<4>(*trx_sys_block, TRX_SYS_DOUBLEWRITE + TRX_SYS_DOUBLEWRITE_SPACE_ID_STORED + - trx_sys_block->frame, TRX_SYS_DOUBLEWRITE_SPACE_ID_STORED_N); + trx_sys_block->page.frame, + TRX_SYS_DOUBLEWRITE_SPACE_ID_STORED_N); mtr.commit(); /* Flush the modified pages to disk and make a checkpoint */ @@ -519,8 +521,9 @@ static void buf_dblwr_check_page_lsn(const buf_page_t &b, const byte *page) /** Check the LSN values on the page with which this block is associated. */ static void buf_dblwr_check_block(const buf_page_t *bpage) { - ut_ad(bpage->state() == BUF_BLOCK_FILE_PAGE); - const page_t *page= reinterpret_cast<const buf_block_t*>(bpage)->frame; + ut_ad(bpage->in_file()); + const page_t *page= bpage->frame; + ut_ad(page); switch (fil_page_get_type(page)) { case FIL_PAGE_INDEX: @@ -619,9 +622,7 @@ static void *get_frame(const IORequest &request) if (request.slot) return request.slot->out_buf; const buf_page_t *bpage= request.bpage; - return bpage->zip.data - ? bpage->zip.data - : reinterpret_cast<const buf_block_t*>(bpage)->frame; + return bpage->zip.data ? bpage->zip.data : bpage->frame; } void buf_dblwr_t::flush_buffered_writes_completed(const IORequest &request) @@ -673,7 +674,6 @@ void buf_dblwr_t::flush_buffered_writes_completed(const IORequest &request) } else { - ut_ad(bpage->state() == BUF_BLOCK_FILE_PAGE); ut_ad(!bpage->zip_size()); ut_d(buf_dblwr_check_page_lsn(*bpage, static_cast<const byte*>(frame))); } |