diff options
| author | shishir gowda <shishirng@gluster.com> | 2010-10-04 06:47:35 +0000 | 
|---|---|---|
| committer | Vijay Bellur <vijay@dev.gluster.com> | 2010-10-04 07:05:39 -0700 | 
| commit | f02499e16624f29ac2be5531f1c4c298a12f33a8 (patch) | |
| tree | b295ba5c0cbd7c7707c662ba0bd3e8521a14120b | |
| parent | 408c164d0adf67d0ab636d3f617fc48c896d33a6 (diff) | |
Add log-level option to command volume set
log-level option to set brick's log-level
client-log-level to set client's log-level
Signed-off-by: shishir gowda <shishirng@gluster.com>
Signed-off-by: Vijay Bellur <vijay@dev.gluster.com>
BUG: 1789 (add log-level options to volume set)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=1789
| -rw-r--r-- | libglusterfs/src/xlator.c | 90 | ||||
| -rw-r--r-- | libglusterfs/src/xlator.h | 1 | ||||
| -rw-r--r-- | xlators/debug/io-stats/src/io-stats.c | 24 | ||||
| -rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-volgen.c | 2 | ||||
| -rw-r--r-- | xlators/mount/fuse/src/fuse-bridge.h | 1 | ||||
| -rw-r--r-- | xlators/mount/fuse/src/fuse-helpers.c | 85 | 
6 files changed, 117 insertions, 86 deletions
diff --git a/libglusterfs/src/xlator.c b/libglusterfs/src/xlator.c index 66508966a..64f8b7110 100644 --- a/libglusterfs/src/xlator.c +++ b/libglusterfs/src/xlator.c @@ -1166,3 +1166,93 @@ xlator_destroy (xlator_t *xl)          return 0;  } +int +is_gf_log_command (xlator_t *this, const char *name, char *value) +{ +        xlator_t       *trav        = NULL; +        char            key[1024]   = {0,}; +        int             ret         = -1; +        int             log_level   = -1; +        gf_boolean_t    syslog_flag = 0; +        glusterfs_ctx_t *ctx        = NULL; + +        if (!strcmp ("trusted.glusterfs.syslog", name)) { +                ret = gf_string2boolean (value, &syslog_flag); +                if (ret) { +                        ret = EOPNOTSUPP; +                        goto out; +                } +                if (syslog_flag) +                        gf_log_enable_syslog (); +                else +                        gf_log_disable_syslog (); + +                goto out; +        } + +        if (fnmatch ("trusted.glusterfs*set-log-level", name, FNM_NOESCAPE)) +                goto out; + +        if (!strcasecmp (value, "CRITICAL")) { +                log_level = GF_LOG_CRITICAL; +        } else if (!strcasecmp (value, "ERROR")) { +                log_level = GF_LOG_ERROR; +        } else if (!strcasecmp (value, "WARNING")) { +                log_level = GF_LOG_WARNING; +        } else if (!strcasecmp (value, "INFO")) { +                log_level = GF_LOG_INFO; +        } else if (!strcasecmp (value, "DEBUG")) { +                log_level = GF_LOG_DEBUG; +        } else if (!strcasecmp (value, "TRACE")) { +                log_level = GF_LOG_TRACE; +        } else if (!strcasecmp (value, "NONE")) { +                log_level = GF_LOG_NONE; +        } + +        if (log_level == -1) { +                ret = EOPNOTSUPP; +                goto out; +        } + +        /* Some crude way to change the log-level of process */ +        if (!strcmp (name, "trusted.glusterfs.set-log-level")) { +                /* */ +                gf_log ("glusterfs", gf_log_get_loglevel(), +                        "setting log level to %d (old-value=%d)", +                        log_level, gf_log_get_loglevel()); +                gf_log_set_loglevel (log_level); +                ret = 0; +                goto out; +        } +        if (!strcmp (name, "trusted.glusterfs.fuse.set-log-level")) { +                /* */ +                gf_log (this->name, gf_log_get_xl_loglevel (this), +                        "setting log level to %d (old-value=%d)", +                        log_level, gf_log_get_xl_loglevel (this)); +                gf_log_set_xl_loglevel (this, log_level); +                ret = 0; +                goto out; +        } + +        ctx = glusterfs_ctx_get(); +        if (!ctx) +                goto out; +        if (!ctx->active) +                goto out; +        trav = ctx->active->top; + +        while (trav) { +                snprintf (key, 1024, "trusted.glusterfs.%s.set-log-level", +                          trav->name); +                if (fnmatch (name, key, FNM_NOESCAPE) == 0) { +                        gf_log (trav->name, gf_log_get_xl_loglevel (trav), +                                "setting log level to %d (old-value=%d)", +                                log_level, gf_log_get_xl_loglevel (trav)); +                        gf_log_set_xl_loglevel (trav, log_level); +                        ret = 0; +                } +                trav = trav->next; +        } +out: +        return ret; +} diff --git a/libglusterfs/src/xlator.h b/libglusterfs/src/xlator.h index db5e65289..d1cb83948 100644 --- a/libglusterfs/src/xlator.h +++ b/libglusterfs/src/xlator.h @@ -859,6 +859,7 @@ int loc_copy (loc_t *dst, loc_t *src);  void loc_wipe (loc_t *loc);  int xlator_mem_acct_init (xlator_t *xl, int num_types);  int xlator_tree_reconfigure (xlator_t *old_xl, xlator_t *new_xl); +int is_gf_log_command (xlator_t *trans, const char *name, char *value);  #define GF_STAT_PRINT_FMT_STR "%"PRIx64",%"PRIx64",%"PRIx32",%"PRIx32",%"PRIx32",%"PRIx32",%"PRIx64",%"PRIx64",%"PRIx32",%"PRIx64",%"PRIx32",%"PRIx32",%"PRIx32",%"PRIx32",%"PRIx32",%"PRIx32"\n" diff --git a/xlators/debug/io-stats/src/io-stats.c b/xlators/debug/io-stats/src/io-stats.c index bf5131840..0fdefd1e2 100644 --- a/xlators/debug/io-stats/src/io-stats.c +++ b/xlators/debug/io-stats/src/io-stats.c @@ -20,6 +20,7 @@  #ifndef _CONFIG_H  #define _CONFIG_H  #include "config.h" +#include "xlator.h"  #endif  /** @@ -1549,6 +1550,8 @@ reconfigure (xlator_t *this, dict_t *options)          struct ios_conf    *conf = NULL;          char               *str = NULL;          int                 ret = 0; +        char               *log_str = NULL; +        glusterfs_ctx_t     *ctx = NULL;          if (!this || !this->private)                  return -1; @@ -1579,6 +1582,21 @@ reconfigure (xlator_t *this, dict_t *options)                  }                  conf->measure_latency = ret;          } +        ctx = glusterfs_ctx_get (); +        if (!ctx) +                return -1; + +        if (ctx->cmd_args.brick_name) +                ret = dict_get_str (options, "log-level", &log_str); +        else +                ret = dict_get_str (options, "client-log-level", &log_str); + +        if (!ret) { +                if (!is_gf_log_command(this, "trusted.glusterfs*set-log-level", log_str)) { +                        gf_log (this->name, GF_LOG_DEBUG, +                               "changing log-level to %s", log_str); +                } +        }          return 0;  } @@ -1737,5 +1755,11 @@ struct volume_options options[] = {          { .key  = { "latency-measurement" },            .type = GF_OPTION_TYPE_BOOL,          }, +        { .key = {"log-level"}, +          .type = GF_OPTION_TYPE_STR, +        }, +        { .key = {"client-log-level"}, +          .type = GF_OPTION_TYPE_STR, +        },          { .key  = {NULL} },  }; diff --git a/xlators/mgmt/glusterd/src/glusterd-volgen.c b/xlators/mgmt/glusterd/src/glusterd-volgen.c index 9e672a57f..53250cc3e 100644 --- a/xlators/mgmt/glusterd/src/glusterd-volgen.c +++ b/xlators/mgmt/glusterd/src/glusterd-volgen.c @@ -87,6 +87,8 @@ static struct volopt_map_entry glusterd_volopt_map[] = {          {"latency-measurement",         "debug/io-stats"},          {"dump-fd-stats",               "debug/io-stats"}, +        {"log-level",                   "debug/io-stats"}, +        {"client-log-level",            "debug/io-stats"},          {"max-file-size",               "performance/io-cache"},          {"min-file-size",               "performance/io-cache"}, diff --git a/xlators/mount/fuse/src/fuse-bridge.h b/xlators/mount/fuse/src/fuse-bridge.h index d719832e3..285b4ec2a 100644 --- a/xlators/mount/fuse/src/fuse-bridge.h +++ b/xlators/mount/fuse/src/fuse-bridge.h @@ -285,7 +285,6 @@ xlator_t *fuse_state_subvol (fuse_state_t *state);  xlator_t *fuse_active_subvol (xlator_t *fuse);  inode_t *fuse_ino_to_inode (uint64_t ino, xlator_t *fuse);  int fuse_resolve_and_resume (fuse_state_t *state, fuse_resume_fn_t fn); -int is_gf_log_command (xlator_t *this, const char *name, char *value);  int send_fuse_err (xlator_t *this, fuse_in_header_t *finh, int error);  int fuse_gfid_set (fuse_state_t *state);  #endif /* _GF_FUSE_BRIDGE_H_ */ diff --git a/xlators/mount/fuse/src/fuse-helpers.c b/xlators/mount/fuse/src/fuse-helpers.c index 9a6b13514..edddb77f9 100644 --- a/xlators/mount/fuse/src/fuse-helpers.c +++ b/xlators/mount/fuse/src/fuse-helpers.c @@ -300,89 +300,4 @@ gf_fuse_stat2attr (struct iatt *st, struct fuse_attr *fa)  } -int -is_gf_log_command (xlator_t *this, const char *name, char *value) -{ -        fuse_private_t *priv        = NULL; -        xlator_t       *trav        = NULL; -        char            key[1024]   = {0,}; -        int             ret         = -1; -        int             log_level   = -1; -        gf_boolean_t    syslog_flag = 0; - -        priv = this->private; - -        if (!strcmp ("trusted.glusterfs.syslog", name)) { -                ret = gf_string2boolean (value, &syslog_flag); -                if (ret) { -                        ret = EOPNOTSUPP; -                        goto out; -                } -                if (syslog_flag) -                        gf_log_enable_syslog (); -                else -                        gf_log_disable_syslog (); - -                goto out; -        } - -        if (fnmatch ("trusted.glusterfs*set-log-level", name, FNM_NOESCAPE)) -                goto out; - -        if (!strcasecmp (value, "CRITICAL")) { -                log_level = GF_LOG_CRITICAL; -        } else if (!strcasecmp (value, "ERROR")) { -                log_level = GF_LOG_ERROR; -        } else if (!strcasecmp (value, "WARNING")) { -                log_level = GF_LOG_WARNING; -        } else if (!strcasecmp (value, "INFO")) { -                log_level = GF_LOG_INFO; -        } else if (!strcasecmp (value, "DEBUG")) { -                log_level = GF_LOG_DEBUG; -        } else if (!strcasecmp (value, "TRACE")) { -                log_level = GF_LOG_TRACE; -        } else if (!strcasecmp (value, "NONE")) { -                log_level = GF_LOG_NONE; -        } - -        if (log_level == -1) { -                ret = EOPNOTSUPP; -                goto out; -        } - -        /* Some crude way to change the log-level of process */ -        if (!strcmp (name, "trusted.glusterfs.set-log-level")) { -                /* */ -                gf_log ("glusterfs", gf_log_get_loglevel(), -                        "setting log level to %d (old-value=%d)", -                        log_level, gf_log_get_loglevel()); -                gf_log_set_loglevel (log_level); -                ret = 0; -                goto out; -        } -        if (!strcmp (name, "trusted.glusterfs.fuse.set-log-level")) { -                /* */ -                gf_log (this->name, gf_log_get_xl_loglevel (this), -                        "setting log level to %d (old-value=%d)", -                        log_level, gf_log_get_xl_loglevel (this)); -                gf_log_set_xl_loglevel (this, log_level); -                ret = 0; -                goto out; -        } -        trav = priv->active_subvol; -        while (trav) { -                snprintf (key, 1024, "trusted.glusterfs.%s.set-log-level", -                          trav->name); -                if (fnmatch (name, key, FNM_NOESCAPE) == 0) { -                        gf_log (trav->name, gf_log_get_xl_loglevel (trav), -                                "setting log level to %d (old-value=%d)", -                                log_level, gf_log_get_xl_loglevel (trav)); -                        gf_log_set_xl_loglevel (trav, log_level); -                        ret = 0; -                } -                trav = trav->next; -        } -out: -        return ret; -}  | 
