Re: Refactoring the checkpointer's fsync request queue

Shawn Debnath <sdn@amazon.com>

From: Shawn Debnath <sdn@amazon.com>
To: Thomas Munro <thomas.munro@gmail.com>
Cc: Alvaro Herrera <alvherre@2ndquadrant.com>, Andres Freund <andres@anarazel.de>, Robert Haas <robertmhaas@gmail.com>, Tom Lane <tgl@sss.pgh.pa.us>, Dmitry Dolgov <9erthalion6@gmail.com>, PostgreSQL-development <pgsql-hackers@postgresql.org>
Date: 2019-04-05T16:22:06Z
Lists: pgsql-hackers
On Fri, Apr 05, 2019 at 10:53:53AM +1300, Thomas Munro wrote:
> On Fri, Apr 5, 2019 at 2:03 AM Alvaro Herrera <alvherre@2ndquadrant.com> wrote:
> > On 2019-Apr-04, Thomas Munro wrote:
> > > I don't think it's project policy to put a single typedef into its own
> > > header like that, and I'm not sure where else to put it.
> >
> > shrug.  Looks fine to me.  I suppose if we don't have it anywhere, it's
> > just because we haven't needed that particular trick yet.  Creating a
> > file with a lone typedef seems better than using uint32 to me.
> 
> It was commit 9fac5fd7 that gave me that idea.
> 
> Ok, here is a patch that adds a one-typedef header and uses
> SegmentIndex to replace all cases of BlockNumber and int holding a
> segment number (where as an "index" or a "count").

Looks good to me.

-- 
Shawn Debnath
Amazon Web Services (AWS)



Commits

  1. Fix bugs in mdsyncfiletag().

  2. Refactor the fsync queue for wider use.

  3. Don't forget about failed fsync() requests.

  4. PANIC on fsync() failure.

  5. Move LockClauseStrength, LockWaitPolicy into new file nodes/lockoptions.h.

  6. Add new file for checkpointer.c

  7. Split work of bgwriter between 2 processes: bgwriter and checkpointer.

  8. Install infrastructure for shared-memory free space map. Doesn't actually