df plugin: Report an error if "cu_mount_getlist" fails.
[collectd.git] / src / df.c
index 66daab2..983d0c6 100644 (file)
--- a/src/df.c
+++ b/src/df.c
@@ -1,6 +1,6 @@
 /**
  * collectd - src/df.c
- * Copyright (C) 2005-2007  Florian octo Forster
+ * Copyright (C) 2005-2009  Florian octo Forster
  * Copyright (C) 2009       Paul Sadauskas
  *
  * This program is free software; you can redistribute it and/or modify it
@@ -27,6 +27,7 @@
 #include "configfile.h"
 #include "utils_mount.h"
 #include "utils_ignorelist.h"
+#include "utils_complain.h"
 
 #if HAVE_STATVFS
 # if HAVE_SYS_STATVFS_H
@@ -51,7 +52,8 @@ static const char *config_keys[] =
        "FSType",
        "IgnoreSelected",
        "ReportByDevice",
-       "ReportReserved"
+       "ReportReserved",
+       "ReportInodes"
 };
 static int config_keys_num = STATIC_ARRAY_SIZE (config_keys);
 
@@ -61,6 +63,9 @@ static ignorelist_t *il_fstype = NULL;
 
 static _Bool by_device = false;
 static _Bool report_reserved = false;
+static _Bool report_inodes = false;
+
+static c_complain_t complaint = C_COMPLAIN_INIT_STATIC;
 
 static int df_init (void)
 {
@@ -128,6 +133,15 @@ static int df_config (const char *key, const char *value)
 
                return (0);
        }
+       else if (strcasecmp (key, "ReportInodes") == 0)
+       {
+               if (IS_TRUE (value))
+                       report_inodes = true;
+               else
+                       report_inodes = false;
+
+               return (0);
+       }
 
 
        return (-1);
@@ -193,7 +207,13 @@ static int df_read (void)
 
        mnt_list = NULL;
        if (cu_mount_getlist (&mnt_list) == NULL)
+       {
+               c_complain (LOG_ERR, &complaint,
+                               "df plugin: cu_mount_getlist failed.");
                return (-1);
+       }
+       c_release (LOG_INFO, &complaint,
+                       "df plugin: cu_mount_getlist returned successfully.");
 
        for (mnt_ptr = mnt_list; mnt_ptr != NULL; mnt_ptr = mnt_ptr->next)
        {
@@ -292,6 +312,7 @@ static int df_read (void)
                }
 
                /* inode handling */
+               if (report_inodes)
                {
                        uint64_t inode_free;
                        uint64_t inode_reserved;