summaryrefslogtreecommitdiffstats
path: root/xlators/performance/read-ahead/src
diff options
context:
space:
mode:
Diffstat (limited to 'xlators/performance/read-ahead/src')
-rw-r--r--xlators/performance/read-ahead/src/page.c11
-rw-r--r--xlators/performance/read-ahead/src/read-ahead-messages.h94
-rw-r--r--xlators/performance/read-ahead/src/read-ahead.c67
3 files changed, 140 insertions, 32 deletions
diff --git a/xlators/performance/read-ahead/src/page.c b/xlators/performance/read-ahead/src/page.c
index b1f69119fa3..216e327af74 100644
--- a/xlators/performance/read-ahead/src/page.c
+++ b/xlators/performance/read-ahead/src/page.c
@@ -14,6 +14,7 @@
#include "xlator.h"
#include "read-ahead.h"
#include <assert.h>
+#include "read-ahead-messages.h"
ra_page_t *
ra_page_get (ra_file_t *file, off_t offset)
@@ -150,7 +151,8 @@ ra_fault_cbk (call_frame_t *frame, void *cookie, xlator_t *this,
pending_offset = local->pending_offset;
if (file == NULL) {
- gf_log (this->name, GF_LOG_WARNING,
+ gf_msg (this->name, GF_LOG_WARNING, EBADF,
+ READ_AHEAD_MSG_FD_CONTEXT_NOT_SET,
"read-ahead context not set in fd (%p)", fd);
op_ret = -1;
op_errno = EBADF;
@@ -165,9 +167,10 @@ ra_fault_cbk (call_frame_t *frame, void *cookie, xlator_t *this,
page = ra_page_get (file, pending_offset);
if (!page) {
- gf_log (this->name, GF_LOG_TRACE,
- "wasted copy: %"PRId64"[+%"PRId64"] file=%p",
- pending_offset, file->page_size, file);
+ gf_msg_trace (this->name, 0,
+ "wasted copy: "
+ "%"PRId64"[+%"PRId64"] file=%p",
+ pending_offset, file->page_size, file);
goto unlock;
}
diff --git a/xlators/performance/read-ahead/src/read-ahead-messages.h b/xlators/performance/read-ahead/src/read-ahead-messages.h
new file mode 100644
index 00000000000..a205ceeb855
--- /dev/null
+++ b/xlators/performance/read-ahead/src/read-ahead-messages.h
@@ -0,0 +1,94 @@
+/*Copyright (c) 2015 Red Hat, Inc. <http://www.redhat.com>
+ This file is part of GlusterFS.
+
+ This file is licensed to you under your choice of the GNU Lesser
+ General Public License, version 3 or any later version (LGPLv3 or
+ later), or the GNU General Public License, version 2 (GPLv2), in all
+ cases as published by the Free Software Foundation.
+*/
+
+#ifndef _READ_AHEAD_MESSAGES_H_
+#define _READ_AHEAD_MESSAGES_H_
+
+#include "glfs-message-id.h"
+
+/*! \file read-ahead-messages.h
+ * \brief READ_AHEAD log-message IDs and their descriptions
+ *
+ */
+
+/* NOTE: Rules for message additions
+ * 1) Each instance of a message is _better_ left with a unique message ID, even
+ * if the message format is the same. Reasoning is that, if the message
+ * format needs to change in one instance, the other instances are not
+ * impacted or the new change does not change the ID of the instance being
+ * modified.
+ * 2) Addition of a message,
+ * - Should increment the GLFS_NUM_MESSAGES
+ * - Append to the list of messages defined, towards the end
+ * - Retain macro naming as glfs_msg_X (for redability across developers)
+ * NOTE: Rules for message format modifications
+ * 3) Check acorss the code if the message ID macro in question is reused
+ * anywhere. If reused then then the modifications should ensure correctness
+ * everywhere, or needs a new message ID as (1) above was not adhered to. If
+ * not used anywhere, proceed with the required modification.
+ * NOTE: Rules for message deletion
+ * 4) Check (3) and if used anywhere else, then cannot be deleted. If not used
+ * anywhere, then can be deleted, but will leave a hole by design, as
+ * addition rules specify modification to the end of the list and not filling
+ * holes.
+ */
+
+#define GLFS_READ_AHEAD_BASE GLFS_MSGID_COMP_READ_AHEAD
+#define GLFS_READ_AHEAD_NUM_MESSAGES 4
+#define GLFS_MSGID_END (GLFS_READ_AHEAD_BASE +\
+ GLFS_READ_AHEAD_NUM_MESSAGES + 1)
+
+/* Messages with message IDs */
+#define glfs_msg_start_x GLFS_READ_AHEAD_BASE, "Invalid: Start of messages"
+
+
+
+
+/*!
+ * @messageid
+ * @diagnosis
+ * @recommendedaction None
+ *
+ */
+
+#define READ_AHEAD_MSG_XLATOR_CHILD_MISCONFIGURED (GLFS_READ_AHEAD_BASE + 1)
+
+/*!
+ * @messageid
+ * @diagnosis
+ * @recommendedaction None
+ *
+ */
+
+#define READ_AHEAD_MSG_VOL_MISCONFIGURED (GLFS_READ_AHEAD_BASE + 2)
+
+/*!
+ * @messageid
+ * @diagnosis
+ * @recommendedaction None
+ *
+ */
+
+#define READ_AHEAD_MSG_NO_MEMORY (GLFS_READ_AHEAD_BASE + 3)
+
+/*!
+ * @messageid
+ * @diagnosis
+ * @recommendedaction None
+ *
+ */
+
+#define READ_AHEAD_MSG_FD_CONTEXT_NOT_SET (GLFS_READ_AHEAD_BASE + 4)
+
+
+/*------------*/
+#define glfs_msg_end_x GLFS_MSGID_END, "Invalid: End of messages"
+
+
+#endif /* _READ_AHEAD_MESSAGES_H_ */
diff --git a/xlators/performance/read-ahead/src/read-ahead.c b/xlators/performance/read-ahead/src/read-ahead.c
index ec0b0e46f73..923163ab07c 100644
--- a/xlators/performance/read-ahead/src/read-ahead.c
+++ b/xlators/performance/read-ahead/src/read-ahead.c
@@ -23,6 +23,7 @@
#include "statedump.h"
#include <assert.h>
#include <sys/time.h>
+#include "read-ahead-messages.h"
static void
read_ahead (call_frame_t *frame, ra_file_t *file);
@@ -84,8 +85,10 @@ ra_open_cbk (call_frame_t *frame, void *cookie, xlator_t *this,
ret = fd_ctx_set (fd, this, (uint64_t)(long)file);
if (ret == -1) {
- gf_log (frame->this->name, GF_LOG_WARNING,
- "cannot set read-ahead context information in fd (%p)",
+ gf_msg (frame->this->name, GF_LOG_WARNING,
+ 0, READ_AHEAD_MSG_NO_MEMORY,
+ "cannot set read-ahead context"
+ "information in fd (%p)",
fd);
ra_file_destroy (file);
op_ret = -1;
@@ -156,8 +159,10 @@ ra_create_cbk (call_frame_t *frame, void *cookie, xlator_t *this,
ret = fd_ctx_set (fd, this, (uint64_t)(long)file);
if (ret == -1) {
- gf_log (this->name, GF_LOG_WARNING,
- "cannot set read ahead context information in fd (%p)",
+ gf_msg (this->name, GF_LOG_WARNING,
+ 0, READ_AHEAD_MSG_NO_MEMORY,
+ "cannot set read ahead context"
+ "information in fd (%p)",
fd);
ra_file_destroy (file);
op_ret = -1;
@@ -324,8 +329,8 @@ read_ahead (call_frame_t *frame, ra_file_t *file)
}
if (fault) {
- gf_log (frame->this->name, GF_LOG_TRACE,
- "RA at offset=%"PRId64, trav_offset);
+ gf_msg_trace (frame->this->name, 0,
+ "RA at offset=%"PRId64, trav_offset);
ra_page_fault (file, frame, trav_offset);
}
trav_offset += file->page_size;
@@ -391,14 +396,15 @@ dispatch_requests (call_frame_t *frame, ra_file_t *file)
trav->dirty = 0;
if (trav->ready) {
- gf_log (frame->this->name, GF_LOG_TRACE,
- "HIT at offset=%"PRId64".",
- trav_offset);
+ gf_msg_trace (frame->this->name, 0,
+ "HIT at offset=%"PRId64".",
+ trav_offset);
ra_frame_fill (trav, frame);
} else {
- gf_log (frame->this->name, GF_LOG_TRACE,
- "IN-TRANSIT at offset=%"PRId64".",
- trav_offset);
+ gf_msg_trace (frame->this->name, 0,
+ "IN-TRANSIT at "
+ "offset=%"PRId64".",
+ trav_offset);
ra_wait_on_page (trav, frame);
need_atime_update = 0;
}
@@ -411,9 +417,9 @@ dispatch_requests (call_frame_t *frame, ra_file_t *file)
}
if (fault) {
- gf_log (frame->this->name, GF_LOG_TRACE,
- "MISS at offset=%"PRId64".",
- trav_offset);
+ gf_msg_trace (frame->this->name, 0,
+ "MISS at offset=%"PRId64".",
+ trav_offset);
ra_page_fault (file, frame, trav_offset);
}
@@ -471,9 +477,9 @@ ra_readv (call_frame_t *frame, xlator_t *this, fd_t *fd, size_t size,
conf = this->private;
- gf_log (this->name, GF_LOG_TRACE,
- "NEW REQ at offset=%"PRId64" for size=%"GF_PRI_SIZET"",
- offset, size);
+ gf_msg_trace (this->name, 0,
+ "NEW REQ at offset=%"PRId64" for size=%"GF_PRI_SIZET"",
+ offset, size);
fd_ctx_get (fd, this, &tmp_file);
file = (ra_file_t *)(long)tmp_file;
@@ -483,15 +489,16 @@ ra_readv (call_frame_t *frame, xlator_t *this, fd_t *fd, size_t size,
}
if (file->offset != offset) {
- gf_log (this->name, GF_LOG_TRACE,
- "unexpected offset (%"PRId64" != %"PRId64") resetting",
- file->offset, offset);
+ gf_msg_trace (this->name, 0,
+ "unexpected offset (%"PRId64" != %"PRId64") "
+ "resetting",
+ file->offset, offset);
expected_offset = file->expected = file->page_count = 0;
} else {
- gf_log (this->name, GF_LOG_TRACE,
- "expected offset (%"PRId64") when page_count=%d",
- offset, file->page_count);
+ gf_msg_trace (this->name, 0,
+ "expected offset (%"PRId64") when page_count=%d",
+ offset, file->page_count);
if (file->expected < (file->page_size * conf->page_count)) {
file->expected += size;
@@ -1098,7 +1105,8 @@ mem_acct_init (xlator_t *this)
ret = xlator_mem_acct_init (this, gf_ra_mt_end + 1);
if (ret != 0) {
- gf_log (this->name, GF_LOG_ERROR, "Memory accounting init"
+ gf_msg (this->name, GF_LOG_ERROR, ENOMEM,
+ READ_AHEAD_MSG_NO_MEMORY, "Memory accounting init"
"failed");
}
@@ -1136,14 +1144,16 @@ init (xlator_t *this)
GF_VALIDATE_OR_GOTO ("read-ahead", this, out);
if (!this->children || this->children->next) {
- gf_log (this->name, GF_LOG_ERROR,
+ gf_msg (this->name, GF_LOG_ERROR, 0,
+ READ_AHEAD_MSG_XLATOR_CHILD_MISCONFIGURED,
"FATAL: read-ahead not configured with exactly one"
" child");
goto out;
}
if (!this->parents) {
- gf_log (this->name, GF_LOG_WARNING,
+ gf_msg (this->name, GF_LOG_WARNING, 0,
+ READ_AHEAD_MSG_VOL_MISCONFIGURED,
"dangling volume. check volfile ");
}
@@ -1168,7 +1178,8 @@ init (xlator_t *this)
this->local_pool = mem_pool_new (ra_local_t, 64);
if (!this->local_pool) {
ret = -1;
- gf_log (this->name, GF_LOG_ERROR,
+ gf_msg (this->name, GF_LOG_ERROR,
+ ENOMEM, READ_AHEAD_MSG_NO_MEMORY,
"failed to create local_t's memory pool");
goto out;
}