Remove pointless struct from shmem code

This struct just added extra mental overhead.
pull/220/head
Andreas Karlsson 6 months ago committed by Andreas Karlsson
parent 1d1959d5be
commit d67ad2ab90
  1. 22
      contrib/pg_tde/src/common/pg_tde_shmem.c

@ -17,11 +17,6 @@
#include "storage/lwlock.h" #include "storage/lwlock.h"
#include "storage/shmem.h" #include "storage/shmem.h"
typedef struct TdeSharedState
{
void *rawDsaArea; /* DSA area pointer to store cache hashes */
} TdeSharedState;
static void tde_shmem_shutdown(int code, Datum arg); static void tde_shmem_shutdown(int code, Datum arg);
List *registeredShmemRequests = NIL; List *registeredShmemRequests = NIL;
@ -47,7 +42,6 @@ TdeRequiredSharedMemorySize(void)
if (routine->required_shared_mem_size) if (routine->required_shared_mem_size)
sz = add_size(sz, routine->required_shared_mem_size()); sz = add_size(sz, routine->required_shared_mem_size());
} }
sz = add_size(sz, sizeof(TdeSharedState));
return MAXALIGN(sz); return MAXALIGN(sz);
} }
@ -61,25 +55,22 @@ void
TdeShmemInit(void) TdeShmemInit(void)
{ {
bool found; bool found;
TdeSharedState *tdeState; char *free_start;
Size required_shmem_size = TdeRequiredSharedMemorySize(); Size required_shmem_size = TdeRequiredSharedMemorySize();
LWLockAcquire(AddinShmemInitLock, LW_EXCLUSIVE); LWLockAcquire(AddinShmemInitLock, LW_EXCLUSIVE);
/* Create or attach to the shared memory state */ /* Create or attach to the shared memory state */
ereport(NOTICE, errmsg("TdeShmemInit: requested %ld bytes", required_shmem_size)); ereport(NOTICE, errmsg("TdeShmemInit: requested %ld bytes", required_shmem_size));
tdeState = ShmemInitStruct("pg_tde", required_shmem_size, &found); free_start = ShmemInitStruct("pg_tde", required_shmem_size, &found);
if (!found) if (!found)
{ {
/* First time through ... */ /* First time through ... */
char *p = (char *) tdeState;
dsa_area *dsa; dsa_area *dsa;
ListCell *lc; ListCell *lc;
Size used_size = 0; Size used_size = 0;
Size dsa_area_size; Size dsa_area_size;
p += MAXALIGN(sizeof(TdeSharedState));
used_size += MAXALIGN(sizeof(TdeSharedState));
/* Now place all shared state structures */ /* Now place all shared state structures */
foreach(lc, registeredShmemRequests) foreach(lc, registeredShmemRequests)
{ {
@ -88,19 +79,18 @@ TdeShmemInit(void)
if (routine->init_shared_state) if (routine->init_shared_state)
{ {
sz = routine->init_shared_state(p); sz = routine->init_shared_state(free_start);
used_size += MAXALIGN(sz); used_size += MAXALIGN(sz);
p += MAXALIGN(sz); free_start += MAXALIGN(sz);
Assert(used_size <= required_shmem_size); Assert(used_size <= required_shmem_size);
} }
} }
/* Create DSA area */ /* Create DSA area */
dsa_area_size = required_shmem_size - used_size; dsa_area_size = required_shmem_size - used_size;
Assert(dsa_area_size > 0); Assert(dsa_area_size > 0);
tdeState->rawDsaArea = p;
ereport(LOG, errmsg("creating DSA area of size %lu", dsa_area_size)); ereport(LOG, errmsg("creating DSA area of size %lu", dsa_area_size));
dsa = dsa_create_in_place(tdeState->rawDsaArea, dsa = dsa_create_in_place(free_start,
dsa_area_size, dsa_area_size,
LWLockNewTrancheId(), 0); LWLockNewTrancheId(), 0);
dsa_pin(dsa); dsa_pin(dsa);
@ -112,7 +102,7 @@ TdeShmemInit(void)
TDEShmemSetupRoutine *routine = (TDEShmemSetupRoutine *) lfirst(lc); TDEShmemSetupRoutine *routine = (TDEShmemSetupRoutine *) lfirst(lc);
if (routine->init_dsa_area_objects) if (routine->init_dsa_area_objects)
routine->init_dsa_area_objects(dsa, tdeState->rawDsaArea); routine->init_dsa_area_objects(dsa, free_start);
} }
ereport(LOG, errmsg("setting no limit to DSA area of size %lu", dsa_area_size)); ereport(LOG, errmsg("setting no limit to DSA area of size %lu", dsa_area_size));

Loading…
Cancel
Save