Re: Little cleanup: Move ProcStructLock to the ProcGlobal struct - Mailing list pgsql-hackers

From Ashutosh Bapat
Subject Re: Little cleanup: Move ProcStructLock to the ProcGlobal struct
Date
Msg-id CAExHW5tjUZdYhAGYO6V70F3X4ajBOSyCRROLLVF1dYr=khLPRQ@mail.gmail.com
Whole thread Raw
In response to Re: Little cleanup: Move ProcStructLock to the ProcGlobal struct  (Chao Li <li.evan.chao@gmail.com>)
Responses Re: Little cleanup: Move ProcStructLock to the ProcGlobal struct
Re: Little cleanup: Move ProcStructLock to the ProcGlobal struct
List pgsql-hackers
On Wed, Feb 11, 2026 at 8:46 AM Chao Li <li.evan.chao@gmail.com> wrote:
>
>
>
> > On Feb 11, 2026, at 01:39, Heikki Linnakangas <hlinnaka@iki.fi> wrote:
> >
> > For some reason, the ProcStructLock spinlock is allocated in a shared memory area of its own:
> >
> >    /* Create ProcStructLock spinlock, too */
> >    ProcStructLock = (slock_t *) ShmemInitStruct("ProcStructLock spinlock",
> >                                                 sizeof(slock_t),
> >                                                 &found);
> >    SpinLockInit(ProcStructLock);
> >
> > I believe that's just for historical reasons. A long long time ago, spinlocks had to be allocated separately rather
thanembedded in other structs. 
> >
> > The spinlock protects the freeProcs list and some other fields in ProcGlobal, so let's put it together with those
fields.It's good for cache locality to have it next to the thing it protects, and just makes more sense anyway. 
> >
> > Any objections?
> >
> > - Heikki<0001-Move-ProcStructLock-to-the-ProcGlobal-struct.patch>
>
> Hi Heikki,
>
> I took a quick review. You moved ProcStructLock into PROC_HDR as freeProcsLock, and deleted:
> ```
> ProcStructLock = ShmemInitStruct(...);
> SpinLockInit(ProcStructLock);
> ```
>
> But I don’t see a replacement like SpinLockInit(&ProcGlobal->freeProcsLock);

Good catch. I think the spinlock needs to be initialized somewhere in
the code block starting with
/*
* Initialize the data structures.
*/

I also checked many other shared structures which contain spinlocks in
them. All of them embed the spinlock instead of pointer to the
spinlock. This change looks inline with that.

--
Best Wishes,
Ashutosh Bapat



pgsql-hackers by date:

Previous
From: "cca5507"
Date:
Subject: Re: tuple radix sort
Next
From: Amit Kapila
Date:
Subject: Re: POC: enable logical decoding when wal_level = 'replica' without a server restart