From: Vladislav Bogdanov <bubble@hoster-ok.com>
To: linux-lvm@redhat.com
Subject: [linux-lvm] [PATCH 06/10] clvmd: additional debugging - print message bodies
Date: Tue, 19 Mar 2013 13:32:46 +0000 [thread overview]
Message-ID: <1363699970-10002-7-git-send-email-bubble@hoster-ok.com> (raw)
In-Reply-To: <1363699970-10002-1-git-send-email-bubble@hoster-ok.com>
Signed-off-by: Vladislav Bogdanov <bubble@hoster-ok.com>
---
daemons/clvmd/clvmd.c | 52 ++++++++++++++++++++++++++++++++++++++++++++----
1 files changed, 47 insertions(+), 5 deletions(-)
diff --git a/daemons/clvmd/clvmd.c b/daemons/clvmd/clvmd.c
index fa09464..c4d6e03 100644
--- a/daemons/clvmd/clvmd.c
+++ b/daemons/clvmd/clvmd.c
@@ -1403,6 +1403,8 @@ static int distribute_command(struct local_client *thisfd)
/* Forward it to other nodes in the cluster if needed */
if (!(inheader->flags & CLVMD_FLAG_LOCAL)) {
+ char *args_printable = strdup_printable(inheader->args + strlen(inheader->node), inheader->arglen);
+
/* if node is empty then do it on the whole cluster */
if (inheader->node[0] == '\0') {
thisfd->bits.localsock.expected_replies =
@@ -1423,6 +1425,10 @@ static int distribute_command(struct local_client *thisfd)
DEBUGLOG("Sending message to all cluster nodes\n");
inheader->xid = thisfd->xid;
+ DEBUGLOG("Sending message of size %u: xid=%u, cmd=%s, status=%u, flags=%u, clientid=%u, arglen=%u, node='%s', args='%s'\n",
+ len,
+ inheader->xid, decode_cmd(inheader->cmd), inheader->status, inheader->flags, inheader->clientid, inheader->arglen,
+ inheader->node, inheader->arglen > 0 ? args_printable : "");
send_message(inheader, len, NULL, -1,
"Error forwarding message to cluster");
} else {
@@ -1440,25 +1446,35 @@ static int distribute_command(struct local_client *thisfd)
/* Are we the requested node ?? */
if (memcmp(csid, our_csid, max_csid_len) == 0) {
- DEBUGLOG("Doing command on local node only\n");
+ DEBUGLOG("Doing command on local node only (by destination)\n");
inheader->flags &= ~CLVMD_FLAG_REMOTE;
inheader->flags |= CLVMD_FLAG_LOCAL;
add_to_lvmqueue(thisfd, inheader, len, NULL);
} else {
- DEBUGLOG("Sending message to single node: %s\n",
- inheader->node);
+ unsigned int a, b;
+ memcpy(&a, csid, max_csid_len);
+ memcpy(&b, our_csid, max_csid_len);
+
+ DEBUGLOG("Sending message to single node: %s, csid=0x%x, our_csid=0x%x\n",
+ inheader->node, a, b);
inheader->xid = thisfd->xid;
+ DEBUGLOG("Sending mesaage of size %u: xid=%u, cmd=%s, status=%u, flags=%u, clientid=%u, arglen=%u, node='%s', args='%s'\n",
+ len,
+ inheader->xid, decode_cmd(inheader->cmd), inheader->status, inheader->flags, inheader->clientid, inheader->arglen,
+ inheader->node, inheader->arglen > 0 ? args_printable : "");
send_message(inheader, len,
csid, -1,
"Error forwarding message to cluster node");
}
}
}
+ free(args_printable);
} else {
/* Local explicitly requested, ignore nodes */
thisfd->bits.localsock.in_progress = TRUE;
thisfd->bits.localsock.expected_replies = 1;
thisfd->bits.localsock.num_replies = 0;
+ DEBUGLOG("Doing command on local node only (by flag)\n");
add_to_lvmqueue(thisfd, inheader, len, NULL);
}
return 0;
@@ -1532,8 +1548,16 @@ static void process_remote_command(struct clvm_header *msg, int msglen, int fd,
if (replyargs != NULL) {
/* Run the command */
/* FIXME: usage of init_test() is unprotected */
+ char *args_printable = strdup_printable(msg->args, msg->arglen);
+
+ DEBUGLOG("Processing request of size %u: xid=%u, cmd=%s, status=%u, flags=%u, clientid=%u, arglen=%u, node='%s', args='%s'\n",
+ msglen,
+ msg->xid, decode_cmd(msg->cmd), msg->status, msg->flags, msg->clientid, msg->arglen,
+ msg->node, msg->arglen > 0 ? args_printable : "");
+
status = do_command(NULL, msg, msglen, &replyargs,
buflen, &replylen);
+ free(args_printable);
} else {
status = ENOMEM;
}
@@ -1547,6 +1571,7 @@ static void process_remote_command(struct clvm_header *msg, int msglen, int fd,
if (aggreply) {
struct clvm_header *agghead =
(struct clvm_header *) aggreply;
+ char *args_printable = strdup_printable(replyargs, replylen);
replyargs = aggreply;
/* Move it up so there's room for a header in front of the data */
@@ -1560,6 +1585,11 @@ static void process_remote_command(struct clvm_header *msg, int msglen, int fd,
agghead->clientid = msg->clientid;
agghead->arglen = replylen;
agghead->node[0] = '\0';
+ DEBUGLOG("Sending reply of size %u: xid=%u, cmd=%s, status=%u, flags=%u, clientid=%u, arglen=%u, node='%s', args='%s'\n",
+ (unsigned int) sizeof(struct clvm_header) + replylen,
+ agghead->xid, decode_cmd(agghead->cmd), agghead->status, agghead->flags, agghead->clientid, agghead->arglen,
+ agghead->node, agghead->arglen > 0 ? args_printable : "");
+ free(args_printable);
send_message(aggreply,
sizeof(struct clvm_header) +
replylen, csid, fd,
@@ -1748,16 +1778,28 @@ static int process_local_command(struct clvm_header *msg, int msglen,
/* If local flag is not set, just set a successful status code. */
if (! (msg->flags & CLVMD_FLAG_LOCAL)) {
+ DEBUGLOG("Setting success for remote msg in process_local_command\n");
status = 0;
- else
+ }
+ else {
+ char *args_printable = strdup_printable(msg->args, msg->arglen);
+ DEBUGLOG("Processing request of size %u: xid=%u, cmd=%s, status=%u, flags=%u, clientid=%u, arglen=%u, node='%s', args='%s'\n",
+ msglen,
+ msg->xid, decode_cmd(msg->cmd), msg->status, msg->flags, msg->clientid, msg->arglen,
+ msg->node, msg->arglen > 0 ? args_printable : "");
+
/* FIXME: usage of init_test() is unprotected */
status = do_command(client, msg, msglen, &replybuf, buflen, &replylen);
-
+ free(args_printable);
+ }
if (status)
client->bits.localsock.all_success = 0;
/* If we took too long then discard the reply */
if (xid == client->xid) {
+ char *args_printable = strdup_printable(replybuf, replylen);
+ DEBUGLOG("Adding local reply of size %u: '%s'\n", replylen, replylen > 0 ? args_printable : "");
+ free(args_printable);
add_reply_to_list(client, status, our_csid, replybuf, replylen);
} else {
DEBUGLOG
--
1.7.1
next prev parent reply other threads:[~2013-03-19 13:32 UTC|newest]
Thread overview: 36+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-03-19 13:32 [linux-lvm] [PATCH 00/10] Enhancements to a clustered logical volume activation Vladislav Bogdanov
2013-03-19 13:32 ` [linux-lvm] [PATCH 01/10] lvchange: Allow cluster lock conversion Vladislav Bogdanov
2013-03-19 15:23 ` David Teigland
2013-03-19 15:33 ` Vladislav Bogdanov
2013-03-19 15:44 ` Vladislav Bogdanov
2013-03-19 16:03 ` David Teigland
2013-03-19 16:36 ` Vladislav Bogdanov
2013-03-19 13:32 ` [linux-lvm] [PATCH 02/10] clvmd: Fix buffer size Vladislav Bogdanov
2013-03-19 13:32 ` [linux-lvm] [PATCH 03/10] clvmd: Allow node names to be obtained from corosync's CMAP Vladislav Bogdanov
2013-03-19 13:32 ` [linux-lvm] [PATCH 04/10] clvmd: fix positive return value is not an error in csid->name translation Vladislav Bogdanov
2013-03-19 13:32 ` [linux-lvm] [PATCH 05/10] clvmd: use correct flags for local command execution Vladislav Bogdanov
2013-03-19 13:32 ` Vladislav Bogdanov [this message]
2013-03-19 13:32 ` [linux-lvm] [PATCH 07/10] locking: Allow lock management (activation, deactivation, conversion) on a remote nodes Vladislav Bogdanov
2013-03-19 13:32 ` [linux-lvm] [PATCH 08/10] lvchange: implement remote lock management Vladislav Bogdanov
2013-03-19 13:32 ` [linux-lvm] [PATCH 09/10] man: document --force option to lvchange, provide examples Vladislav Bogdanov
2013-03-19 13:32 ` [linux-lvm] [PATCH 10/10] man: document --node option to lvchange Vladislav Bogdanov
2013-03-19 15:32 ` David Teigland
2013-03-19 15:42 ` Vladislav Bogdanov
2013-03-19 15:54 ` David Teigland
2013-03-19 16:52 ` Vladislav Bogdanov
2013-03-19 17:16 ` David Teigland
2013-03-19 17:36 ` Vladislav Bogdanov
2013-03-20 8:45 ` Zdenek Kabelac
2013-03-20 12:12 ` Vladislav Bogdanov
2013-03-21 18:31 ` Vladislav Bogdanov
2013-03-21 19:01 ` Zdenek Kabelac
2013-03-21 19:16 ` Vladislav Bogdanov
2013-03-21 18:23 ` Vladislav Bogdanov
2013-03-19 16:42 ` [linux-lvm] [PATCH 00/10] Enhancements to a clustered logical volume activation Alasdair G Kergon
2013-03-19 17:42 ` Vladislav Bogdanov
2013-06-05 13:23 ` [linux-lvm] clvmd leaving kernel dlm uncontrolled lockspace Andreas Pflug
2013-06-05 15:13 ` David Teigland
2013-06-05 17:29 ` Andreas Pflug
2013-06-06 6:17 ` Andreas Pflug
2013-06-06 11:06 ` matthew patton
2013-06-06 17:54 ` Andreas Pflug
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1363699970-10002-7-git-send-email-bubble@hoster-ok.com \
--to=bubble@hoster-ok.com \
--cc=linux-lvm@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).