aboutsummaryrefslogtreecommitdiff
path: root/sys/vm/swap_pager.c
diff options
context:
space:
mode:
authorOlivier Houchard <cognet@FreeBSD.org>2005-09-21 15:01:09 +0000
committerOlivier Houchard <cognet@FreeBSD.org>2005-09-21 15:01:09 +0000
commit3cfc7651b2b9e6656bed6156527e90d6001c95ca (patch)
tree28e3713e06f90f7ae6238f380bc98ef1a70d95ea /sys/vm/swap_pager.c
parentcb74d4b2b4e5aaab784fc177f48b092a40329fbb (diff)
downloadsrc-3cfc7651b2b9e6656bed6156527e90d6001c95ca.tar.gz
src-3cfc7651b2b9e6656bed6156527e90d6001c95ca.zip
Make sure we have a bufobj before calling bstrategy().
I'm not sure this is the right thing to do, but at least I don't panic anymore when swapping on a NFS file without using md(4). X-MFC after: proper review
Notes
Notes: svn path=/head/; revision=150418
Diffstat (limited to 'sys/vm/swap_pager.c')
-rw-r--r--sys/vm/swap_pager.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/sys/vm/swap_pager.c b/sys/vm/swap_pager.c
index dc23576d1576..a4ee9d67e187 100644
--- a/sys/vm/swap_pager.c
+++ b/sys/vm/swap_pager.c
@@ -2475,10 +2475,12 @@ swapdev_strategy(struct buf *bp, struct swdevt *sp)
vp2 = sp->sw_id;
vhold(vp2);
if (bp->b_iocmd == BIO_WRITE) {
- if (bp->b_bufobj) /* XXX: should always be true /phk */
+ if (bp->b_bufobj)
bufobj_wdrop(bp->b_bufobj);
bufobj_wref(&vp2->v_bufobj);
}
+ if (bp->b_bufobj != &vp2->v_bufobj)
+ bp->b_bufobj = &vp2->v_bufobj;
bp->b_vp = vp2;
bp->b_iooffset = dbtob(bp->b_blkno);
bstrategy(bp);