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/bio.c | |
| parent | 9a627e1c771e2a15bc99198a6d5af2058b3a34ab (diff) | |
Dedup the conversion of bioc_disk and bioc_vol to envsys_data_t
Diffstat (limited to 'sys/dev/bio.c')
| -rw-r--r-- | sys/dev/bio.c | 66 |
1 files changed, 64 insertions, 2 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; + } +} |
