diff options
Diffstat (limited to 'xlators/performance/read-ahead/src')
-rw-r--r-- | xlators/performance/read-ahead/src/page.c | 11 | ||||
-rw-r--r-- | xlators/performance/read-ahead/src/read-ahead-messages.h | 94 | ||||
-rw-r--r-- | xlators/performance/read-ahead/src/read-ahead.c | 67 |
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; } |