1
0
mirror of git://sourceware.org/git/lvm2.git synced 2025-03-10 16:58:47 +03:00

Always sent the whole command header in restart/reload clvmd commands.

(Newly added check catch this as invalid packet.)

(N.B. that code is so fragile that it need full rewrite soon:-)
This commit is contained in:
Milan Broz 2011-09-21 13:40:46 +00:00
parent d9bba4f16f
commit f5d39ec97a
2 changed files with 13 additions and 6 deletions

View File

@ -1,5 +1,6 @@
Version 2.02.89 - Version 2.02.89 -
================================== ==================================
Always send the whole clvmd packet header in refresh commands.
Add missing error checks for some system calls in cmirrord. Add missing error checks for some system calls in cmirrord.
Add missing log_error() to lvresize command when fsadm tool fails. Add missing log_error() to lvresize command when fsadm tool fails.
Add support for DM_DEV_DIR device path into fsadm script. Add support for DM_DEV_DIR device path into fsadm script.

View File

@ -149,14 +149,20 @@ static int _send_request(const char *inbuf, int inlen, char **retbuf, int no_res
/* Build the structure header and parse-out wildcard node names */ /* Build the structure header and parse-out wildcard node names */
static void _build_header(struct clvm_header *head, int cmd, const char *node, static void _build_header(struct clvm_header *head, int cmd, const char *node,
int len) unsigned int len)
{ {
head->cmd = cmd; head->cmd = cmd;
head->status = 0; head->status = 0;
head->flags = 0; head->flags = 0;
head->xid = 0; head->xid = 0;
head->clientid = 0; head->clientid = 0;
head->arglen = len; if (len)
/* 1 byte is used from struct clvm_header.args[1], so -> len - 1 */
head->arglen = len - 1;
else {
head->arglen = 0;
*head->args = '\0';
}
if (node) { if (node) {
/* /*
@ -198,12 +204,12 @@ static int _cluster_request(char cmd, const char *node, void *data, int len,
if (_clvmd_sock == -1) if (_clvmd_sock == -1)
return 0; return 0;
/* 1 byte is used from struct clvm_header.args[1], so -> len - 1 */ _build_header(head, cmd, node, len);
_build_header(head, cmd, node, len - 1); if (len)
memcpy(head->node + strlen(head->node) + 1, data, len); memcpy(head->node + strlen(head->node) + 1, data, len);
status = _send_request(outbuf, sizeof(struct clvm_header) + status = _send_request(outbuf, sizeof(struct clvm_header) +
strlen(head->node) + len - 1, &retbuf, no_response); strlen(head->node) + len, &retbuf, no_response);
if (!status || no_response) if (!status || no_response)
goto out; goto out;