> > 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

Reply via email to