Re: [HACKERS] SLRU API tweak

2010-12-30 Thread Alvaro Herrera
Excerpts from Kevin Grittner's message of mié dic 29 20:46:55 -0300 2010:
 Attached is a small patch to avoid putting an opaque structure into
 the slru.h file and using it in an external function call where
 external callers must always specify NULL.

Thanks, committed.

-- 
Álvaro Herrera alvhe...@commandprompt.com
The PostgreSQL Company - Command Prompt, Inc.
PostgreSQL Replication, Consulting, Custom Development, 24x7 support

-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers


[HACKERS] SLRU API tweak

2010-12-29 Thread Kevin Grittner
Attached is a small patch to avoid putting an opaque structure into
the slru.h file and using it in an external function call where
external callers must always specify NULL.
 
-Kevin
 

*** a/src/backend/access/transam/clog.c
--- b/src/backend/access/transam/clog.c
***
*** 445,451  BootStrapCLOG(void)
slotno = ZeroCLOGPage(0, false);
  
/* Make sure it's written out */
!   SimpleLruWritePage(ClogCtl, slotno, NULL);
Assert(!ClogCtl-shared-page_dirty[slotno]);
  
LWLockRelease(CLogControlLock);
--- 445,451 
slotno = ZeroCLOGPage(0, false);
  
/* Make sure it's written out */
!   SimpleLruWritePage(ClogCtl, slotno);
Assert(!ClogCtl-shared-page_dirty[slotno]);
  
LWLockRelease(CLogControlLock);
***
*** 698,704  clog_redo(XLogRecPtr lsn, XLogRecord *record)
LWLockAcquire(CLogControlLock, LW_EXCLUSIVE);
  
slotno = ZeroCLOGPage(pageno, false);
!   SimpleLruWritePage(ClogCtl, slotno, NULL);
Assert(!ClogCtl-shared-page_dirty[slotno]);
  
LWLockRelease(CLogControlLock);
--- 698,704 
LWLockAcquire(CLogControlLock, LW_EXCLUSIVE);
  
slotno = ZeroCLOGPage(pageno, false);
!   SimpleLruWritePage(ClogCtl, slotno);
Assert(!ClogCtl-shared-page_dirty[slotno]);
  
LWLockRelease(CLogControlLock);
*** a/src/backend/access/transam/multixact.c
--- b/src/backend/access/transam/multixact.c
***
*** 1454,1460  BootStrapMultiXact(void)
slotno = ZeroMultiXactOffsetPage(0, false);
  
/* Make sure it's written out */
!   SimpleLruWritePage(MultiXactOffsetCtl, slotno, NULL);
Assert(!MultiXactOffsetCtl-shared-page_dirty[slotno]);
  
LWLockRelease(MultiXactOffsetControlLock);
--- 1454,1460 
slotno = ZeroMultiXactOffsetPage(0, false);
  
/* Make sure it's written out */
!   SimpleLruWritePage(MultiXactOffsetCtl, slotno);
Assert(!MultiXactOffsetCtl-shared-page_dirty[slotno]);
  
LWLockRelease(MultiXactOffsetControlLock);
***
*** 1465,1471  BootStrapMultiXact(void)
slotno = ZeroMultiXactMemberPage(0, false);
  
/* Make sure it's written out */
!   SimpleLruWritePage(MultiXactMemberCtl, slotno, NULL);
Assert(!MultiXactMemberCtl-shared-page_dirty[slotno]);
  
LWLockRelease(MultiXactMemberControlLock);
--- 1465,1471 
slotno = ZeroMultiXactMemberPage(0, false);
  
/* Make sure it's written out */
!   SimpleLruWritePage(MultiXactMemberCtl, slotno);
Assert(!MultiXactMemberCtl-shared-page_dirty[slotno]);
  
LWLockRelease(MultiXactMemberControlLock);
***
*** 1986,1992  multixact_redo(XLogRecPtr lsn, XLogRecord *record)
LWLockAcquire(MultiXactOffsetControlLock, LW_EXCLUSIVE);
  
slotno = ZeroMultiXactOffsetPage(pageno, false);
!   SimpleLruWritePage(MultiXactOffsetCtl, slotno, NULL);
Assert(!MultiXactOffsetCtl-shared-page_dirty[slotno]);
  
LWLockRelease(MultiXactOffsetControlLock);
--- 1986,1992 
LWLockAcquire(MultiXactOffsetControlLock, LW_EXCLUSIVE);
  
slotno = ZeroMultiXactOffsetPage(pageno, false);
!   SimpleLruWritePage(MultiXactOffsetCtl, slotno);
Assert(!MultiXactOffsetCtl-shared-page_dirty[slotno]);
  
LWLockRelease(MultiXactOffsetControlLock);
***
*** 2001,2007  multixact_redo(XLogRecPtr lsn, XLogRecord *record)
LWLockAcquire(MultiXactMemberControlLock, LW_EXCLUSIVE);
  
slotno = ZeroMultiXactMemberPage(pageno, false);
!   SimpleLruWritePage(MultiXactMemberCtl, slotno, NULL);
Assert(!MultiXactMemberCtl-shared-page_dirty[slotno]);
  
LWLockRelease(MultiXactMemberControlLock);
--- 2001,2007 
LWLockAcquire(MultiXactMemberControlLock, LW_EXCLUSIVE);
  
slotno = ZeroMultiXactMemberPage(pageno, false);
!   SimpleLruWritePage(MultiXactMemberCtl, slotno);
Assert(!MultiXactMemberCtl-shared-page_dirty[slotno]);
  
LWLockRelease(MultiXactMemberControlLock);
*** a/src/backend/access/transam/slru.c
--- b/src/backend/access/transam/slru.c
***
*** 78,83  typedef struct SlruFlushData
--- 78,85 
int segno[MAX_FLUSH_BUFFERS];   /* 
their log seg#s */
  } SlruFlushData;
  
+ typedef struct SlruFlushData *SlruFlush;
+ 
  /*
   * Macro to mark a buffer slot most recently used.  Note multiple evaluation
   * of arguments!
***
*** 123,128  static int slru_errno;
--- 125,131 
  
  static void SimpleLruZeroLSNs(SlruCtl ctl, int slotno);
  static void SimpleLruWaitIO(SlruCtl ctl, int slotno);
+ static