diff --git a/src/backend/storage/buffer/bufmgr.c b/src/backend/storage/buffer/bufmgr.c
new file mode 100644
index 3cb5120..58c9216
*** a/src/backend/storage/buffer/bufmgr.c
--- b/src/backend/storage/buffer/bufmgr.c
*************** PinBuffer(BufferDesc *buf, BufferAccessS
*** 1590,1598 ****
  			/* increase refcount */
  			buf_state += BUF_REFCOUNT_ONE;
  
! 			/* increase usagecount unless already max */
! 			if (BUF_STATE_GET_USAGECOUNT(buf_state) != BM_MAX_USAGE_COUNT)
! 				buf_state += BUF_USAGECOUNT_ONE;
  
  			if (pg_atomic_compare_exchange_u32(&buf->state, &old_buf_state,
  											   buf_state))
--- 1590,1610 ----
  			/* increase refcount */
  			buf_state += BUF_REFCOUNT_ONE;
  
! 			if (strategy == NULL)
! 			{
! 				/* Default case: increase usagecount unless already max. */
! 				if (BUF_STATE_GET_USAGECOUNT(buf_state) != BM_MAX_USAGE_COUNT)
! 					buf_state += BUF_USAGECOUNT_ONE;
! 			}
! 			else
! 			{
! 				/*
! 				 * Ring buffers shouldn't evict others from pool.  Thus we
! 				 * don't make usagecount more than 1.
! 				 */
! 				if (BUF_STATE_GET_USAGECOUNT(buf_state) == 0)
! 					buf_state += BUF_USAGECOUNT_ONE;
! 			}
  
  			if (pg_atomic_compare_exchange_u32(&buf->state, &old_buf_state,
  											   buf_state))
