diff options
Diffstat (limited to 'src/backend/storage/buffer/bufmgr.c')
-rw-r--r-- | src/backend/storage/buffer/bufmgr.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/src/backend/storage/buffer/bufmgr.c b/src/backend/storage/buffer/bufmgr.c index 6af9b4065d3..5c5b6b8875c 100644 --- a/src/backend/storage/buffer/bufmgr.c +++ b/src/backend/storage/buffer/bufmgr.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/storage/buffer/bufmgr.c,v 1.106 2001/01/24 19:43:05 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/storage/buffer/bufmgr.c,v 1.107 2001/02/18 04:39:42 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -1990,6 +1990,9 @@ UnlockBuffers(void) } } +/* Max time to wait to acquire a buffer read or write lock */ +#define BUFFER_LOCK_TIMEOUT (10*60*1000000) /* 10 minutes */ + void LockBuffer(Buffer buffer, int mode) { @@ -2041,7 +2044,7 @@ LockBuffer(Buffer buffer, int mode) { S_UNLOCK(&(buf->cntx_lock)); RESUME_INTERRUPTS(); - S_LOCK_SLEEP(&(buf->cntx_lock), i++); + S_LOCK_SLEEP(&(buf->cntx_lock), i++, BUFFER_LOCK_TIMEOUT); HOLD_INTERRUPTS(); S_LOCK(&(buf->cntx_lock)); } @@ -2069,7 +2072,7 @@ LockBuffer(Buffer buffer, int mode) } S_UNLOCK(&(buf->cntx_lock)); RESUME_INTERRUPTS(); - S_LOCK_SLEEP(&(buf->cntx_lock), i++); + S_LOCK_SLEEP(&(buf->cntx_lock), i++, BUFFER_LOCK_TIMEOUT); HOLD_INTERRUPTS(); S_LOCK(&(buf->cntx_lock)); } |