While going through Readme in backend\storage\buffer, I found some point misleading.
Normal Buffer Replacement Strategy ---------------------------------- -------------- .. .. Each buffer header contains a usage counter, which is incremented (up to a small limit value) whenever the buffer is unpinned. (This requires only the buffer header spinlock, which would have to be taken anyway to decrement the buffer reference count, so it's nearly free.) . I have checked the code and logic according to which usage counter is increased when the buffer is pinned. Another Doubt : Why in function BufferAlloc, it needs to hold the BufFreelistLock till it pin the buffer which increases its reference count. As what I understood is BufFreelistLock is to protect StrategyControl structure and till it finds a buffer to use.