diff options
author | David Greenman <dg@FreeBSD.org> | 1994-12-19 00:02:56 +0000 |
---|---|---|
committer | David Greenman <dg@FreeBSD.org> | 1994-12-19 00:02:56 +0000 |
commit | 618540833659ea9819b7e2260a9b3707f0aa6a20 (patch) | |
tree | 84a986aad7ba87a6ac6e6f77021a17a2be545297 /sys/vm | |
parent | 7c5eeb390e76dea3ba24be99ceef17e1137e251c (diff) | |
download | src-618540833659ea9819b7e2260a9b3707f0aa6a20.tar.gz src-618540833659ea9819b7e2260a9b3707f0aa6a20.zip |
Don't ever clear B_BUSY on a pbuf (or any other flag for that matter).
This appears to be the cause of some buffer confusion that leads to
a panic during heavy paging.
Submitted by: John Dyson
Notes
Notes:
svn path=/head/; revision=5166
Diffstat (limited to 'sys/vm')
-rw-r--r-- | sys/vm/swap_pager.c | 5 | ||||
-rw-r--r-- | sys/vm/vm_pager.c | 7 |
2 files changed, 5 insertions, 7 deletions
diff --git a/sys/vm/swap_pager.c b/sys/vm/swap_pager.c index 9819f7e4685b..fa10553503d0 100644 --- a/sys/vm/swap_pager.c +++ b/sys/vm/swap_pager.c @@ -39,7 +39,7 @@ * from: Utah $Hdr: swap_pager.c 1.4 91/04/30$ * * @(#)swap_pager.c 8.9 (Berkeley) 3/21/94 - * $Id: swap_pager.c,v 1.17 1994/11/06 09:55:28 davidg Exp $ + * $Id: swap_pager.c,v 1.18 1994/11/13 15:36:48 davidg Exp $ */ /* @@ -1070,7 +1070,6 @@ swap_pager_input(swp, m, count, reqpage) } else { rv = VM_PAGER_OK; } - bp->b_flags &= ~(B_BUSY|B_WANTED|B_PHYS|B_DIRTY|B_CALL|B_DONE); --swp->sw_piip; if (swp->sw_piip == 0) @@ -1467,7 +1466,6 @@ retrygetspace: } else { rv = VM_PAGER_OK; } - bp->b_flags &= ~(B_BUSY|B_WANTED|B_PHYS|B_DIRTY|B_CALL|B_DONE); --swp->sw_poip; if (swp->sw_poip == 0) @@ -1639,7 +1637,6 @@ swap_pager_iodone(bp) vwakeup(bp); */ - bp->b_flags &= ~(B_BUSY|B_WANTED|B_PHYS|B_DIRTY|B_ASYNC); if (bp->b_vp) { brelvp(bp); } diff --git a/sys/vm/vm_pager.c b/sys/vm/vm_pager.c index caf1306b108c..1ecb203aacd4 100644 --- a/sys/vm/vm_pager.c +++ b/sys/vm/vm_pager.c @@ -61,7 +61,7 @@ * any improvements or extensions that they make and grant Carnegie the * rights to redistribute these changes. * - * $Id: vm_pager.c,v 1.7 1994/08/18 22:36:09 wollman Exp $ + * $Id: vm_pager.c,v 1.8 1994/10/09 01:52:16 phk Exp $ */ /* @@ -412,6 +412,9 @@ relpbuf(bp) if (bp->b_vp) brelvp(bp); + if (bp->b_flags & B_WANTED) + wakeup((caddr_t)bp); + TAILQ_INSERT_HEAD(&bswlist, bp, b_freelist); if (bswneeded) { @@ -420,5 +423,3 @@ relpbuf(bp) } splx(s); } - - |