Skip to content

Commit 5557399

Browse files
committed
Avoid unnecessary public struct declaration in slru.h
Instead, declare a public wrapper of the sole function using it for external callers, so that they don't have to always pass a NULL argument. Author: Kevin Grittner
1 parent 0be88f8 commit 5557399

File tree

6 files changed

+28
-17
lines changed

6 files changed

+28
-17
lines changed

src/backend/access/transam/clog.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -445,7 +445,7 @@ BootStrapCLOG(void)
445445
slotno = ZeroCLOGPage(0, false);
446446

447447
/* Make sure it's written out */
448-
SimpleLruWritePage(ClogCtl, slotno, NULL);
448+
SimpleLruWritePage(ClogCtl, slotno);
449449
Assert(!ClogCtl->shared->page_dirty[slotno]);
450450

451451
LWLockRelease(CLogControlLock);
@@ -698,7 +698,7 @@ clog_redo(XLogRecPtr lsn, XLogRecord *record)
698698
LWLockAcquire(CLogControlLock, LW_EXCLUSIVE);
699699

700700
slotno = ZeroCLOGPage(pageno, false);
701-
SimpleLruWritePage(ClogCtl, slotno, NULL);
701+
SimpleLruWritePage(ClogCtl, slotno);
702702
Assert(!ClogCtl->shared->page_dirty[slotno]);
703703

704704
LWLockRelease(CLogControlLock);

src/backend/access/transam/multixact.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1454,7 +1454,7 @@ BootStrapMultiXact(void)
14541454
slotno = ZeroMultiXactOffsetPage(0, false);
14551455

14561456
/* Make sure it's written out */
1457-
SimpleLruWritePage(MultiXactOffsetCtl, slotno, NULL);
1457+
SimpleLruWritePage(MultiXactOffsetCtl, slotno);
14581458
Assert(!MultiXactOffsetCtl->shared->page_dirty[slotno]);
14591459

14601460
LWLockRelease(MultiXactOffsetControlLock);
@@ -1465,7 +1465,7 @@ BootStrapMultiXact(void)
14651465
slotno = ZeroMultiXactMemberPage(0, false);
14661466

14671467
/* Make sure it's written out */
1468-
SimpleLruWritePage(MultiXactMemberCtl, slotno, NULL);
1468+
SimpleLruWritePage(MultiXactMemberCtl, slotno);
14691469
Assert(!MultiXactMemberCtl->shared->page_dirty[slotno]);
14701470

14711471
LWLockRelease(MultiXactMemberControlLock);
@@ -1986,7 +1986,7 @@ multixact_redo(XLogRecPtr lsn, XLogRecord *record)
19861986
LWLockAcquire(MultiXactOffsetControlLock, LW_EXCLUSIVE);
19871987

19881988
slotno = ZeroMultiXactOffsetPage(pageno, false);
1989-
SimpleLruWritePage(MultiXactOffsetCtl, slotno, NULL);
1989+
SimpleLruWritePage(MultiXactOffsetCtl, slotno);
19901990
Assert(!MultiXactOffsetCtl->shared->page_dirty[slotno]);
19911991

19921992
LWLockRelease(MultiXactOffsetControlLock);
@@ -2001,7 +2001,7 @@ multixact_redo(XLogRecPtr lsn, XLogRecord *record)
20012001
LWLockAcquire(MultiXactMemberControlLock, LW_EXCLUSIVE);
20022002

20032003
slotno = ZeroMultiXactMemberPage(pageno, false);
2004-
SimpleLruWritePage(MultiXactMemberCtl, slotno, NULL);
2004+
SimpleLruWritePage(MultiXactMemberCtl, slotno);
20052005
Assert(!MultiXactMemberCtl->shared->page_dirty[slotno]);
20062006

20072007
LWLockRelease(MultiXactMemberControlLock);

src/backend/access/transam/slru.c

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,8 @@ typedef struct SlruFlushData
7878
int segno[MAX_FLUSH_BUFFERS]; /* their log seg#s */
7979
} SlruFlushData;
8080

81+
typedef struct SlruFlushData *SlruFlush;
82+
8183
/*
8284
* Macro to mark a buffer slot "most recently used". Note multiple evaluation
8385
* of arguments!
@@ -123,6 +125,7 @@ static int slru_errno;
123125

124126
static void SimpleLruZeroLSNs(SlruCtl ctl, int slotno);
125127
static void SimpleLruWaitIO(SlruCtl ctl, int slotno);
128+
static void SlruInternalWritePage(SlruCtl ctl, int slotno, SlruFlush fdata);
126129
static bool SlruPhysicalReadPage(SlruCtl ctl, int pageno, int slotno);
127130
static bool SlruPhysicalWritePage(SlruCtl ctl, int pageno, int slotno,
128131
SlruFlush fdata);
@@ -485,8 +488,8 @@ SimpleLruReadPage_ReadOnly(SlruCtl ctl, int pageno, TransactionId xid)
485488
*
486489
* Control lock must be held at entry, and will be held at exit.
487490
*/
488-
void
489-
SimpleLruWritePage(SlruCtl ctl, int slotno, SlruFlush fdata)
491+
static void
492+
SlruInternalWritePage(SlruCtl ctl, int slotno, SlruFlush fdata)
490493
{
491494
SlruShared shared = ctl->shared;
492495
int pageno = shared->page_number[slotno];
@@ -552,6 +555,17 @@ SimpleLruWritePage(SlruCtl ctl, int slotno, SlruFlush fdata)
552555
SlruReportIOError(ctl, pageno, InvalidTransactionId);
553556
}
554557

