straighten out diskless swap code somewhat.
This commit is contained in:
parent
c8afd889d5
commit
bccc2c3c1b
|
@ -34,7 +34,7 @@
|
|||
* SUCH DAMAGE.
|
||||
*
|
||||
* from: @(#)nfs_bio.c 8.5 (Berkeley) 1/4/94
|
||||
* $Id: nfs_bio.c,v 1.13 1994/06/15 19:59:52 mycroft Exp $
|
||||
* $Id: nfs_bio.c,v 1.14 1994/06/22 14:07:37 pk Exp $
|
||||
*/
|
||||
|
||||
#include <sys/param.h>
|
||||
|
@ -685,11 +685,30 @@ nfs_doio(bp, cr, p)
|
|||
uiop->uio_procp = p;
|
||||
|
||||
/*
|
||||
* Historically, paging was done with physio, but no more.
|
||||
* Historically, paging was done with physio, but no more...
|
||||
*/
|
||||
if (bp->b_flags & B_PHYS)
|
||||
panic("doio phys");
|
||||
if (bp->b_flags & B_READ) {
|
||||
if (bp->b_flags & B_PHYS) {
|
||||
/*
|
||||
* ...though reading /dev/drum still gets us here.
|
||||
*/
|
||||
io.iov_len = uiop->uio_resid = bp->b_bcount;
|
||||
/* mapping was done by vmapbuf() */
|
||||
io.iov_base = bp->b_data;
|
||||
uiop->uio_offset = bp->b_blkno * DEV_BSIZE;
|
||||
if (bp->b_flags & B_READ) {
|
||||
uiop->uio_rw = UIO_READ;
|
||||
nfsstats.read_physios++;
|
||||
error = nfs_readrpc(vp, uiop, cr);
|
||||
} else {
|
||||
uiop->uio_rw = UIO_WRITE;
|
||||
nfsstats.write_physios++;
|
||||
error = nfs_writerpc(vp, uiop, cr);
|
||||
}
|
||||
if (error) {
|
||||
bp->b_flags |= B_ERROR;
|
||||
bp->b_error = error;
|
||||
}
|
||||
} else if (bp->b_flags & B_READ) {
|
||||
io.iov_len = uiop->uio_resid = bp->b_bcount;
|
||||
io.iov_base = bp->b_data;
|
||||
uiop->uio_rw = UIO_READ;
|
||||
|
|
|
@ -34,7 +34,7 @@
|
|||
* SUCH DAMAGE.
|
||||
*
|
||||
* from: @(#)nfs_vfsops.c 8.3 (Berkeley) 1/4/94
|
||||
* $Id: nfs_vfsops.c,v 1.23 1994/06/14 03:29:12 gwr Exp $
|
||||
* $Id: nfs_vfsops.c,v 1.24 1994/06/22 14:01:45 pk Exp $
|
||||
*/
|
||||
|
||||
#include <sys/param.h>
|
||||
|
@ -236,12 +236,10 @@ nfs_mountroot()
|
|||
* On a "dataless" configuration (swap on disk) we will have:
|
||||
* (swdevt[0].sw_dev != NODEV) identifying the swap device.
|
||||
*/
|
||||
if (swdevt[0].sw_dev != NODEV) {
|
||||
if (bdevvp(swapdev, &swapdev_vp))
|
||||
panic("nfs_mountroot: can't get swap vp for dev %d,%d",
|
||||
major(swdevt[0].sw_dev), minor(swdevt[0].sw_dev));
|
||||
if (bdevvp(swapdev, &swapdev_vp))
|
||||
panic("nfs_mountroot: can't setup swap vp");
|
||||
if (swdevt[0].sw_dev != NODEV)
|
||||
return (0);
|
||||
}
|
||||
|
||||
/*
|
||||
* If swapping to an nfs node: (swdevt[0].sw_dev == NODEV)
|
||||
|
@ -256,15 +254,14 @@ nfs_mountroot()
|
|||
*/
|
||||
vp->v_type = VREG;
|
||||
vp->v_flag = 0;
|
||||
swapdev_vp = vp;
|
||||
VREF(vp);
|
||||
swdevt[0].sw_vp = vp;
|
||||
|
||||
/*
|
||||
* Find out how large the swap file is.
|
||||
*/
|
||||
error = VOP_GETATTR(vp, &attr, procp->p_cred->pc_ucred, procp);
|
||||
if (error) panic("nfs_mountroot: getattr for swap");
|
||||
if (error)
|
||||
panic("nfs_mountroot: getattr for swap");
|
||||
n = (long) (attr.va_size / DEV_BSIZE);
|
||||
#ifdef DEBUG
|
||||
printf(" swap size: 0x%x (blocks)\n", n);
|
||||
|
|
|
@ -34,7 +34,7 @@
|
|||
* SUCH DAMAGE.
|
||||
*
|
||||
* from: @(#)nfs_vnops.c 8.5 (Berkeley) 2/13/94
|
||||
* $Id: nfs_vnops.c,v 1.32 1994/06/08 11:37:05 mycroft Exp $
|
||||
* $Id: nfs_vnops.c,v 1.33 1994/06/22 14:01:47 pk Exp $
|
||||
*/
|
||||
|
||||
/*
|
||||
|
@ -2057,8 +2057,8 @@ nfs_strategy(ap)
|
|||
struct proc *p;
|
||||
int error = 0;
|
||||
|
||||
if (bp->b_flags & B_PHYS)
|
||||
panic("nfs physio");
|
||||
if ((bp->b_flags & (B_PHYS|B_ASYNC)) == (B_PHYS|B_ASYNC))
|
||||
panic("nfs physio/async");
|
||||
if (bp->b_flags & B_ASYNC)
|
||||
p = (struct proc *)0;
|
||||
else
|
||||
|
|
|
@ -31,7 +31,7 @@
|
|||
* SUCH DAMAGE.
|
||||
*
|
||||
* from: @(#)vm_swap.c 8.5 (Berkeley) 2/17/94
|
||||
* $Id: vm_swap.c,v 1.20 1994/06/08 11:45:13 mycroft Exp $
|
||||
* $Id: vm_swap.c,v 1.21 1994/06/22 14:02:02 pk Exp $
|
||||
*/
|
||||
|
||||
#include <sys/param.h>
|
||||
|
@ -234,14 +234,14 @@ swstrategy(bp)
|
|||
} else
|
||||
index = 0;
|
||||
sp = &swdevt[index];
|
||||
if ((bp->b_dev = sp->sw_dev) == NODEV)
|
||||
panic("swstrategy");
|
||||
if (sp->sw_vp == NULL) {
|
||||
bp->b_error = ENODEV;
|
||||
bp->b_flags |= B_ERROR;
|
||||
biodone(bp);
|
||||
return;
|
||||
}
|
||||
if ((bp->b_dev = sp->sw_dev) == NODEV && sp->sw_vp->v_type != VREG)
|
||||
panic("swstrategy");
|
||||
VHOLD(sp->sw_vp);
|
||||
if ((bp->b_flags & B_READ) == 0) {
|
||||
if (vp = bp->b_vp) {
|
||||
|
|
Loading…
Reference in New Issue