Thread: checkpoint reliability

checkpoint reliability

From
Bruce Momjian
Date:
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,
Pennsylvania19026
 


Re: checkpoint reliability

From
Tom Lane
Date:
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


Re: checkpoint reliability

From
Bruce Momjian
Date:
> 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,
Pennsylvania19026
 


Re: checkpoint reliability

From
Hiroshi Inoue
Date:
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


Re: checkpoint reliability

From
Bruce Momjian
Date:
> 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,
Pennsylvania19026