version 1.12, 1995/08/21 18:25:52 |
version 1.13, 1995/08/29 23:13:44 |
Line 230 ccdinit(ccd, cpaths, p) |
|
Line 230 ccdinit(ccd, cpaths, p) |
|
printf("ccdinit: unit %d\n", ccd->ccd_unit); |
printf("ccdinit: unit %d\n", ccd->ccd_unit); |
#endif |
#endif |
|
|
|
#ifdef WORKING_DISK_STATISTICS /* XXX !! */ |
cs->sc_dk = ccd->ccd_dk; |
cs->sc_dk = ccd->ccd_dk; |
|
#endif |
cs->sc_size = 0; |
cs->sc_size = 0; |
cs->sc_ileave = ccd->ccd_interleave; |
cs->sc_ileave = ccd->ccd_interleave; |
cs->sc_nccdisks = ccd->ccd_ndev; |
cs->sc_nccdisks = ccd->ccd_ndev; |
Line 381 ccdinit(ccd, cpaths, p) |
|
Line 383 ccdinit(ccd, cpaths, p) |
|
ccg->ccg_nsectors = 1024 * (1024 / ccg->ccg_secsize); |
ccg->ccg_nsectors = 1024 * (1024 / ccg->ccg_secsize); |
ccg->ccg_ncylinders = cs->sc_size / ccg->ccg_nsectors; |
ccg->ccg_ncylinders = cs->sc_size / ccg->ccg_nsectors; |
|
|
|
#ifdef WORKING_DISK_STATISTICS /* XXX !! */ |
if (ccd->ccd_dk >= 0) |
if (ccd->ccd_dk >= 0) |
dk_wpms[ccd->ccd_dk] = 32 * (60 * DEV_BSIZE / 2); /* XXX */ |
dk_wpms[ccd->ccd_dk] = 32 * (60 * DEV_BSIZE / 2); /* XXX */ |
|
#endif |
|
|
cs->sc_flags |= CCDF_INITED; |
cs->sc_flags |= CCDF_INITED; |
cs->sc_cflags = ccd->ccd_flags; /* So we can find out later... */ |
cs->sc_cflags = ccd->ccd_flags; /* So we can find out later... */ |
Line 646 ccdstart(cs, bp) |
|
Line 650 ccdstart(cs, bp) |
|
printf("ccdstart(%x, %x)\n", cs, bp); |
printf("ccdstart(%x, %x)\n", cs, bp); |
#endif |
#endif |
|
|
|
#ifdef WORKING_DISK_STATISTICS /* XXX !! */ |
/* |
/* |
* Instrumentation (not very meaningful) |
* Instrumentation (not very meaningful) |
*/ |
*/ |
Line 655 ccdstart(cs, bp) |
|
Line 660 ccdstart(cs, bp) |
|
dk_xfer[cs->sc_dk]++; |
dk_xfer[cs->sc_dk]++; |
dk_wds[cs->sc_dk] += bp->b_bcount >> 6; |
dk_wds[cs->sc_dk] += bp->b_bcount >> 6; |
} |
} |
|
#endif |
|
|
/* |
/* |
* Allocate component buffers and fire off the requests |
* Allocate component buffers and fire off the requests |
|
|
if (cs->sc_nactive < 0) |
if (cs->sc_nactive < 0) |
panic("ccdintr: ccd%d: sc_nactive < 0", cs->sc_unit); |
panic("ccdintr: ccd%d: sc_nactive < 0", cs->sc_unit); |
#endif |
#endif |
|
|
|
#ifdef WORKING_DISK_STATISTICS /* XXX !! */ |
if (cs->sc_nactive == 0 && cs->sc_dk >= 0) |
if (cs->sc_nactive == 0 && cs->sc_dk >= 0) |
dk_busy &= ~(1 << cs->sc_dk); |
dk_busy &= ~(1 << cs->sc_dk); |
|
#endif |
if (bp->b_flags & B_ERROR) |
if (bp->b_flags & B_ERROR) |
bp->b_resid = bp->b_bcount; |
bp->b_resid = bp->b_bcount; |
biodone(bp); |
biodone(bp); |
Line 916 ccdioctl(dev, cmd, data, flag, p) |
|
Line 925 ccdioctl(dev, cmd, data, flag, p) |
|
struct ccddevice ccd; |
struct ccddevice ccd; |
char **cpp; |
char **cpp; |
struct vnode **vpp; |
struct vnode **vpp; |
|
#ifdef WORKING_DISK_STATISTICS /* XXX !! */ |
extern int dkn; |
extern int dkn; |
|
#endif |
|
|
if (unit >= numccd) |
if (unit >= numccd) |
return (ENXIO); |
return (ENXIO); |
Line 980 ccdioctl(dev, cmd, data, flag, p) |
|
Line 991 ccdioctl(dev, cmd, data, flag, p) |
|
ccd.ccd_vpp = vpp; |
ccd.ccd_vpp = vpp; |
ccd.ccd_ndev = ccio->ccio_ndisks; |
ccd.ccd_ndev = ccio->ccio_ndisks; |
|
|
|
#ifdef WORKING_DISK_STATISTICS /* XXX !! */ |
/* |
/* |
* Assign disk index first so that init routine |
* Assign disk index first so that init routine |
* can use it (saves having the driver drag around |
* can use it (saves having the driver drag around |
Line 990 ccdioctl(dev, cmd, data, flag, p) |
|
Line 1002 ccdioctl(dev, cmd, data, flag, p) |
|
ccd.ccd_dk = dkn++; |
ccd.ccd_dk = dkn++; |
else |
else |
ccd.ccd_dk = -1; |
ccd.ccd_dk = -1; |
|
#endif |
|
|
/* |
/* |
* Initialize the ccd. Fills in the softc for us. |
* Initialize the ccd. Fills in the softc for us. |
*/ |
*/ |
if (error = ccdinit(&ccd, cpp, p)) { |
if (error = ccdinit(&ccd, cpp, p)) { |
|
#ifdef WORKING_DISK_STATISTICS /* XXX !! */ |
if (ccd.ccd_dk >= 0) |
if (ccd.ccd_dk >= 0) |
--dkn; |
--dkn; |
|
#endif |
for (j = 0; j < lookedup; ++j) |
for (j = 0; j < lookedup; ++j) |
(void)vn_close(vpp[i], FREAD|FWRITE, |
(void)vn_close(vpp[i], FREAD|FWRITE, |
p->p_ucred, p); |
p->p_ucred, p); |