Skip to content

Commit 195f164

Browse files
committed
Get rid of the SpinLockAcquire/SpinLockAcquire_NoHoldoff distinction
in favor of having just one set of macros that don't do HOLD/RESUME_INTERRUPTS (hence, these correspond to the old SpinLockAcquire_NoHoldoff case). Given our coding rules for spinlock use, there is no reason to allow CHECK_FOR_INTERRUPTS to be done while holding a spinlock, and also there is no situation where ImmediateInterruptOK will be true while holding a spinlock. Therefore doing HOLD/RESUME_INTERRUPTS while taking/releasing a spinlock is just a waste of cycles. Qingqing Zhou and Tom Lane.
1 parent e135d96 commit 195f164

File tree

6 files changed

+80
-112
lines changed

6 files changed

+80
-112
lines changed

src/backend/access/transam/xlog.c

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
* Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group
88
* Portions Copyright (c) 1994, Regents of the University of California
99
*
10-
* $PostgreSQL: pgsql/src/backend/access/transam/xlog.c,v 1.224 2005/12/28 23:22:50 tgl Exp $
10+
* $PostgreSQL: pgsql/src/backend/access/transam/xlog.c,v 1.225 2005/12/29 18:08:05 tgl Exp $
1111
*
1212
*-------------------------------------------------------------------------
1313
*/
@@ -695,10 +695,10 @@ begin:;
695695
/* use volatile pointer to prevent code rearrangement */
696696
volatile XLogCtlData *xlogctl = XLogCtl;
697697

698-
SpinLockAcquire_NoHoldoff(&xlogctl->info_lck);
698+
SpinLockAcquire(&xlogctl->info_lck);
699699
LogwrtRqst = xlogctl->LogwrtRqst;
700700
LogwrtResult = xlogctl->LogwrtResult;
701-
SpinLockRelease_NoHoldoff(&xlogctl->info_lck);
701+
SpinLockRelease(&xlogctl->info_lck);
702702
}
703703

704704
/*
@@ -940,13 +940,13 @@ begin:;
940940
/* use volatile pointer to prevent code rearrangement */
941941
volatile XLogCtlData *xlogctl = XLogCtl;
942942

943-
SpinLockAcquire_NoHoldoff(&xlogctl->info_lck);
943+
SpinLockAcquire(&xlogctl->info_lck);
944944
/* advance global request to include new block(s) */
945945
if (XLByteLT(xlogctl->LogwrtRqst.Write, WriteRqst))
946946
xlogctl->LogwrtRqst.Write = WriteRqst;
947947
/* update local result copy while I have the chance */
948948
LogwrtResult = xlogctl->LogwrtResult;
949-
SpinLockRelease_NoHoldoff(&xlogctl->info_lck);
949+
SpinLockRelease(&xlogctl->info_lck);
950950
}
951951

952952
ProcLastRecEnd = RecPtr;
@@ -1175,11 +1175,11 @@ AdvanceXLInsertBuffer(void)
11751175
/* use volatile pointer to prevent code rearrangement */
11761176
volatile XLogCtlData *xlogctl = XLogCtl;
11771177

1178-
SpinLockAcquire_NoHoldoff(&xlogctl->info_lck);
1178+
SpinLockAcquire(&xlogctl->info_lck);
11791179
if (XLByteLT(xlogctl->LogwrtRqst.Write, FinishedPageRqstPtr))
11801180
xlogctl->LogwrtRqst.Write = FinishedPageRqstPtr;
11811181
LogwrtResult = xlogctl->LogwrtResult;
1182-
SpinLockRelease_NoHoldoff(&xlogctl->info_lck);
1182+
SpinLockRelease(&xlogctl->info_lck);
11831183
}
11841184

11851185
update_needed = false; /* Did the shared-request update */
@@ -1560,13 +1560,13 @@ XLogWrite(XLogwrtRqst WriteRqst, bool flexible)
15601560
/* use volatile pointer to prevent code rearrangement */
15611561
volatile XLogCtlData *xlogctl = XLogCtl;
15621562

1563-
SpinLockAcquire_NoHoldoff(&xlogctl->info_lck);
1563+
SpinLockAcquire(&xlogctl->info_lck);
15641564
xlogctl->LogwrtResult = LogwrtResult;
15651565
if (XLByteLT(xlogctl->LogwrtRqst.Write, LogwrtResult.Write))
15661566
xlogctl->LogwrtRqst.Write = LogwrtResult.Write;
15671567
if (XLByteLT(xlogctl->LogwrtRqst.Flush, LogwrtResult.Flush))
15681568
xlogctl->LogwrtRqst.Flush = LogwrtResult.Flush;
1569-
SpinLockRelease_NoHoldoff(&xlogctl->info_lck);
1569+
SpinLockRelease(&xlogctl->info_lck);
15701570
}
15711571

15721572
Write->LogwrtResult = LogwrtResult;
@@ -1618,11 +1618,11 @@ XLogFlush(XLogRecPtr record)
16181618
/* use volatile pointer to prevent code rearrangement */
16191619
volatile XLogCtlData *xlogctl = XLogCtl;
16201620

1621-
SpinLockAcquire_NoHoldoff(&xlogctl->info_lck);
1621+
SpinLockAcquire(&xlogctl->info_lck);
16221622
if (XLByteLT(WriteRqstPtr, xlogctl->LogwrtRqst.Write))
16231623
WriteRqstPtr = xlogctl->LogwrtRqst.Write;
16241624
LogwrtResult = xlogctl->LogwrtResult;
1625-
SpinLockRelease_NoHoldoff(&xlogctl->info_lck);
1625+
SpinLockRelease(&xlogctl->info_lck);
16261626
}
16271627

16281628
/* done already? */
@@ -4984,10 +4984,10 @@ GetRedoRecPtr(void)
49844984
/* use volatile pointer to prevent code rearrangement */
49854985
volatile XLogCtlData *xlogctl = XLogCtl;
49864986

4987-
SpinLockAcquire_NoHoldoff(&xlogctl->info_lck);
4987+
SpinLockAcquire(&xlogctl->info_lck);
49884988
Assert(XLByteLE(RedoRecPtr, xlogctl->Insert.RedoRecPtr));
49894989
RedoRecPtr = xlogctl->Insert.RedoRecPtr;
4990-
SpinLockRelease_NoHoldoff(&xlogctl->info_lck);
4990+
SpinLockRelease(&xlogctl->info_lck);
49914991

49924992
return RedoRecPtr;
49934993
}
@@ -5165,9 +5165,9 @@ CreateCheckPoint(bool shutdown, bool force)
51655165
/* use volatile pointer to prevent code rearrangement */
51665166
volatile XLogCtlData *xlogctl = XLogCtl;
51675167

5168-
SpinLockAcquire_NoHoldoff(&xlogctl->info_lck);
5168+
SpinLockAcquire(&xlogctl->info_lck);
51695169
RedoRecPtr = xlogctl->Insert.RedoRecPtr = checkPoint.redo;
5170-
SpinLockRelease_NoHoldoff(&xlogctl->info_lck);
5170+
SpinLockRelease(&xlogctl->info_lck);
51715171
}
51725172

51735173
/*

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