写一个页到double write buffer,sync。
size = 2 * TRX_SYS_DOUBLEWRITE_BLOCK_SIZE;//2M,即128页
n_slots = size - srv_doublewrite_batch_size;//默认120页用于单页刷的double write只有8个
os_event_reset(buf_dblwr->s_event);
os_event_wait_low(buf_dblwr->s_event, sig_count);
for (i = srv_doublewrite_batch_size; i < size; ++i) {
if (!buf_dblwr->in_use[i]) {
break;
}
}
buf_dblwr->in_use[i] = true;
buf_dblwr->s_reserved++;
buf_dblwr->buf_block_arr[i] = bpage;
if (i < TRX_SYS_DOUBLEWRITE_BLOCK_SIZE) {
offset = buf_dblwr->block1 + i;
} else {
offset = buf_dblwr->block2 + i - TRX_SYS_DOUBLEWRITE_BLOCK_SIZE;
}
fil_io(OS_FILE_WRITE, true, TRX_SYS_SPACE, 0,offset, 0, UNIV_PAGE_SIZE,(void