diff options
| author | Pranith Kumar K <pkarampu@redhat.com> | 2014-10-10 09:51:28 +0530 | 
|---|---|---|
| committer | Vijay Bellur <vbellur@redhat.com> | 2014-10-22 03:04:26 -0700 | 
| commit | 4b078cc079f221bb801988f1b5fed173ad40f9d6 (patch) | |
| tree | 9a04c88ab4d220b2063ce6de6ac79864e91f2c30 | |
| parent | d7e56dde3c19a11647eae9cf6a868c191c641489 (diff) | |
logs: Do selective logging for errnos
        Backport of http://review.gluster.org/8918
                    http://review.gluster.org/8955
Problem:
Just after replace-brick the mount logs are filled with ENOENT/ESTALE
warning logs because the file is yet to be self-healed now that the
brick is new.
Fix:
Do conditional logging for the logs. ENOENT/ESTALE will be logged at
lower log level. Only when debug logs are enabled, these logs will
be written to the logfile.
Change-Id: If203d09e2479e8c2415ebc14fb79d4fbb81dfc95
BUG: 1155027
Signed-off-by: Pranith Kumar K <pkarampu@redhat.com>
Reviewed-on: http://review.gluster.org/8957
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Krutika Dhananjay <kdhananj@redhat.com>
Reviewed-by: Vijay Bellur <vbellur@redhat.com>
| -rw-r--r-- | libglusterfs/src/common-utils.c | 38 | ||||
| -rw-r--r-- | libglusterfs/src/common-utils.h | 3 | ||||
| -rw-r--r-- | xlators/cluster/afr/src/afr-open.c | 5 | ||||
| -rw-r--r-- | xlators/protocol/client/src/client-rpc-fops.c | 30 | ||||
| -rw-r--r-- | xlators/protocol/server/src/server-rpc-fops.c | 35 | 
5 files changed, 62 insertions, 49 deletions
diff --git a/libglusterfs/src/common-utils.c b/libglusterfs/src/common-utils.c index 2875a304c3e..ef92a8274bc 100644 --- a/libglusterfs/src/common-utils.c +++ b/libglusterfs/src/common-utils.c @@ -39,6 +39,7 @@  #include <sys/sysctl.h>  #endif +#include "compat-errno.h"  #include "logging.h"  #include "common-utils.h"  #include "revision.h" @@ -3391,3 +3392,40 @@ gf_backtrace_save (char *buf)          gf_log (THIS->name, GF_LOG_WARNING, "Failed to save the backtrace.");          return NULL;  } + +gf_loglevel_t +fop_log_level (glusterfs_fop_t fop, int op_errno) +{ +        /* if gfid doesn't exist ESTALE comes */ +        if (op_errno == ENOENT || op_errno == ESTALE) +                return GF_LOG_DEBUG; + +        if ((fop == GF_FOP_ENTRYLK) || +            (fop == GF_FOP_FENTRYLK) || +            (fop == GF_FOP_FINODELK) || +            (fop == GF_FOP_INODELK) || +            (fop == GF_FOP_LK)) { +                /* +                 * if non-blocking lock fails EAGAIN comes +                 * if locks xlator is not loaded ENOSYS comes +                 */ +                if (op_errno == EAGAIN || op_errno == ENOSYS) +                        return GF_LOG_DEBUG; +        } + +        if ((fop == GF_FOP_GETXATTR) || +            (fop == GF_FOP_FGETXATTR)) { +                if (op_errno == ENOTSUP || op_errno == ENODATA) +                        return GF_LOG_DEBUG; +        } + +        if ((fop == GF_FOP_SETXATTR) || +            (fop == GF_FOP_FSETXATTR) || +            (fop == GF_FOP_REMOVEXATTR) || +            (fop == GF_FOP_FREMOVEXATTR)) { +                if (op_errno == ENOTSUP) +                        return GF_LOG_DEBUG; +        } + +        return GF_LOG_ERROR; +} diff --git a/libglusterfs/src/common-utils.h b/libglusterfs/src/common-utils.h index a669e741e9a..0d5abb42ec2 100644 --- a/libglusterfs/src/common-utils.h +++ b/libglusterfs/src/common-utils.h @@ -650,4 +650,7 @@ gf_backtrace_save (char *buf);  void  gf_backtrace_done (char *buf); + +gf_loglevel_t +fop_log_level (glusterfs_fop_t fop, int op_errno);  #endif /* _COMMON_UTILS_H */ diff --git a/xlators/cluster/afr/src/afr-open.c b/xlators/cluster/afr/src/afr-open.c index f96f41c0dd9..f8ad8544e10 100644 --- a/xlators/cluster/afr/src/afr-open.c +++ b/xlators/cluster/afr/src/afr-open.c @@ -186,8 +186,9 @@ afr_openfd_fix_open_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                          "successfully on subvolume %s", local->loc.path,                          priv->children[child_index]->name);          } else { -                gf_msg (this->name, GF_LOG_ERROR, op_errno, AFR_MSG_OPEN_FAIL, -                        "Failed to open %s on subvolume %s", local->loc.path, +                gf_msg (this->name, fop_log_level (GF_FOP_OPEN, op_errno), +                        op_errno, AFR_MSG_OPEN_FAIL, "Failed to open %s on " +                        "subvolume %s", local->loc.path,                          priv->children[child_index]->name);          } diff --git a/xlators/protocol/client/src/client-rpc-fops.c b/xlators/protocol/client/src/client-rpc-fops.c index 64d30f2a99f..5f88769e352 100644 --- a/xlators/protocol/client/src/client-rpc-fops.c +++ b/xlators/protocol/client/src/client-rpc-fops.c @@ -442,7 +442,8 @@ client3_3_open_cbk (struct rpc_req *req, struct iovec *iov, int count,  out:          if (rsp.op_ret == -1) { -                gf_log (this->name, GF_LOG_WARNING, +                gf_log (this->name, fop_log_level (GF_FOP_OPEN, +                                        gf_error_to_errno (rsp.op_errno)),                          "remote operation failed: %s. Path: %s (%s)",                          strerror (gf_error_to_errno (rsp.op_errno)),                          local->loc.path, loc_gfid_utoa (&local->loc)); @@ -907,7 +908,8 @@ client3_3_flush_cbk (struct rpc_req *req, struct iovec *iov, int count,  out:          if (rsp.op_ret == -1) { -                gf_log (this->name, GF_LOG_WARNING, +                gf_log (this->name, fop_log_level (GF_FOP_FLUSH, +                                        gf_error_to_errno (rsp.op_errno)),                          "remote operation failed: %s",                          strerror (gf_error_to_errno (rsp.op_errno)));          } @@ -1508,9 +1510,10 @@ client3_3_inodelk_cbk (struct rpc_req *req, struct iovec *iov, int count,                                        rsp.op_errno, out);  out: -        if ((rsp.op_ret == -1) && -            (EAGAIN != gf_error_to_errno (rsp.op_errno))) { -                gf_log (this->name, GF_LOG_WARNING, "remote operation failed: %s", +        if (rsp.op_ret == -1) { +                gf_log (this->name, fop_log_level (GF_FOP_INODELK, +                                        gf_error_to_errno (rsp.op_errno)), +                        "remote operation failed: %s",                          strerror (gf_error_to_errno (rsp.op_errno)));          }          CLIENT_STACK_UNWIND (inodelk, frame, rsp.op_ret, @@ -1558,9 +1561,10 @@ client3_3_finodelk_cbk (struct rpc_req *req, struct iovec *iov, int count,                                        rsp.op_errno, out);  out: -        if ((rsp.op_ret == -1) && -            (EAGAIN != gf_error_to_errno (rsp.op_errno))) { -                gf_log (this->name, GF_LOG_WARNING, "remote operation failed: %s", +        if (rsp.op_ret == -1) { +                gf_log (this->name, fop_log_level (GF_FOP_FINODELK, +                                        gf_error_to_errno (rsp.op_errno)), +                        "remote operation failed: %s",                          strerror (gf_error_to_errno (rsp.op_errno)));          } else if (rsp.op_ret == 0) {                  if (local->attempt_reopen) @@ -1610,9 +1614,10 @@ client3_3_entrylk_cbk (struct rpc_req *req, struct iovec *iov, int count,                                        rsp.op_errno, out);  out: -        if ((rsp.op_ret == -1) && -            (EAGAIN != gf_error_to_errno (rsp.op_errno))) { -                gf_log (this->name, GF_LOG_WARNING, "remote operation failed: %s", +        if (rsp.op_ret == -1) { +                gf_log (this->name, fop_log_level (GF_FOP_ENTRYLK, +                                        gf_error_to_errno (rsp.op_errno)), +                        "remote operation failed: %s",                          strerror (gf_error_to_errno (rsp.op_errno)));          } @@ -2668,7 +2673,8 @@ client3_3_opendir_cbk (struct rpc_req *req, struct iovec *iov, int count,  out:          if (rsp.op_ret == -1) { -                gf_log (this->name, GF_LOG_WARNING, +                gf_log (this->name, fop_log_level (GF_FOP_OPENDIR, +                                        gf_error_to_errno (rsp.op_errno)),                          "remote operation failed: %s. Path: %s (%s)",                          strerror (gf_error_to_errno (rsp.op_errno)),                          local->loc.path, loc_gfid_utoa (&local->loc)); diff --git a/xlators/protocol/server/src/server-rpc-fops.c b/xlators/protocol/server/src/server-rpc-fops.c index f36bc16fc43..1d143929f32 100644 --- a/xlators/protocol/server/src/server-rpc-fops.c +++ b/xlators/protocol/server/src/server-rpc-fops.c @@ -31,41 +31,6 @@                  ret = RPCSVC_ACTOR_ERROR;                       \          } while (0) -static gf_loglevel_t -fop_log_level (glusterfs_fop_t fop, int op_errno) -{ -        //if gfid doesn't exist ESTALE comes -        if (op_errno == ENOENT || op_errno == ESTALE) -                return GF_LOG_DEBUG; - -        if ((fop == GF_FOP_ENTRYLK) || -            (fop == GF_FOP_FENTRYLK)|| -            (fop == GF_FOP_FINODELK)|| -            (fop == GF_FOP_INODELK) || -            (fop == GF_FOP_LK)) { -                //if non-blocking lock fails EAGAIN comes -                //if locks xlator is not loaded ENOSYS comes -                if (op_errno == EAGAIN || op_errno == ENOSYS) -                        return GF_LOG_DEBUG; -        } - -        if ((fop == GF_FOP_GETXATTR) || -            (fop == GF_FOP_FGETXATTR)) { -                if (op_errno == ENOTSUP || op_errno == ENODATA) -                        return GF_LOG_DEBUG; -        } - -        if ((fop == GF_FOP_SETXATTR) || -            (fop == GF_FOP_FSETXATTR)|| -            (fop == GF_FOP_REMOVEXATTR)|| -            (fop == GF_FOP_FREMOVEXATTR)) { -                if (op_errno == ENOTSUP) -                        return GF_LOG_DEBUG; -        } - -        return GF_LOG_ERROR; -} -  /* Callback function section */  int  server_statfs_cbk (call_frame_t *frame, void *cookie, xlator_t *this,  | 
