Module Name: src Committed By: christos Date: Thu Mar 12 15:33:10 UTC 2015
Modified Files: src/sys/dev: bio.c biovar.h src/sys/dev/ic: cac.c ciss.c mfi.c src/sys/dev/pci: arcmsr.c mpii.c Log Message: Dedup the conversion of bioc_disk and bioc_vol to envsys_data_t To generate a diff of this commit: cvs rdiff -u -r1.11 -r1.12 src/sys/dev/bio.c cvs rdiff -u -r1.8 -r1.9 src/sys/dev/biovar.h cvs rdiff -u -r1.54 -r1.55 src/sys/dev/ic/cac.c cvs rdiff -u -r1.32 -r1.33 src/sys/dev/ic/ciss.c cvs rdiff -u -r1.55 -r1.56 src/sys/dev/ic/mfi.c cvs rdiff -u -r1.31 -r1.32 src/sys/dev/pci/arcmsr.c cvs rdiff -u -r1.5 -r1.6 src/sys/dev/pci/mpii.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/dev/bio.c diff -u src/sys/dev/bio.c:1.11 src/sys/dev/bio.c:1.12 --- src/sys/dev/bio.c:1.11 Fri Jul 25 04:10:35 2014 +++ src/sys/dev/bio.c Thu Mar 12 11:33:10 2015 @@ -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 #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 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; + } +} Index: src/sys/dev/biovar.h diff -u src/sys/dev/biovar.h:1.8 src/sys/dev/biovar.h:1.9 --- src/sys/dev/biovar.h:1.8 Thu May 7 08:15:33 2009 +++ src/sys/dev/biovar.h Thu Mar 12 11:33:10 2015 @@ -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_ */ Index: src/sys/dev/ic/cac.c diff -u src/sys/dev/ic/cac.c:1.54 src/sys/dev/ic/cac.c:1.55 --- src/sys/dev/ic/cac.c:1.54 Sat Oct 27 13:18:19 2012 +++ src/sys/dev/ic/cac.c Thu Mar 12 11:33:10 2015 @@ -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 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 */ Index: src/sys/dev/ic/ciss.c diff -u src/sys/dev/ic/ciss.c:1.32 src/sys/dev/ic/ciss.c:1.33 --- src/sys/dev/ic/ciss.c:1.32 Thu Oct 17 17:24:24 2013 +++ src/sys/dev/ic/ciss.c Thu Mar 12 11:33:10 2015 @@ -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 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 */ Index: src/sys/dev/ic/mfi.c diff -u src/sys/dev/ic/mfi.c:1.55 src/sys/dev/ic/mfi.c:1.56 --- src/sys/dev/ic/mfi.c:1.55 Thu Aug 21 11:43:35 2014 +++ src/sys/dev/ic/mfi.c Thu Mar 12 11:33:10 2015 @@ -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 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 */ Index: src/sys/dev/pci/arcmsr.c diff -u src/sys/dev/pci/arcmsr.c:1.31 src/sys/dev/pci/arcmsr.c:1.32 --- src/sys/dev/pci/arcmsr.c:1.31 Sat Mar 29 15:28:24 2014 +++ src/sys/dev/pci/arcmsr.c Thu Mar 12 11:33:10 2015 @@ -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 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 */ Index: src/sys/dev/pci/mpii.c diff -u src/sys/dev/pci/mpii.c:1.5 src/sys/dev/pci/mpii.c:1.6 --- src/sys/dev/pci/mpii.c:1.5 Sat Mar 29 15:28:25 2014 +++ src/sys/dev/pci/mpii.c Thu Mar 12 11:33:10 2015 @@ -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 <m...@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_envsy 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 */