On Wed, Feb 11, 2026 at 8:46 AM Chao Li <[email protected]> wrote: > > > > > On Feb 11, 2026, at 01:39, Heikki Linnakangas <[email protected]> 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 than embedded 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
