summaryrefslogtreecommitdiff
path: root/sys/dev
diff options
context:
space:
mode:
authorchristos <christos@NetBSD.org>2015-03-12 15:33:10 +0000
committerchristos <christos@NetBSD.org>2015-03-12 15:33:10 +0000
commit8a37ef05f971c57b733b591aea54be04e92db8a0 (patch)
tree336595502ec027ff54480183cfaae9e73577a1b2 /sys/dev
parent9a627e1c771e2a15bc99198a6d5af2058b3a34ab (diff)
Dedup the conversion of bioc_disk and bioc_vol to envsys_data_t
Diffstat (limited to 'sys/dev')
-rw-r--r--sys/dev/bio.c66
-rw-r--r--sys/dev/biovar.h6
-rw-r--r--sys/dev/ic/cac.c40
-rw-r--r--sys/dev/ic/ciss.c39
-rw-r--r--sys/dev/ic/mfi.c30
-rw-r--r--sys/dev/pci/arcmsr.c77
-rw-r--r--sys/dev/pci/mpii.c30
7 files changed, 98 insertions, 190 deletions
diff --git a/sys/dev/bio.c b/sys/dev/bio.c
index 89ddc78669c..127d0fc5c36 100644
--- a/sys/dev/bio.c
+++ b/sys/dev/bio.c
@@ -1,4 +1,4 @@
-/* $NetBSD: bio.c,v 1.11 2014/07/25 08:10:35 dholland Exp $ */
+/* $NetBSD: bio.c,v 1.12 2015/03/12 15:33:10 christos Exp $ */
/* $OpenBSD: bio.c,v 1.9 2007/03/20 02:35:55 marco Exp $ */
/*
@@ -28,7 +28,7 @@
/* A device controller ioctl tunnelling device. */
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: bio.c,v 1.11 2014/07/25 08:10:35 dholland Exp $");
+__KERNEL_RCSID(0, "$NetBSD: bio.c,v 1.12 2015/03/12 15:33:10 christos Exp $");
#include "opt_compat_netbsd.h"
@@ -45,6 +45,7 @@ __KERNEL_RCSID(0, "$NetBSD: bio.c,v 1.11 2014/07/25 08:10:35 dholland Exp $");
#include <sys/kauth.h>
#include <dev/biovar.h>
+#include <dev/sysmon/sysmonvar.h>
struct bio_mapping {
LIST_ENTRY(bio_mapping) bm_link;
@@ -302,3 +303,64 @@ bio_delegate_ioctl(void *cookie, u_long cmd, void *addr)
return bm->bm_ioctl(bm->bm_dev, cmd, addr);
}
+
+void
+bio_disk_to_envsys(envsys_data_t *edata, const struct bioc_disk *bd)
+{
+ switch (bd->bd_status) {
+ case BIOC_SDONLINE:
+ edata->value_cur = ENVSYS_DRIVE_ONLINE;
+ edata->state = ENVSYS_SVALID;
+ break;
+ case BIOC_SDOFFLINE:
+ edata->value_cur = ENVSYS_DRIVE_OFFLINE;
+ edata->state = ENVSYS_SCRITICAL;
+ break;
+ default:
+ edata->value_cur = ENVSYS_DRIVE_FAIL;
+ edata->state = ENVSYS_SCRITICAL;
+ break;
+ }
+}
+
+void
+bio_vol_to_envsys(envsys_data_t *edata, const struct bioc_vol *bv)
+{
+ switch (bv->bv_status) {
+ case BIOC_SVOFFLINE:
+ edata->value_cur = ENVSYS_DRIVE_OFFLINE;
+ edata->state = ENVSYS_SCRITICAL;
+ break;
+ case BIOC_SVDEGRADED:
+ edata->value_cur = ENVSYS_DRIVE_PFAIL;
+ edata->state = ENVSYS_SCRITICAL;
+ break;
+ case BIOC_SVBUILDING:
+ edata->value_cur = ENVSYS_DRIVE_BUILD;
+ edata->state = ENVSYS_SVALID;
+ break;
+ case BIOC_SVMIGRATING:
+ edata->value_cur = ENVSYS_DRIVE_MIGRATING;
+ edata->state = ENVSYS_SVALID;
+ break;
+ case BIOC_SVCHECKING:
+ edata->value_cur = ENVSYS_DRIVE_CHECK;
+ edata->state = ENVSYS_SVALID;
+ break;
+ case BIOC_SVREBUILD:
+ edata->value_cur = ENVSYS_DRIVE_REBUILD;
+ edata->state = ENVSYS_SCRITICAL;
+ break;
+ case BIOC_SVSCRUB:
+ case BIOC_SVONLINE:
+ edata->value_cur = ENVSYS_DRIVE_ONLINE;
+ edata->state = ENVSYS_SVALID;
+ break;
+ case BIOC_SVINVALID:
+ /* FALLTHROUGH */
+ default:
+ edata->value_cur = ENVSYS_DRIVE_EMPTY; /* unknown state */
+ edata->state = ENVSYS_SINVALID;
+ break;
+ }
+}
diff --git a/sys/dev/biovar.h b/sys/dev/biovar.h
index 980ff4f6f70..cc7968de4d8 100644
--- a/sys/dev/biovar.h
+++ b/sys/dev/biovar.h
@@ -1,4 +1,4 @@
-/* $NetBSD: biovar.h,v 1.8 2009/05/07 12:15:33 cegger Exp $ */
+/* $NetBSD: biovar.h,v 1.9 2015/03/12 15:33:10 christos Exp $ */
/* $OpenBSD: biovar.h,v 1.26 2007/03/19 03:02:08 marco Exp $ */
/*
@@ -256,4 +256,8 @@ struct bioc_volops {
int bc_volid; /* volume id to be created/removed */
};
+struct envsys_data;
+void bio_disk_to_envsys(struct envsys_data *, const struct bioc_disk *);
+void bio_vol_to_envsys(struct envsys_data *, const struct bioc_vol *) ;
+
#endif /* ! _DEV_BIOVAR_H_ */
diff --git a/sys/dev/ic/cac.c b/sys/dev/ic/cac.c
index 8aa17bc6dae..fd461b4ef82 100644
--- a/sys/dev/ic/cac.c
+++ b/sys/dev/ic/cac.c
@@ -1,4 +1,4 @@
-/* $NetBSD: cac.c,v 1.54 2012/10/27 17:18:19 chs Exp $ */
+/* $NetBSD: cac.c,v 1.55 2015/03/12 15:33:10 christos Exp $ */
/*-
* Copyright (c) 2000, 2006, 2007 The NetBSD Foundation, Inc.
@@ -34,7 +34,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: cac.c,v 1.54 2012/10/27 17:18:19 chs Exp $");
+__KERNEL_RCSID(0, "$NetBSD: cac.c,v 1.55 2015/03/12 15:33:10 christos Exp $");
#include "bio.h"
@@ -723,40 +723,10 @@ cac_sensor_refresh(struct sysmon_envsys *sme, envsys_data_t *edata)
memset(&bv, 0, sizeof(bv));
bv.bv_volid = edata->sensor;
s = splbio();
- if (cac_ioctl_vol(sc, &bv)) {
- splx(s);
- return;
- }
+ if (cac_ioctl_vol(sc, &bv))
+ bv.bv_status = BIOC_SVINVALID;
splx(s);
- switch(bv.bv_status) {
- case BIOC_SVOFFLINE:
- edata->value_cur = ENVSYS_DRIVE_FAIL;
- edata->state = ENVSYS_SCRITICAL;
- break;
-
- case BIOC_SVDEGRADED:
- edata->value_cur = ENVSYS_DRIVE_PFAIL;
- edata->state = ENVSYS_SCRITICAL;
- break;
-
- case BIOC_SVSCRUB:
- case BIOC_SVONLINE:
- edata->value_cur = ENVSYS_DRIVE_ONLINE;
- edata->state = ENVSYS_SVALID;
- break;
-
- case BIOC_SVREBUILD:
- case BIOC_SVBUILDING:
- edata->value_cur = ENVSYS_DRIVE_REBUILD;
- edata->state = ENVSYS_SVALID;
- break;
-
- case BIOC_SVINVALID:
- /* FALLTRHOUGH */
- default:
- edata->value_cur = 0; /* unknown */
- edata->state = ENVSYS_SINVALID;
- }
+ bio_vol_to_envsys(edata, &bv);
}
#endif /* NBIO > 0 */
diff --git a/sys/dev/ic/ciss.c b/sys/dev/ic/ciss.c
index 1ed754ffea2..c84f3ad39d6 100644
--- a/sys/dev/ic/ciss.c
+++ b/sys/dev/ic/ciss.c
@@ -1,4 +1,4 @@
-/* $NetBSD: ciss.c,v 1.32 2013/10/17 21:24:24 christos Exp $ */
+/* $NetBSD: ciss.c,v 1.33 2015/03/12 15:33:10 christos Exp $ */
/* $OpenBSD: ciss.c,v 1.68 2013/05/30 16:15:02 deraadt Exp $ */
/*
@@ -19,7 +19,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ciss.c,v 1.32 2013/10/17 21:24:24 christos Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ciss.c,v 1.33 2015/03/12 15:33:10 christos Exp $");
#include "bio.h"
@@ -1541,38 +1541,9 @@ ciss_sensor_refresh(struct sysmon_envsys *sme, envsys_data_t *edata)
memset(&bv, 0, sizeof(bv));
bv.bv_volid = edata->sensor;
- if (ciss_ioctl_vol(sc, &bv)) {
- return;
- }
-
- switch(bv.bv_status) {
- case BIOC_SVOFFLINE:
- edata->value_cur = ENVSYS_DRIVE_FAIL;
- edata->state = ENVSYS_SCRITICAL;
- break;
-
- case BIOC_SVDEGRADED:
- edata->value_cur = ENVSYS_DRIVE_PFAIL;
- edata->state = ENVSYS_SCRITICAL;
- break;
+ if (ciss_ioctl_vol(sc, &bv))
+ bv.bv_status = BIOC_SVINVALID;
- case BIOC_SVSCRUB:
- case BIOC_SVONLINE:
- edata->value_cur = ENVSYS_DRIVE_ONLINE;
- edata->state = ENVSYS_SVALID;
- break;
-
- case BIOC_SVREBUILD:
- case BIOC_SVBUILDING:
- edata->value_cur = ENVSYS_DRIVE_REBUILD;
- edata->state = ENVSYS_SVALID;
- break;
-
- case BIOC_SVINVALID:
- /* FALLTRHOUGH */
- default:
- edata->value_cur = 0; /* unknown */
- edata->state = ENVSYS_SINVALID;
- }
+ bio_vol_to_envsys(edata, &bv);
}
#endif /* NBIO > 0 */
diff --git a/sys/dev/ic/mfi.c b/sys/dev/ic/mfi.c
index 7dc3430b8e1..34eb3efa949 100644
--- a/sys/dev/ic/mfi.c
+++ b/sys/dev/ic/mfi.c
@@ -1,4 +1,4 @@
-/* $NetBSD: mfi.c,v 1.55 2014/08/21 15:43:35 christos Exp $ */
+/* $NetBSD: mfi.c,v 1.56 2015/03/12 15:33:10 christos Exp $ */
/* $OpenBSD: mfi.c,v 1.66 2006/11/28 23:59:45 dlg Exp $ */
/*
@@ -73,7 +73,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: mfi.c,v 1.55 2014/08/21 15:43:35 christos Exp $");
+__KERNEL_RCSID(0, "$NetBSD: mfi.c,v 1.56 2015/03/12 15:33:10 christos Exp $");
#include "bio.h"
@@ -2638,31 +2638,9 @@ mfi_sensor_refresh(struct sysmon_envsys *sme, envsys_data_t *edata)
splx(s);
KERNEL_UNLOCK_ONE(curlwp);
if (error)
- return;
-
- switch(bv.bv_status) {
- case BIOC_SVOFFLINE:
- edata->value_cur = ENVSYS_DRIVE_FAIL;
- edata->state = ENVSYS_SCRITICAL;
- break;
-
- case BIOC_SVDEGRADED:
- edata->value_cur = ENVSYS_DRIVE_PFAIL;
- edata->state = ENVSYS_SCRITICAL;
- break;
+ bv.bv_status = BIOC_SVINVALID;
- case BIOC_SVSCRUB:
- case BIOC_SVONLINE:
- edata->value_cur = ENVSYS_DRIVE_ONLINE;
- edata->state = ENVSYS_SVALID;
- break;
-
- case BIOC_SVINVALID:
- /* FALLTRHOUGH */
- default:
- edata->value_cur = 0; /* unknown */
- edata->state = ENVSYS_SINVALID;
- }
+ bio_vol_to_envsys(edata, &bv);
}
#endif /* NBIO > 0 */
diff --git a/sys/dev/pci/arcmsr.c b/sys/dev/pci/arcmsr.c
index beaa839dacf..05cabeba77d 100644
--- a/sys/dev/pci/arcmsr.c
+++ b/sys/dev/pci/arcmsr.c
@@ -1,4 +1,4 @@
-/* $NetBSD: arcmsr.c,v 1.31 2014/03/29 19:28:24 christos Exp $ */
+/* $NetBSD: arcmsr.c,v 1.32 2015/03/12 15:33:10 christos Exp $ */
/* $OpenBSD: arc.c,v 1.68 2007/10/27 03:28:27 dlg Exp $ */
/*
@@ -21,7 +21,7 @@
#include "bio.h"
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: arcmsr.c,v 1.31 2014/03/29 19:28:24 christos Exp $");
+__KERNEL_RCSID(0, "$NetBSD: arcmsr.c,v 1.32 2015/03/12 15:33:10 christos Exp $");
#include <sys/param.h>
#include <sys/buf.h>
@@ -1841,78 +1841,23 @@ arc_refresh_sensors(struct sysmon_envsys *sme, envsys_data_t *edata)
bv.bv_volid = arcdata->arc_volid;
if (arc_bio_vol(sc, &bv)) {
- edata->value_cur = ENVSYS_DRIVE_EMPTY;
- edata->state = ENVSYS_SINVALID;
+ bv.bv_status = BIOC_SVINVALID;
+ bio_vol_to_envsys(edata, &bv);
return;
}
- /* Current sensor is handling a disk volume member */
if (arcdata->arc_diskid) {
+ /* Current sensor is handling a disk volume member */
memset(&bd, 0, sizeof(bd));
bd.bd_volid = arcdata->arc_volid;
bd.bd_diskid = arcdata->arc_diskid - 10;
- if (arc_bio_disk_volume(sc, &bd)) {
- edata->value_cur = ENVSYS_DRIVE_OFFLINE;
- edata->state = ENVSYS_SCRITICAL;
- return;
- }
-
- switch (bd.bd_status) {
- case BIOC_SDONLINE:
- edata->value_cur = ENVSYS_DRIVE_ONLINE;
- edata->state = ENVSYS_SVALID;
- break;
- case BIOC_SDOFFLINE:
- edata->value_cur = ENVSYS_DRIVE_OFFLINE;
- edata->state = ENVSYS_SCRITICAL;
- break;
- default:
- edata->value_cur = ENVSYS_DRIVE_FAIL;
- edata->state = ENVSYS_SCRITICAL;
- break;
- }
-
- return;
- }
-
- /* Current sensor is handling a volume */
- switch (bv.bv_status) {
- case BIOC_SVOFFLINE:
- edata->value_cur = ENVSYS_DRIVE_OFFLINE;
- edata->state = ENVSYS_SCRITICAL;
- break;
- case BIOC_SVDEGRADED:
- edata->value_cur = ENVSYS_DRIVE_PFAIL;
- edata->state = ENVSYS_SCRITICAL;
- break;
- case BIOC_SVBUILDING:
- edata->value_cur = ENVSYS_DRIVE_BUILD;
- edata->state = ENVSYS_SVALID;
- break;
- case BIOC_SVMIGRATING:
- edata->value_cur = ENVSYS_DRIVE_MIGRATING;
- edata->state = ENVSYS_SVALID;
- break;
- case BIOC_SVCHECKING:
- edata->value_cur = ENVSYS_DRIVE_CHECK;
- edata->state = ENVSYS_SVALID;
- break;
- case BIOC_SVREBUILD:
- edata->value_cur = ENVSYS_DRIVE_REBUILD;
- edata->state = ENVSYS_SCRITICAL;
- break;
- case BIOC_SVSCRUB:
- case BIOC_SVONLINE:
- edata->value_cur = ENVSYS_DRIVE_ONLINE;
- edata->state = ENVSYS_SVALID;
- break;
- case BIOC_SVINVALID:
- /* FALLTHROUGH */
- default:
- edata->value_cur = ENVSYS_DRIVE_EMPTY; /* unknown state */
- edata->state = ENVSYS_SINVALID;
- break;
+ if (arc_bio_disk_volume(sc, &bd))
+ bd.bd_status = BIOC_SDOFFLINE;
+ bio_disk_to_envsys(edata, &bd);
+ } else {
+ /* Current sensor is handling a volume */
+ bio_vol_to_envsys(edata, &bv);
}
}
#endif /* NBIO > 0 */
diff --git a/sys/dev/pci/mpii.c b/sys/dev/pci/mpii.c
index af69a0c579c..2e07ed4c5a4 100644
--- a/sys/dev/pci/mpii.c
+++ b/sys/dev/pci/mpii.c
@@ -1,4 +1,4 @@
-/* $NetBSD: mpii.c,v 1.5 2014/03/29 19:28:25 christos Exp $ */
+/* $NetBSD: mpii.c,v 1.6 2015/03/12 15:33:10 christos Exp $ */
/* OpenBSD: mpii.c,v 1.51 2012/04/11 13:29:14 naddy Exp */
/*
* Copyright (c) 2010 Mike Belopuhov <mkb@crypt.org.ru>
@@ -20,7 +20,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: mpii.c,v 1.5 2014/03/29 19:28:25 christos Exp $");
+__KERNEL_RCSID(0, "$NetBSD: mpii.c,v 1.6 2015/03/12 15:33:10 christos Exp $");
#include "bio.h"
@@ -5571,29 +5571,7 @@ mpii_refresh_sensors(struct sysmon_envsys *sme, envsys_data_t *edata)
splx(s);
KERNEL_UNLOCK_ONE(curlwp);
if (error)
- return;
- switch(bv.bv_status) {
- case BIOC_SVOFFLINE:
- edata->value_cur = ENVSYS_DRIVE_FAIL;
- edata->state = ENVSYS_SCRITICAL;
- break;
- case BIOC_SVDEGRADED:
- edata->value_cur = ENVSYS_DRIVE_PFAIL;
- edata->state = ENVSYS_SCRITICAL;
- break;
- case BIOC_SVREBUILD:
- edata->value_cur = ENVSYS_DRIVE_REBUILD;
- edata->state = ENVSYS_SVALID;
- break;
- case BIOC_SVONLINE:
- edata->value_cur = ENVSYS_DRIVE_ONLINE;
- edata->state = ENVSYS_SVALID;
- break;
- case BIOC_SVINVALID:
- /* FALLTHROUGH */
- default:
- edata->value_cur = 0; /* unknown */
- edata->state = ENVSYS_SINVALID;
- }
+ bv.bv_status = BIOC_SVINVALID;
+ bio_vol_to_envsys(edata, &bv);
}
#endif /* NBIO > 0 */