From 4927b53333652825a73bf0ecd53914636af6b6d3 Mon Sep 17 00:00:00 2001 From: Florian Eckert Date: Thu, 11 Mar 2021 16:49:18 +0100 Subject: [PATCH 1/3] collectd: prepare ubi plugin for percent calculation This patche change prepares the ubi plugin to add the bad block evaluation in percent. Signed-off-by: Florian Eckert --- .../934-ubi-prepare-read-for-percent.patch | 66 +++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 utils/collectd/patches/934-ubi-prepare-read-for-percent.patch diff --git a/utils/collectd/patches/934-ubi-prepare-read-for-percent.patch b/utils/collectd/patches/934-ubi-prepare-read-for-percent.patch new file mode 100644 index 000000000..0277863b5 --- /dev/null +++ b/utils/collectd/patches/934-ubi-prepare-read-for-percent.patch @@ -0,0 +1,66 @@ +--- a/src/ubi.c ++++ b/src/ubi.c +@@ -84,9 +84,8 @@ static void ubi_submit(const char *dev_n + 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 +97,7 @@ static int ubi_read_dev_attr(const char + return -1; + } + +- n = fscanf(f, "%d", &val); ++ n = fscanf(f, "%d", value); + fclose(f); + + if (n != 1) { +@@ -106,17 +105,39 @@ static int ubi_read_dev_attr(const char + 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 bat_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) { From b4e24c12a6c187565e63b9365df6f88d954bf8c6 Mon Sep 17 00:00:00 2001 From: Florian Eckert Date: Thu, 11 Mar 2021 16:49:50 +0100 Subject: [PATCH 2/3] collectd: add percent calculation of bad block to ubi plugin This patche adds the percent evaluation for the bad blocks. Signed-off-by: Florian Eckert --- .../patches/935-ubi-add-percent.patch | 56 +++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 utils/collectd/patches/935-ubi-add-percent.patch diff --git a/utils/collectd/patches/935-ubi-add-percent.patch b/utils/collectd/patches/935-ubi-add-percent.patch new file mode 100644 index 000000000..4736b85fc --- /dev/null +++ b/utils/collectd/patches/935-ubi-add-percent.patch @@ -0,0 +1,56 @@ +--- a/src/ubi.c ++++ b/src/ubi.c +@@ -35,6 +35,9 @@ + #define DEV_BAD_COUNT \ + "bad_peb_count" // Count of bad physical eraseblocks on the underlying MTD + // device. ++// Value reserved for bad block ++#define DEV_RESERVED_BAD_BLOCK "reserved_for_bad" ++ + #define MAXIMUM_ERASE "max_ec" // Current maximum erase counter value + + /* +@@ -140,6 +143,35 @@ static inline int ubi_read_max_ec(const + return 0; + } /* int ubi_read_max_ec */ + ++static inline int ubi_read_percent(const char *dev_name) { ++ int ret; ++ int bcount; ++ int bblock; ++ ++ ret = ubi_read_dev_attr(dev_name, DEV_BAD_COUNT, &bcount); ++ ++ if (ret != 0) { ++ ERROR(PLUGIN_NAME " : Unable to read bad_peb_count"); ++ return -1; ++ } ++ ++ ret = ubi_read_dev_attr(dev_name, DEV_RESERVED_BAD_BLOCK, &bblock); ++ ++ if (ret != 0) { ++ ERROR(PLUGIN_NAME " : Unable to read reserved_for_bad"); ++ return -1; ++ } ++ ++ if (bblock == 0) { ++ ERROR(PLUGIN_NAME " : Percentage value cannot be determined (reserved_for_bad = 0)"); ++ return -2; ++ } ++ ++ ubi_submit(dev_name, "percent", (gauge_t)((float_t)bcount / (float_t)bblock * 100.0)); ++ ++ return 0; ++} /* int ubi_read_percent */ ++ + static int ubi_read(void) { + DIR *dir; + struct dirent *dirent; +@@ -155,6 +187,7 @@ static int ubi_read(void) { + + ubi_read_dev_bad_count(dirent->d_name); + ubi_read_max_ec(dirent->d_name); ++ ubi_read_percent(dirent->d_name); + } + + closedir(dir); From 1e2ba94064c3b99bd8543df9283933d84fdc4707 Mon Sep 17 00:00:00 2001 From: Florian Eckert Date: Tue, 23 Mar 2021 10:22:12 +0100 Subject: [PATCH 3/3] collectd: update PKG_RELEASE Signed-off-by: Florian Eckert --- utils/collectd/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/collectd/Makefile b/utils/collectd/Makefile index 3b09bb44f..52d523252 100644 --- a/utils/collectd/Makefile +++ b/utils/collectd/Makefile @@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=collectd PKG_VERSION:=5.12.0 -PKG_RELEASE:=8 +PKG_RELEASE:=9 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2 PKG_SOURCE_URL:=https://collectd.org/files/ \