Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit195f164

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 allowCHECK_FOR_INTERRUPTS to be done while holding a spinlock, and also thereis no situation where ImmediateInterruptOK will be true while holding aspinlock. Therefore doing HOLD/RESUME_INTERRUPTS while taking/releasing aspinlock is just a waste of cycles. Qingqing Zhou and Tom Lane.
1 parente135d96 commit195f164

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
volatileXLogCtlData*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
volatileXLogCtlData*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
volatileXLogCtlData*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
volatileXLogCtlData*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
volatileXLogCtlData*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
volatileXLogCtlData*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
returnRedoRecPtr;
49934993
}
@@ -5165,9 +5165,9 @@ CreateCheckPoint(bool shutdown, bool force)
51655165
/* use volatile pointer to prevent code rearrangement */
51665166
volatileXLogCtlData*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)

[8]ページ先頭

©2009-2025 Movatter.jp