diff options
author | Olivier Houchard <cognet@FreeBSD.org> | 2005-09-21 15:01:09 +0000 |
---|---|---|
committer | Olivier Houchard <cognet@FreeBSD.org> | 2005-09-21 15:01:09 +0000 |
commit | 3cfc7651b2b9e6656bed6156527e90d6001c95ca (patch) | |
tree | 28e3713e06f90f7ae6238f380bc98ef1a70d95ea /sys/vm/swap_pager.c | |
parent | cb74d4b2b4e5aaab784fc177f48b092a40329fbb (diff) | |
download | src-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.c | 4 |
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); |