summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: 9ce2a30)
raw | patch | inline | side by side (parent: 9ce2a30)
author | Florian Forster <octo@collectd.org> | |
Tue, 28 Feb 2012 08:54:59 +0000 (09:54 +0100) | ||
committer | Florian Forster <octo@collectd.org> | |
Tue, 28 Feb 2012 08:54:59 +0000 (09:54 +0100) |
This hopefully makes graphing easier.
src/md.c | patch | blob | history |
diff --git a/src/md.c b/src/md.c
index fdac4e3d7478a75a82d7cc1ae6743a2eab6889e1..3725f9a9b78fc2c10fcd676b529c9a9e2df3144d 100644 (file)
--- a/src/md.c
+++ b/src/md.c
int fd;
struct stat st;
mdu_array_info_t array;
+ gauge_t disks_missing;
fd = open (path, O_RDONLY);
if (fd < 0)
close (fd);
- md_submit (minor, "number", (gauge_t) array.nr_disks);
- md_submit (minor, "raid", (gauge_t) array.raid_disks);
+ /*
+ * The mdu_array_info_t structure contains numbers of disks in the array.
+ * However, disks are accounted for more than once:
+ *
+ * active: Number of active (in sync) disks.
+ * spare: Number of stand-by disks.
+ * working: Number of working disks. (active + sync)
+ * failed: Number of failed disks.
+ * nr: Number of physically present disks. (working + failed)
+ * raid: Number of disks in the RAID. This may be larger than "nr" if
+ * disks are missing and smaller than "nr" when spare disks are
+ * around.
+ */
md_submit (minor, "active", (gauge_t) array.active_disks);
- md_submit (minor, "working", (gauge_t) array.working_disks);
md_submit (minor, "failed", (gauge_t) array.failed_disks);
md_submit (minor, "spare", (gauge_t) array.spare_disks);
- return;
+ disks_missing = 0.0;
+ if (array.raid_disks > array.nr_disks)
+ disks_missing = (gauge_t) (array.raid_disks - array.nr_disks);
+ md_submit (minor, "missing", disks_missing);
} /* void md_process */
static int md_read (void)