src/utils_mount.c: Add code path for HAVE_GETMNTENT_R.
[collectd.git] / src / disk.c
index cbb1e38..cfda635 100644 (file)
@@ -127,7 +127,7 @@ static int numdisk = 0;
 /* #endif HAVE_LIBKSTAT */
 
 #elif defined(HAVE_LIBSTATGRAB)
-/* #endif HAVE_LIBKSTATGRAB */
+/* #endif HAVE_LIBSTATGRAB */
 
 #elif HAVE_PERFSTAT
 static perfstat_disk_t *stat_disk;
@@ -270,15 +270,13 @@ static int disk_shutdown(void) {
 
 static void disk_submit(const char *plugin_instance, const char *type,
                         derive_t read, derive_t write) {
-  value_t values[2];
   value_list_t vl = VALUE_LIST_INIT;
-
-  values[0].derive = read;
-  values[1].derive = write;
+  value_t values[] = {
+      {.derive = read}, {.derive = write},
+  };
 
   vl.values = values;
-  vl.values_len = 2;
-  sstrncpy(vl.host, hostname_g, sizeof(vl.host));
+  vl.values_len = STATIC_ARRAY_SIZE(values);
   sstrncpy(vl.plugin, "disk", sizeof(vl.plugin));
   sstrncpy(vl.plugin_instance, plugin_instance, sizeof(vl.plugin_instance));
   sstrncpy(vl.type, type, sizeof(vl.type));
@@ -289,15 +287,13 @@ static void disk_submit(const char *plugin_instance, const char *type,
 #if KERNEL_FREEBSD || KERNEL_LINUX
 static void submit_io_time(char const *plugin_instance, derive_t io_time,
                            derive_t weighted_time) {
-  value_t values[2];
   value_list_t vl = VALUE_LIST_INIT;
-
-  values[0].derive = io_time;
-  values[1].derive = weighted_time;
+  value_t values[] = {
+      {.derive = io_time}, {.derive = weighted_time},
+  };
 
   vl.values = values;
-  vl.values_len = 2;
-  sstrncpy(vl.host, hostname_g, sizeof(vl.host));
+  vl.values_len = STATIC_ARRAY_SIZE(values);
   sstrncpy(vl.plugin, "disk", sizeof(vl.plugin));
   sstrncpy(vl.plugin_instance, plugin_instance, sizeof(vl.plugin_instance));
   sstrncpy(vl.type, "disk_io_time", sizeof(vl.type));
@@ -308,14 +304,10 @@ static void submit_io_time(char const *plugin_instance, derive_t io_time,
 
 #if KERNEL_LINUX
 static void submit_in_progress(char const *disk_name, gauge_t in_progress) {
-  value_t v;
   value_list_t vl = VALUE_LIST_INIT;
 
-  v.gauge = in_progress;
-
-  vl.values = &v;
+  vl.values = &(value_t){.gauge = in_progress};
   vl.values_len = 1;
-  sstrncpy(vl.host, hostname_g, sizeof(vl.host));
   sstrncpy(vl.plugin, "disk", sizeof(vl.plugin));
   sstrncpy(vl.plugin_instance, disk_name, sizeof(vl.plugin_instance));
   sstrncpy(vl.type, "pending_operations", sizeof(vl.type));
@@ -703,7 +695,9 @@ static int disk_read(void) {
 
     numfields = strsplit(buffer, fields, 32);
 
-    if ((numfields != (14 + fieldshift)) && (numfields != 7))
+    /* need either 7 fields (partition)
+     * or at least 14 fields (15 on Linux 2.4) */
+    if ((numfields != 7) && (numfields < (14 + fieldshift)))
       continue;
 
     minor = atoll(fields[1]);
@@ -737,7 +731,8 @@ static int disk_read(void) {
       read_sectors = atoll(fields[4]);
       write_ops = atoll(fields[5]);
       write_sectors = atoll(fields[6]);
-    } else if (numfields == (14 + fieldshift)) {
+    } else {
+      assert(numfields >= (14 + fieldshift));
       read_ops = atoll(fields[3 + fieldshift]);
       write_ops = atoll(fields[7 + fieldshift]);
 
@@ -756,9 +751,6 @@ static int disk_read(void) {
         io_time = atof(fields[12 + fieldshift]);
         weighted_time = atof(fields[13 + fieldshift]);
       }
-    } else {
-      DEBUG("numfields = %i; => unknown file format.", numfields);
-      continue;
     }
 
     {