diff options
| author | christos <christos@NetBSD.org> | 2015-03-12 15:33:10 +0000 |
|---|---|---|
| committer | christos <christos@NetBSD.org> | 2015-03-12 15:33:10 +0000 |
| commit | 8a37ef05f971c57b733b591aea54be04e92db8a0 (patch) | |
| tree | 336595502ec027ff54480183cfaae9e73577a1b2 /sys/dev | |
| parent | 9a627e1c771e2a15bc99198a6d5af2058b3a34ab (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.c | 66 | ||||
| -rw-r--r-- | sys/dev/biovar.h | 6 | ||||
| -rw-r--r-- | sys/dev/ic/cac.c | 40 | ||||
| -rw-r--r-- | sys/dev/ic/ciss.c | 39 | ||||
| -rw-r--r-- | sys/dev/ic/mfi.c | 30 | ||||
| -rw-r--r-- | sys/dev/pci/arcmsr.c | 77 | ||||
| -rw-r--r-- | sys/dev/pci/mpii.c | 30 |
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 */ |
