Changeset View
Changeset View
Standalone View
Standalone View
sys/vm/swap_pager.c
Show First 20 Lines • Show All 2,984 Lines • ▼ Show 20 Lines | swapdev_strategy(struct buf *bp, struct swdevt *sp) | ||||
bp->b_blkno = ctodb(bp->b_blkno - sp->sw_first); | bp->b_blkno = ctodb(bp->b_blkno - sp->sw_first); | ||||
vp2 = sp->sw_id; | vp2 = sp->sw_id; | ||||
vhold(vp2); | vhold(vp2); | ||||
if (bp->b_iocmd == BIO_WRITE) { | if (bp->b_iocmd == BIO_WRITE) { | ||||
if (bp->b_bufobj) | if (bp->b_bufobj) | ||||
bufobj_wdrop(bp->b_bufobj); | bufobj_wdrop(bp->b_bufobj); | ||||
bufobj_wref(&vp2->v_bufobj); | bufobj_wref(vp2bo(vp2)); | ||||
} | } | ||||
if (bp->b_bufobj != &vp2->v_bufobj) | if (bp->b_bufobj != vp2bo(vp2)) | ||||
bp->b_bufobj = &vp2->v_bufobj; | bp->b_bufobj = vp2bo(vp2); | ||||
bp->b_vp = vp2; | bp->b_vp = vp2; | ||||
bp->b_iooffset = dbtob(bp->b_blkno); | bp->b_iooffset = dbtob(bp->b_blkno); | ||||
bstrategy(bp); | bstrategy(bp); | ||||
return; | return; | ||||
} | } | ||||
static void | static void | ||||
swapdev_close(struct thread *td, struct swdevt *sp) | swapdev_close(struct thread *td, struct swdevt *sp) | ||||
▲ Show 20 Lines • Show All 98 Lines • Show Last 20 Lines |