]> git.ipfire.org Git - thirdparty/collectd.git/commitdiff
ubi: perpartion for percentage evaluation of the bad blocks
authorFlorian Eckert <fe@dev.tdt.de>
Thu, 11 Mar 2021 16:53:16 +0000 (17:53 +0100)
committerMatthias Runge <mrunge@matthias-runge.de>
Thu, 9 Sep 2021 05:41:41 +0000 (07:41 +0200)
This change prepares the ubi plugin to add the bad block evaluation in
percent.

Signed-off-by: Florian Eckert <fe@dev.tdt.de>
src/ubi.c

index 0485db872db965208a3c4f969f5d2353beb59c37..0474aa68ecc3c220b300b03165581550608b70fd 100644 (file)
--- a/src/ubi.c
+++ b/src/ubi.c
@@ -84,9 +84,9 @@ static void ubi_submit(const char *dev_name, const char *type, gauge_t value) {
   plugin_dispatch_values(&vl);
 } /* void ubi_submit */
 
-static int ubi_read_dev_attr(const char *dev_name, const char *attr) {
+static int ubi_read_dev_attr(const char *dev_name, const char *attr,
+                             int *value) {
   FILE *f;
-  int val;
   char
       str[sizeof(SYS_PATH) + strlen(dev_name) + sizeof("/") + strlen(attr) + 1];
   int n;
@@ -98,7 +98,7 @@ static int ubi_read_dev_attr(const char *dev_name, const char *attr) {
     return -1;
   }
 
-  n = fscanf(f, "%d", &val);
+  n = fscanf(f, "%d", value);
   fclose(f);
 
   if (n != 1) {
@@ -106,17 +106,39 @@ static int ubi_read_dev_attr(const char *dev_name, const char *attr) {
     return -1;
   }
 
-  ubi_submit(dev_name, attr, (gauge_t)val);
-
   return 0;
 } /* int ubi_read_dev_attr */
 
 static inline int ubi_read_dev_bad_count(const char *dev_name) {
-  return ubi_read_dev_attr(dev_name, DEV_BAD_COUNT);
+  int ret;
+  int value;
+
+  ret = ubi_read_dev_attr(dev_name, DEV_BAD_COUNT, &value);
+
+  if (ret != 0) {
+    ERROR(PLUGIN_NAME " : Unable to read bad_peb_count");
+    return -1;
+  }
+
+  ubi_submit(dev_name, DEV_BAD_COUNT, (gauge_t)value);
+
+  return 0;
 } /* int ubi_read_dev_bad_count */
 
 static inline int ubi_read_max_ec(const char *dev_name) {
-  return ubi_read_dev_attr(dev_name, MAXIMUM_ERASE);
+  int ret;
+  int value;
+
+  ret = ubi_read_dev_attr(dev_name, MAXIMUM_ERASE, &value);
+
+  if (ret != 0) {
+    ERROR(PLUGIN_NAME " : Unable to read max_ec");
+    return -1;
+  }
+
+  ubi_submit(dev_name, MAXIMUM_ERASE, (gauge_t)value);
+
+  return 0;
 } /* int ubi_read_max_ec */
 
 static int ubi_read(void) {