mirror of
https://github.com/MariaDB/server.git
synced 2025-01-29 18:20:07 +01:00
Applying InnoDB plugin snashot
Detailed revision comments: r6064 | calvin | 2009-10-13 18:23:35 +0300 (Tue, 13 Oct 2009) | 4 lines branches/zip: non-functional changes Changes from MySQL to fix build issue. r6065 | inaam | 2009-10-13 20:43:13 +0300 (Tue, 13 Oct 2009) | 7 lines branches/zip rb://182 Call fsync() on datafiles after a batch of pages is written to disk even when skip_innodb_doublewrite is set. Approved by: Heikki
This commit is contained in:
parent
ed612249c5
commit
280b7ee291
1 changed files with 26 additions and 16 deletions
|
@ -303,6 +303,28 @@ buf_flush_write_complete(
|
|||
}
|
||||
}
|
||||
|
||||
/********************************************************************//**
|
||||
Flush a batch of writes to the datafiles that have already been
|
||||
written by the OS. */
|
||||
static
|
||||
void
|
||||
buf_flush_sync_datafiles(void)
|
||||
/*==========================*/
|
||||
{
|
||||
/* Wake possible simulated aio thread to actually post the
|
||||
writes to the operating system */
|
||||
os_aio_simulated_wake_handler_threads();
|
||||
|
||||
/* Wait that all async writes to tablespaces have been posted to
|
||||
the OS */
|
||||
os_aio_wait_until_no_pending_writes();
|
||||
|
||||
/* Now we flush the data to disk (for example, with fsync) */
|
||||
fil_flush_file_spaces(FIL_TABLESPACE);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
/********************************************************************//**
|
||||
Flushes possible buffered writes from the doublewrite memory buffer to disk,
|
||||
and also wakes up the aio thread if simulated aio is used. It is very
|
||||
|
@ -320,8 +342,8 @@ buf_flush_buffered_writes(void)
|
|||
ulint i;
|
||||
|
||||
if (!srv_use_doublewrite_buf || trx_doublewrite == NULL) {
|
||||
os_aio_simulated_wake_handler_threads();
|
||||
|
||||
/* Sync the writes to the disk. */
|
||||
buf_flush_sync_datafiles();
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -529,22 +551,10 @@ flush:
|
|||
buf_LRU_stat_inc_io();
|
||||
}
|
||||
|
||||
/* Wake possible simulated aio thread to actually post the
|
||||
writes to the operating system */
|
||||
|
||||
os_aio_simulated_wake_handler_threads();
|
||||
|
||||
/* Wait that all async writes to tablespaces have been posted to
|
||||
the OS */
|
||||
|
||||
os_aio_wait_until_no_pending_writes();
|
||||
|
||||
/* Now we flush the data to disk (for example, with fsync) */
|
||||
|
||||
fil_flush_file_spaces(FIL_TABLESPACE);
|
||||
/* Sync the writes to the disk. */
|
||||
buf_flush_sync_datafiles();
|
||||
|
||||
/* We can now reuse the doublewrite memory buffer: */
|
||||
|
||||
trx_doublewrite->first_free = 0;
|
||||
|
||||
mutex_exit(&(trx_doublewrite->mutex));
|
||||
|
|
Loading…
Add table
Reference in a new issue