summaryrefslogtreecommitdiffstats
path: root/libglusterfs
diff options
context:
space:
mode:
authorPranith Kumar K <pkarampu@redhat.com>2014-10-10 09:51:28 +0530
committerVijay Bellur <vbellur@redhat.com>2014-10-20 22:53:12 -0700
commit5ac067e560696410c059b21ca039f74687c62e7a (patch)
tree93d27336473c4a4d5dd8ef69965f3caaf6a59e5b /libglusterfs
parente4d25d50b58d3ee08453492852b79425c398aa05 (diff)
logs: Do selective logging for errnos
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: 1151303 Signed-off-by: Pranith Kumar K <pkarampu@redhat.com> Reviewed-on: http://review.gluster.org/8918 Reviewed-by: Krutika Dhananjay <kdhananj@redhat.com> Tested-by: Gluster Build System <jenkins@build.gluster.com> Reviewed-by: Ravishankar N <ravishankar@redhat.com> Reviewed-by: Vijay Bellur <vbellur@redhat.com>
Diffstat (limited to 'libglusterfs')
-rw-r--r--libglusterfs/src/common-utils.c37
-rw-r--r--libglusterfs/src/common-utils.h3
2 files changed, 40 insertions, 0 deletions
diff --git a/libglusterfs/src/common-utils.c b/libglusterfs/src/common-utils.c
index 3a2e557c62b..606dda9b9a5 100644
--- a/libglusterfs/src/common-utils.c
+++ b/libglusterfs/src/common-utils.c
@@ -3391,3 +3391,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 */