diff options
Diffstat (limited to 'xlators/debug/io-stats/src')
| -rw-r--r-- | xlators/debug/io-stats/src/Makefile.am | 4 | ||||
| -rw-r--r-- | xlators/debug/io-stats/src/io-stats.c | 55 | 
2 files changed, 40 insertions, 19 deletions
diff --git a/xlators/debug/io-stats/src/Makefile.am b/xlators/debug/io-stats/src/Makefile.am index 332d79015e9..dff294cd84e 100644 --- a/xlators/debug/io-stats/src/Makefile.am +++ b/xlators/debug/io-stats/src/Makefile.am @@ -9,7 +9,9 @@ io_stats_la_LIBADD = $(top_builddir)/libglusterfs/src/libglusterfs.la  noinst_HEADERS = io-stats-mem-types.h -AM_CPPFLAGS = $(GF_CPPFLAGS) -I$(top_srcdir)/libglusterfs/src +AM_CPPFLAGS = $(GF_CPPFLAGS) -I$(top_srcdir)/libglusterfs/src \ +	-I$(top_srcdir)/rpc/xdr/src \ +	-I$(top_srcdir)/rpc/rpc-lib/src  AM_CFLAGS = -Wall $(GF_CFLAGS) diff --git a/xlators/debug/io-stats/src/io-stats.c b/xlators/debug/io-stats/src/io-stats.c index 3ca57753c56..65aeee52bfb 100644 --- a/xlators/debug/io-stats/src/io-stats.c +++ b/xlators/debug/io-stats/src/io-stats.c @@ -36,6 +36,7 @@  #include <stdarg.h>  #include "defaults.h"  #include "logging.h" +#include "cli1-xdr.h"  #define MAX_LIST_MEMBERS 100 @@ -917,7 +918,8 @@ ios_dump_args_init (struct ios_dump_args *args, ios_dump_type_t type,  }  int -io_stats_dump (xlator_t *this, struct ios_dump_args *args) +io_stats_dump (xlator_t *this, struct ios_dump_args *args, +               gf1_cli_stats_op op)  {          struct ios_conf         *conf = NULL;          struct ios_global_stats  cumulative = {0, }; @@ -935,18 +937,30 @@ io_stats_dump (xlator_t *this, struct ios_dump_args *args)          gettimeofday (&now, NULL);          LOCK (&conf->lock);          { -                cumulative  = conf->cumulative; -                incremental = conf->incremental; +                if (op == GF_CLI_STATS_INFO || +                    op == GF_CLI_STATS_INFO_CUMULATIVE) +                        cumulative  = conf->cumulative; -                increment = conf->increment++; +                if (op == GF_CLI_STATS_INFO || +                    op == GF_CLI_STATS_INFO_INCREMENTAL) { +                        incremental = conf->incremental; -                memset (&conf->incremental, 0, sizeof (conf->incremental)); -                conf->incremental.started_at = now; +                        increment = conf->increment++; + +                        memset (&conf->incremental, 0, +                                sizeof (conf->incremental)); +                        conf->incremental.started_at = now; +                }          }          UNLOCK (&conf->lock); -        io_stats_dump_global (this, &cumulative, &now, -1, args); -        io_stats_dump_global (this, &incremental, &now, increment, args); +        if (op == GF_CLI_STATS_INFO || +            op == GF_CLI_STATS_INFO_CUMULATIVE) +                io_stats_dump_global (this, &cumulative, &now, -1, args); + +        if (op == GF_CLI_STATS_INFO || +            op == GF_CLI_STATS_INFO_INCREMENTAL) +                io_stats_dump_global (this, &incremental, &now, increment, args);          return 0;  } @@ -2207,7 +2221,7 @@ conditional_dump (dict_t *dict, char *key, data_t *value, void *data)                  }                  (void) ios_dump_args_init (&args, IOS_DUMP_TYPE_FILE,                                             logfp); -                io_stats_dump (this, &args); +                io_stats_dump (this, &args, GF_CLI_STATS_INFO);                  fclose (logfp);          }          return 0; @@ -2773,7 +2787,7 @@ notify (xlator_t *this, int32_t event, void *data, ...)          struct ios_dump_args args = {0};          dict_t       *output = NULL;          dict_t       *dict = NULL; -        int32_t       top_op = 0; +        int32_t       op = 0;          int32_t       list_cnt = 0;          double        throughput = 0;          double        time = 0; @@ -2787,7 +2801,7 @@ notify (xlator_t *this, int32_t event, void *data, ...)          case GF_EVENT_TRANSLATOR_INFO:                  ret = dict_get_str_boolean (dict, "clear-stats", _gf_false);                  if (ret) { -                         ret = dict_set_int32 (output, "top-op", top_op); +                        ret = dict_set_int32 (output, "top-op", op);                          if (ret) {                                  gf_log (this->name, GF_LOG_ERROR,                                          "Failed to set top-op in dict"); @@ -2807,15 +2821,15 @@ notify (xlator_t *this, int32_t event, void *data, ...)                          goto out;                  } -                ret = dict_get_int32 (dict, "top-op", &top_op); +                ret = dict_get_int32 (dict, "top-op", &op);                  if (!ret) {                          ret = dict_get_int32 (dict, "list-cnt", &list_cnt); -                        if (top_op > IOS_STATS_TYPE_NONE && -                            top_op < IOS_STATS_TYPE_MAX) +                        if (op > IOS_STATS_TYPE_NONE && +                            op < IOS_STATS_TYPE_MAX)                                  ret = io_stats_dump_stats_to_dict (this, output, -                                                             top_op, list_cnt); -                        if (top_op == IOS_STATS_TYPE_READ_THROUGHPUT || -                                top_op == IOS_STATS_TYPE_WRITE_THROUGHPUT) { +                                                             op, list_cnt); +                        if (op == IOS_STATS_TYPE_READ_THROUGHPUT || +                                op == IOS_STATS_TYPE_WRITE_THROUGHPUT) {                                  ret = dict_get_double (dict, "throughput",                                                          &throughput);                                  if (!ret) { @@ -2836,9 +2850,14 @@ notify (xlator_t *this, int32_t event, void *data, ...)                          }                  } else { +                        ret = dict_get_int32 (dict, "info-op", &op); +                        if (ret || op < GF_CLI_STATS_INFO || +                            GF_CLI_STATS_INFO_CUMULATIVE < op) +                            op = GF_CLI_STATS_INFO; +                          (void) ios_dump_args_init (&args, IOS_DUMP_TYPE_DICT,                                             output); -                        ret = io_stats_dump (this, &args); +                        ret = io_stats_dump (this, &args, op);                  }                  break;          default:  | 
