checkpoint reliability
I was wondering, when we start to reuse a WAL file, do we know that all
dirty buffers modified in that WAL file have been flushed to disk? Do
we fsync() dirty buffers at time of checkpoint, and do we also make sure
that buffers we wrote to disk and later reused before the checkpoint
also made it to disk?
My point is that writing it to the kernel doesn't guarantee it made it
to disk.
I see the WAL records being fsync'ed in xlog.c but I don't see the
buffer pages being fsynced.
--
Bruce Momjian | http://candle.pha.pa.us
pgman@candle.pha.pa.us | (610) 853-3000
+ If your life is a hard drive, | 830 Blythe Avenue
+ Christ can be your backup. | Drexel Hill, Pennsylvania 19026
Bruce Momjian <pgman@candle.pha.pa.us> writes:
I was wondering, when we start to reuse a WAL file, do we know that all
dirty buffers modified in that WAL file have been flushed to disk?
Yes. At least two checkpoints ago, in fact.
regards, tom lane
Bruce Momjian <pgman@candle.pha.pa.us> writes:
I was wondering, when we start to reuse a WAL file, do we know that all
dirty buffers modified in that WAL file have been flushed to disk?Yes. At least two checkpoints ago, in fact.
So when we decide to reuse a shared memory buffer and write it to disk,
do we fsync it, or do we run a file sync() to force all dirty buffers to
disk?
--
Bruce Momjian | http://candle.pha.pa.us
pgman@candle.pha.pa.us | (610) 853-3000
+ If your life is a hard drive, | 830 Blythe Avenue
+ Christ can be your backup. | Drexel Hill, Pennsylvania 19026
Tom Lane wrote:
Bruce Momjian <pgman@candle.pha.pa.us> writes:
I was wondering, when we start to reuse a WAL file, do we know that all
dirty buffers modified in that WAL file have been flushed to disk?Yes. At least two checkpoints ago, in fact.
Isn't the following what Bruce asked ?
/*
* mdsync() -- Sync storage.
*
*/
int
mdsync()
{
sync();
if (IsUnderPostmaster)
sleep(2);
sync();
return SM_SUCCESS;
}
regards,
Hiroshi Inoue
Tom Lane wrote:
Bruce Momjian <pgman@candle.pha.pa.us> writes:
I was wondering, when we start to reuse a WAL file, do we know that all
dirty buffers modified in that WAL file have been flushed to disk?Yes. At least two checkpoints ago, in fact.
Isn't the following what Bruce asked ?
/*
* mdsync() -- Sync storage.
*
*/
int
mdsync()
{
sync();
if (IsUnderPostmaster)
sleep(2);
sync();
return SM_SUCCESS;
}
Oh, yes. That is it. I couldn't find out how we were sure our pages
that we had written to the kernel were actually on disk before we
started reusing the WAL files.
Thanks.
--
Bruce Momjian | http://candle.pha.pa.us
pgman@candle.pha.pa.us | (610) 853-3000
+ If your life is a hard drive, | 830 Blythe Avenue
+ Christ can be your backup. | Drexel Hill, Pennsylvania 19026