fdc->sc_state = SEEKCOMPLETE; disk_busy(&fd->sc_dk);
fdc->sc_state = DOSEEK;
fdcretry(fdc)	struct fdc_softc *fdc;{	struct fd_softc *fd;	struct buf *bp;	fd = fdc->sc_drives.tqh_first;	bp = fd->sc_q.b_actf;	switch (fdc->sc_errors) {	case 0:		/* try again */		fdc->sc_state = SEEKCOMPLETE;		disk_busy(&fd->sc_dk);		break;	case 1: case 2: case 3:		/* didn't work; try recalibrating */		fdc->sc_state = DORECAL;		break;	case 4:		/* still no go; reset the bastard */		fdc->sc_state = DORESET;		break;	default:		diskerr(bp, "fd", "hard error", LOG_PRINTF,		    fd->sc_skip / FDC_BSIZE, (struct disklabel *)NULL);		printf(" (st0 %b st1 %b st2 %b cyl %d head %d sec %d)\n",		    fdc->sc_status[0], NE7_ST0BITS,		    fdc->sc_status[1], NE7_ST1BITS,		    fdc->sc_status[2], NE7_ST2BITS,		    fdc->sc_status[3], fdc->sc_status[4], fdc->sc_status[5]);		bp->b_flags |= B_ERROR;		bp->b_error = EIO;		fdfinish(fd, bp);	}	fdc->sc_errors++;}