mirror of
https://github.com/postgres/postgres.git
synced 2025-12-07 12:02:30 +03:00
Use LW_SHARED in dsa.c where possible.
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
This commit is contained in:
@@ -1043,7 +1043,7 @@ dsa_get_total_size(dsa_area *area)
|
|||||||
{
|
{
|
||||||
size_t size;
|
size_t size;
|
||||||
|
|
||||||
LWLockAcquire(DSA_AREA_LOCK(area), LW_EXCLUSIVE);
|
LWLockAcquire(DSA_AREA_LOCK(area), LW_SHARED);
|
||||||
size = area->control->total_segment_size;
|
size = area->control->total_segment_size;
|
||||||
LWLockRelease(DSA_AREA_LOCK(area));
|
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);
|
control = (dsa_area_control *) dsm_segment_address(segment);
|
||||||
|
|
||||||
LWLockAcquire(&control->lock, LW_EXCLUSIVE);
|
LWLockAcquire(&control->lock, LW_SHARED);
|
||||||
size = control->total_segment_size;
|
size = control->total_segment_size;
|
||||||
LWLockRelease(&control->lock);
|
LWLockRelease(&control->lock);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user