1
0
mirror of git://sourceware.org/git/lvm2.git synced 2024-12-21 13:34:40 +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 -
==================================
Always send the whole clvmd packet header in refresh commands.
Add missing error checks for some system calls in cmirrord.
Add missing log_error() to lvresize command when fsadm tool fails.
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 */
static void _build_header(struct clvm_header *head, int cmd, const char *node,
int len)
unsigned int len)
{
head->cmd = cmd;
head->status = 0;
head->flags = 0;
head->xid = 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) {
/*
@ -198,12 +204,12 @@ static int _cluster_request(char cmd, const char *node, void *data, int len,
if (_clvmd_sock == -1)
return 0;
/* 1 byte is used from struct clvm_header.args[1], so -> len - 1 */
_build_header(head, cmd, node, len - 1);
memcpy(head->node + strlen(head->node) + 1, data, len);
_build_header(head, cmd, node, len);
if (len)
memcpy(head->node + strlen(head->node) + 1, data, len);
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)
goto out;