summaryrefslogtreecommitdiffstats
path: root/sys/i386
diff options
context:
space:
mode:
authorphk <phk@FreeBSD.org>1999-09-01 11:32:52 +0000
committerphk <phk@FreeBSD.org>1999-09-01 11:32:52 +0000
commitb0a4cf1544fa7a320f7d4284d52cc718ac001f66 (patch)
treed82c15b643c4393602b3c2b59a7ad3daca821aea /sys/i386
parent237070fe4deb7b1cfd91cfd9eb04bdb0f6a2b015 (diff)
downloadFreeBSD-src-b0a4cf1544fa7a320f7d4284d52cc718ac001f66.zip
FreeBSD-src-b0a4cf1544fa7a320f7d4284d52cc718ac001f66.tar.gz
Try to win back the "removal of most crufty code" trophy from markm:
Remove WD formatting code which has never worked in 386bsd or FreeBSD. Remove DIOCSSTEP and DIOCSRETRIES ioctls as well, they belong in history, along with the SMD disks. OK'ed by: bde
Diffstat (limited to 'sys/i386')
-rw-r--r--sys/i386/boot/dosboot/disklabe.h6
-rw-r--r--sys/i386/isa/wd.c124
-rw-r--r--sys/i386/isa/wdreg.h7
3 files changed, 33 insertions, 104 deletions
diff --git a/sys/i386/boot/dosboot/disklabe.h b/sys/i386/boot/dosboot/disklabe.h
index d3983d3..7b77a08 100644
--- a/sys/i386/boot/dosboot/disklabe.h
+++ b/sys/i386/boot/dosboot/disklabe.h
@@ -367,12 +367,6 @@ extern struct dos_partition dos_partitions[NDOSPART];
#define DIOCWDINFO _IOW('d', 103, struct disklabel)/* set, update disk */
#define DIOCGPART _IOW('d', 104, struct partinfo) /* get partition */
-/* do format operation, read or write */
-#define DIOCRFORMAT _IOWR('d', 105, struct format_op)
-#define DIOCWFORMAT _IOWR('d', 106, struct format_op)
-
-#define DIOCSSTEP _IOW('d', 107, int) /* set step rate */
-#define DIOCSRETRIES _IOW('d', 108, int) /* set # of retries */
#define DIOCWLABEL _IOW('d', 109, int) /* write en/disable label */
#define DIOCSBAD _IOW('d', 110, struct dkbad) /* set kernel dkbad */
diff --git a/sys/i386/isa/wd.c b/sys/i386/isa/wd.c
index dae6c05..3ced09e 100644
--- a/sys/i386/isa/wd.c
+++ b/sys/i386/isa/wd.c
@@ -795,51 +795,41 @@ wdstart(int ctrlr)
du->dk_flags &= ~DKFL_MULTI;
-#ifdef B_FORMAT
- if (bp->b_flags & B_FORMAT) {
- command = WDCC_FORMAT;
- count1 = lp->d_nsectors;
- sector = lp->d_gap3 - 1; /* + 1 later */
- } else
-#endif
-
- {
- if (du->dk_flags & DKFL_SINGLE) {
- command = (bp->b_flags & B_READ)
- ? WDCC_READ : WDCC_WRITE;
- count1 = 1;
- du->dk_currentiosize = 1;
- } else {
- if((du->dk_flags & DKFL_USEDMA) &&
- wddma[du->dk_interface].wdd_dmaverify(du->dk_dmacookie,
- (void *)((int)bp->b_data +
- du->dk_skip * DEV_BSIZE),
- du->dk_bc,
- bp->b_flags & B_READ)) {
- du->dk_flags |= DKFL_DMA;
- if( bp->b_flags & B_READ)
- command = WDCC_READ_DMA;
- else
- command = WDCC_WRITE_DMA;
+ if (du->dk_flags & DKFL_SINGLE) {
+ command = (bp->b_flags & B_READ)
+ ? WDCC_READ : WDCC_WRITE;
+ count1 = 1;
+ du->dk_currentiosize = 1;
+ } else {
+ if((du->dk_flags & DKFL_USEDMA) &&
+ wddma[du->dk_interface].wdd_dmaverify(du->dk_dmacookie,
+ (void *)((int)bp->b_data +
+ du->dk_skip * DEV_BSIZE),
+ du->dk_bc,
+ bp->b_flags & B_READ)) {
+ du->dk_flags |= DKFL_DMA;
+ if( bp->b_flags & B_READ)
+ command = WDCC_READ_DMA;
+ else
+ command = WDCC_WRITE_DMA;
+ du->dk_currentiosize = count1;
+ } else if( (count1 > 1) && (du->dk_multi > 1)) {
+ du->dk_flags |= DKFL_MULTI;
+ if( bp->b_flags & B_READ) {
+ command = WDCC_READ_MULTI;
+ } else {
+ command = WDCC_WRITE_MULTI;
+ }
+ du->dk_currentiosize = du->dk_multi;
+ if( du->dk_currentiosize > count1)
du->dk_currentiosize = count1;
- } else if( (count1 > 1) && (du->dk_multi > 1)) {
- du->dk_flags |= DKFL_MULTI;
- if( bp->b_flags & B_READ) {
- command = WDCC_READ_MULTI;
- } else {
- command = WDCC_WRITE_MULTI;
- }
- du->dk_currentiosize = du->dk_multi;
- if( du->dk_currentiosize > count1)
- du->dk_currentiosize = count1;
+ } else {
+ if( bp->b_flags & B_READ) {
+ command = WDCC_READ;
} else {
- if( bp->b_flags & B_READ) {
- command = WDCC_READ;
- } else {
- command = WDCC_WRITE;
- }
- du->dk_currentiosize = 1;
+ command = WDCC_WRITE;
}
+ du->dk_currentiosize = 1;
}
}
@@ -1058,13 +1048,6 @@ oops:
du->dk_flags |= DKFL_ERROR;
goto outt;
}
-#ifdef B_FORMAT
- if (bp->b_flags & B_FORMAT) {
- bp->b_error = EIO;
- bp->b_flags |= B_ERROR;
- goto done;
- }
-#endif
if (du->dk_flags & DKFL_BADSCAN) {
bp->b_error = EIO;
@@ -1366,7 +1349,7 @@ wdopen(dev_t dev, int flags, int fmt, struct proc *p)
/*
* Implement operations other than read/write.
- * Called from wdstart or wdintr during opens and formats.
+ * Called from wdstart or wdintr during opens.
* Uses finite-state-machine to track progress of operation in progress.
* Returns 0 if operation still in progress, 1 if completed, 2 if error.
*/
@@ -1870,11 +1853,6 @@ wdioctl(dev_t dev, u_long cmd, caddr_t addr, int flags, struct proc *p)
int lunit = dkunit(dev);
register struct disk *du;
int error;
-#ifdef notyet
- struct uio auio;
- struct iovec aiov;
- struct format_op *fop;
-#endif
du = wddrives[lunit];
wdsleep(du->dk_ctrlr, "wdioct");
@@ -1888,47 +1866,11 @@ wdioctl(dev_t dev, u_long cmd, caddr_t addr, int flags, struct proc *p)
else
du->dk_flags &= ~DKFL_BADSCAN;
return (0);
-#ifdef notyet
- case DIOCWFORMAT:
- if (!(flag & FWRITE))
- return (EBADF);
- fop = (struct format_op *)addr;
- aiov.iov_base = fop->df_buf;
- aiov.iov_len = fop->df_count;
- auio.uio_iov = &aiov;
- auio.uio_iovcnt = 1;
- auio.uio_resid = fop->df_count;
- auio.uio_segflg = 0;
- auio.uio_offset = fop->df_startblk * du->dk_dd.d_secsize;
-#error /* XXX the 386BSD interface is different */
- error = physio(wdformat, &rwdbuf[lunit], 0, dev, B_WRITE,
- minphys, &auio);
- fop->df_count -= auio.uio_resid;
- fop->df_reg[0] = du->dk_status;
- fop->df_reg[1] = du->dk_error;
- return (error);
-#endif
-
default:
return (ENOTTY);
}
}
-#ifdef B_FORMAT
-int
-wdformat(struct buf *bp)
-{
-
- bp->b_flags |= B_FORMAT;
- BUF_STRATEGY(bp, 0);
- /*
- * phk put this here, better that return(wdstrategy(bp));
- * XXX
- */
- return -1;
-}
-#endif
-
int
wdsize(dev_t dev)
{
diff --git a/sys/i386/isa/wdreg.h b/sys/i386/isa/wdreg.h
index 1cf76da..f19867a 100644
--- a/sys/i386/isa/wdreg.h
+++ b/sys/i386/isa/wdreg.h
@@ -229,13 +229,6 @@ struct wdparams {
};
/*
- * wd driver entry points
- */
-#ifdef B_FORMAT
-int wdformat(struct buf *bp);
-#endif
-
-/*
* IDE DMA support.
* This is based on what is needed for the IDE DMA function of the Intel
* Triton chipset; hopefully it's general enough to be used for other
OpenPOWER on IntegriCloud