summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNathan Bossart <nathan@postgresql.org>2025-12-02 16:40:23 -0600
committerNathan Bossart <nathan@postgresql.org>2025-12-02 16:40:23 -0600
commita6d05c819380b0940fcfb428aa298f2d7e76e5c6 (patch)
tree9575fe206b4dd70a6ccf7feb07c54ccacd14200d
parentcbe04e5d729f292bcf9b06f5d774884b4511b18a (diff)
Use LW_SHARED in dsa.c where possible.HEADorigin/masterorigin/HEADmaster
Both dsa_get_total_size() and dsa_get_total_size_from_handle() take an exclusive lock just to read a variable. This commit reduces the lock level to LW_SHARED in those functions. Reviewed-by: Sami Imseih <samimseih@gmail.com> Discussion: https://postgr.es/m/aS8fMzWs9e8iHxk2%40nathan
-rw-r--r--src/backend/utils/mmgr/dsa.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/backend/utils/mmgr/dsa.c b/src/backend/utils/mmgr/dsa.c
index c8a72686177..4b6bcffea28 100644
--- a/src/backend/utils/mmgr/dsa.c
+++ b/src/backend/utils/mmgr/dsa.c
@@ -1043,7 +1043,7 @@ dsa_get_total_size(dsa_area *area)
{
size_t size;
- LWLockAcquire(DSA_AREA_LOCK(area), LW_EXCLUSIVE);
+ LWLockAcquire(DSA_AREA_LOCK(area), LW_SHARED);
size = area->control->total_segment_size;
LWLockRelease(DSA_AREA_LOCK(area));
@@ -1075,7 +1075,7 @@ dsa_get_total_size_from_handle(dsa_handle handle)
control = (dsa_area_control *) dsm_segment_address(segment);
- LWLockAcquire(&control->lock, LW_EXCLUSIVE);
+ LWLockAcquire(&control->lock, LW_SHARED);
size = control->total_segment_size;
LWLockRelease(&control->lock);