summaryrefslogtreecommitdiff
path: root/sys/scsi
diff options
context:
space:
mode:
authorKenneth R Westerback <krw@cvs.openbsd.org>2019-10-23 13:50:51 +0000
committerKenneth R Westerback <krw@cvs.openbsd.org>2019-10-23 13:50:51 +0000
commitdb1718ae77c3ceb72c00adf6b750068797715425 (patch)
tree68aacf8f826b6cb8f535827db205106149ea13fb /sys/scsi
parent4d6c2a96e91eadebb5073d8a4a76e6d5c3fcd5d9 (diff)
There used to be three possible return values from sd_get_parms(), but
for some years it's been a succeed/fail function. So switch to using 0/-1 as return values and nuke SDGP_RESULT_OFFLINE and SDGP_RESULT_OK #defines. Shake out logic inside sd_get_parms() to take account of the change, making it clearer. Removes a possible panic().
Diffstat (limited to 'sys/scsi')
-rw-r--r--sys/scsi/sd.c49
-rw-r--r--sys/scsi/sdvar.h6
2 files changed, 18 insertions, 37 deletions
diff --git a/sys/scsi/sd.c b/sys/scsi/sd.c
index 8b379ccc982..fa969d60afd 100644
--- a/sys/scsi/sd.c
+++ b/sys/scsi/sd.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: sd.c,v 1.291 2019/10/22 15:46:40 krw Exp $ */
+/* $OpenBSD: sd.c,v 1.292 2019/10/23 13:50:49 krw Exp $ */
/* $NetBSD: sd.c,v 1.111 1997/04/02 02:29:41 mycroft Exp $ */
/*-
@@ -162,7 +162,7 @@ sdattach(struct device *parent, struct device *self, void *aux)
int sd_autoconf = scsi_autoconf | SCSI_SILENT |
SCSI_IGNORE_ILLEGAL_REQUEST | SCSI_IGNORE_MEDIA_CHANGE;
struct dk_cache dkc;
- int error, result, sortby = BUFQ_DEFAULT;
+ int error, sortby = BUFQ_DEFAULT;
SC_DEBUG(link, SDEV_DB2, ("sdattach:\n"));
@@ -211,17 +211,13 @@ sdattach(struct device *parent, struct device *self, void *aux)
/* Check that it is still responding and ok. */
error = scsi_test_unit_ready(sc->sc_link, TEST_READY_RETRIES * 3,
sd_autoconf);
-
- if (error)
- result = SDGP_RESULT_OFFLINE;
- else
- result = sd_get_parms(sc, sd_autoconf);
+ if (error == 0)
+ error = sd_get_parms(sc, sd_autoconf);
if (ISSET(link->flags, SDEV_REMOVABLE))
scsi_prevent(link, PR_ALLOW, sd_autoconf);
- switch (result) {
- case SDGP_RESULT_OK:
+ if (error == 0) {
printf("%s: %lluMB, %lu bytes/sector, %llu sectors",
sc->sc_dev.dv_xname,
dp->disksize / (1048576 / dp->secsize), dp->secsize,
@@ -230,20 +226,9 @@ sdattach(struct device *parent, struct device *self, void *aux)
sortby = BUFQ_FIFO;
printf(", thin");
}
- if (ISSET(link->flags, SDEV_READONLY)) {
+ if (ISSET(link->flags, SDEV_READONLY))
printf(", readonly");
- }
printf("\n");
- break;
-
- case SDGP_RESULT_OFFLINE:
- break;
-
-#ifdef DIAGNOSTIC
- default:
- panic("sdattach: unknown result (%#x) from sd_get_parms", result);
- break;
-#endif /* DIAGNOSTIC */
}
/*
@@ -436,8 +421,7 @@ sdopen(dev_t dev, int flag, int fmt, struct proc *p)
goto die;
}
SET(link->flags, SDEV_MEDIA_LOADED);
- if (sd_get_parms(sc, (rawopen ? SCSI_SILENT : 0))
- == SDGP_RESULT_OFFLINE) {
+ if (sd_get_parms(sc, (rawopen ? SCSI_SILENT : 0)) == -1) {
if (ISSET(sc->flags, SDF_DYING)) {
error = ENXIO;
goto die;
@@ -1714,10 +1698,11 @@ sd_thin_params(struct sd_softc *sc, int flags)
}
/*
- * Fill out the disk parameter structure. Return SDGP_RESULT_OK if the
- * structure is correctly filled in, SDGP_RESULT_OFFLINE otherwise. The caller
- * is responsible for clearing the SDEV_MEDIA_LOADED flag if the structure
- * cannot be completed.
+ * Fill out the disk parameter structure. Return 0 if the structure is correctly
+ * filled in, otherwise return -1.
+ *
+ * The caller is responsible for clearing the SDEV_MEDIA_LOADED flag if the
+ * structure cannot be completed.
*/
int
sd_get_parms(struct sd_softc *sc, int flags)
@@ -1733,7 +1718,7 @@ sd_get_parms(struct sd_softc *sc, int flags)
int err = 0, big;
if (sd_size(sc, flags) != 0)
- return (SDGP_RESULT_OFFLINE);
+ return -1;
if (ISSET(sc->flags, SDF_THIN) && sd_thin_params(sc, flags) != 0) {
/* we dont know the unmap limits, so we cant use thin shizz */
@@ -1836,7 +1821,7 @@ validate:
dma_free(buf, sizeof(*buf));
if (dp->disksize == 0)
- return (SDGP_RESULT_OFFLINE);
+ return -1;
if (dp->secsize == 0)
dp->secsize = (secsize == 0) ? 512 : secsize;
@@ -1857,7 +1842,7 @@ validate:
default:
SC_DEBUG(sc->sc_link, SDEV_DB1,
("sd_get_parms: bad secsize: %#lx\n", dp->secsize));
- return (SDGP_RESULT_OFFLINE);
+ return -1;
}
/*
@@ -1887,11 +1872,11 @@ validate:
dp->sectors = dp->disksize;
}
- return (SDGP_RESULT_OK);
+ return 0;
die:
dma_free(buf, sizeof(*buf));
- return (SDGP_RESULT_OFFLINE);
+ return -1;
}
int
diff --git a/sys/scsi/sdvar.h b/sys/scsi/sdvar.h
index 333239d5774..6cd99951394 100644
--- a/sys/scsi/sdvar.h
+++ b/sys/scsi/sdvar.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: sdvar.h,v 1.43 2019/09/27 23:07:42 krw Exp $ */
+/* $OpenBSD: sdvar.h,v 1.44 2019/10/23 13:50:50 krw Exp $ */
/* $NetBSD: sdvar.h,v 1.7 1998/08/17 00:49:03 mycroft Exp $ */
/*-
@@ -77,9 +77,5 @@ struct sd_softc {
struct scsi_xshandler sc_xsh;
};
-
-#define SDGP_RESULT_OK 0 /* parameters obtained */
-#define SDGP_RESULT_OFFLINE 1 /* no media, or otherwise losing */
-
#endif /* _KERNEL */
#endif /* _SCSI_SDVAR_H */