558+
/*
559+
* Wrapper of SlruInternalWritePage, for external callers.
560+
* fdata is always passed a NULL here.
561+
*/
562+
void
563+
SimpleLruWritePage(SlruCtl ctl, int slotno)
564+
{
565+
SlruInternalWritePage(ctl, slotno, NULL);
566+
}
567+
568+
555569
/*
556570
* Physical read of a (previously existing) page into a buffer slot
557571
*
@@ -975,7 +989,7 @@ SlruSelectLRUPage(SlruCtl ctl, int pageno)
975989
* we wait for the existing I/O to complete.
976990
*/
977991
if (shared->page_status[bestslot] == SLRU_PAGE_VALID)
978-
SimpleLruWritePage(ctl, bestslot, NULL);
992+
SlruInternalWritePage(ctl, bestslot, NULL);
979993
else
980994
SimpleLruWaitIO(ctl, bestslot);
981995

@@ -1009,7 +1023,7 @@ SimpleLruFlush(SlruCtl ctl, bool checkpoint)
10091023

10101024
for (slotno = 0; slotno < shared->num_slots; slotno++)
10111025
{
1012-
SimpleLruWritePage(ctl, slotno, &fdata);
1026+
SlruInternalWritePage(ctl, slotno, &fdata);
10131027

10141028
/*
10151029
* When called during a checkpoint, we cannot assert that the slot is
@@ -1114,7 +1128,7 @@ restart:;
11141128
* keep the logic the same as it was.)
11151129
*/
11161130
if (shared->page_status[slotno] == SLRU_PAGE_VALID)
1117-
SimpleLruWritePage(ctl, slotno, NULL);
1131+
SlruInternalWritePage(ctl, slotno, NULL);
11181132
else
11191133
SimpleLruWaitIO(ctl, slotno);
11201134
goto restart;

src/backend/access/transam/subtrans.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -205,7 +205,7 @@ BootStrapSUBTRANS(void)
205205
slotno = ZeroSUBTRANSPage(0);
206206

207207
/* Make sure it's written out */
208-
SimpleLruWritePage(SubTransCtl, slotno, NULL);
208+
SimpleLruWritePage(SubTransCtl, slotno);
209209
Assert(!SubTransCtl->shared->page_dirty[slotno]);
210210

211211
LWLockRelease(SubtransControlLock);

src/backend/commands/async.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -507,7 +507,7 @@ AsyncShmemInit(void)
507507
LWLockAcquire(AsyncCtlLock, LW_EXCLUSIVE);
508508
slotno = SimpleLruZeroPage(AsyncCtl, QUEUE_POS_PAGE(QUEUE_HEAD));
509509
/* This write is just to verify that pg_notify/ is writable */
510-
SimpleLruWritePage(AsyncCtl, slotno, NULL);
510+
SimpleLruWritePage(AsyncCtl, slotno);
511511
LWLockRelease(AsyncCtlLock);
512512
}
513513
}

src/include/access/slru.h

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -133,9 +133,6 @@ typedef struct SlruCtlData
133133

134134
typedef SlruCtlData *SlruCtl;
135135

136-
/* Opaque struct known only in slru.c */
137-
typedef struct SlruFlushData *SlruFlush;
138-
139136

140137
extern Size SimpleLruShmemSize(int nslots, int nlsns);
141138
extern void SimpleLruInit(SlruCtl ctl, const char *name, int nslots, int nlsns,
@@ -145,7 +142,7 @@ extern int SimpleLruReadPage(SlruCtl ctl, int pageno, bool write_ok,
145142
TransactionId xid);
146143
extern int SimpleLruReadPage_ReadOnly(SlruCtl ctl, int pageno,
147144
TransactionId xid);
148-
extern void SimpleLruWritePage(SlruCtl ctl, int slotno, SlruFlush fdata);
145+
extern void SimpleLruWritePage(SlruCtl ctl, int slotno);
149146
extern void SimpleLruFlush(SlruCtl ctl, bool checkpoint);
150147
extern void SimpleLruTruncate(SlruCtl ctl, int cutoffPage);
151148
extern bool SlruScanDirectory(SlruCtl ctl, int cutoffPage, bool doDeletions);

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy