> > START_/END_CRIT_SECTION is mostly CritSectionCount++/--.
> > Recording could be made as
> > LockedSpinLocks[LockedSpinCounter++] = &spinlock
> > in pre-allocated array.
>
> Yeah, I suppose. We already do record locking of all the fixed
> spinlocks (BufMgrLock etc), it's just the per-buffer spinlocks that
> are missing from that (and CRIT_SECTION calls). Would it be
> reasonable to assume that only one buffer spinlock could be held
> at a time?
No. UPDATE holds two spins, btree split even more.
But stop - afair bufmgr remembers locked buffers, probably
we could just add XXX_CRIT_SECTION to LockBuffer..?
Vadim