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
This commit is contained in:
Poul-Henning Kamp 1999-09-01 11:32:52 +00:00
parent 0e8a43c502
commit df8f292395
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=50744
7 changed files with 68 additions and 214 deletions

View file

@ -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 */

View file

@ -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;
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;
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 {
if( bp->b_flags & B_READ) {
command = WDCC_READ;
} else {
command = WDCC_WRITE;
}
du->dk_currentiosize = 1;
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 {
command = WDCC_WRITE;
}
du->dk_currentiosize = 1;
}
}
@ -1058,13 +1048,6 @@ wdintr(void *unitnum)
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)
{

View file

@ -228,13 +228,6 @@ struct wdparams {
short wdp_securelevel; /*94*/
};
/*
* 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

View file

@ -903,51 +903,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;
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;
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 {
if( bp->b_flags & B_READ) {
command = WDCC_READ;
} else {
command = WDCC_WRITE;
}
du->dk_currentiosize = 1;
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 {
command = WDCC_WRITE;
}
du->dk_currentiosize = 1;
}
}
@ -1180,13 +1170,6 @@ wdintr(void *unitnum)
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;
@ -1492,7 +1475,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.
*/
@ -2091,11 +2074,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");
@ -2112,47 +2090,12 @@ 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)
{

View file

@ -387,12 +387,6 @@ struct dos_partition {
#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 */

View file

@ -387,12 +387,6 @@ struct dos_partition {
#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 */

View file

@ -387,12 +387,6 @@ struct dos_partition {
#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 */