mirror of
git://sourceware.org/git/lvm2.git
synced 2024-12-22 17:35:59 +03:00
cluster log daemon (clogd): Adjust for kernel CTR arg reordering
We have moved the internally generated mirror-device-size parameter from the end of the CTR string to the begining. This change adjusts for that.
This commit is contained in:
parent
3c0cfa8f3c
commit
226e79e7b7
@ -540,6 +540,7 @@ static int clog_ctr(struct dm_ulog_request *rq)
|
|||||||
{
|
{
|
||||||
int argc, i, r = 0;
|
int argc, i, r = 0;
|
||||||
char *p, **argv = NULL;
|
char *p, **argv = NULL;
|
||||||
|
char *dev_size_str;
|
||||||
uint64_t device_size;
|
uint64_t device_size;
|
||||||
|
|
||||||
/* Sanity checks */
|
/* Sanity checks */
|
||||||
@ -559,14 +560,16 @@ static int clog_ctr(struct dm_ulog_request *rq)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Split up args */
|
/* Split up args */
|
||||||
for (argc = 1, p = rq->data; (p = strstr(p, " ")); p++, argc++)
|
for (argc = 0, p = rq->data; (p = strstr(p, " ")); p++, argc++)
|
||||||
*p = '\0';
|
*p = '\0';
|
||||||
|
|
||||||
argv = malloc(argc * sizeof(char *));
|
argv = malloc(argc * sizeof(char *));
|
||||||
if (!argv)
|
if (!argv)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
|
|
||||||
for (i = 0, p = rq->data; i < argc; i++, p = p + strlen(p) + 1)
|
p = dev_size_str = rq->data;
|
||||||
|
p += strlen(p) + 1;
|
||||||
|
for (i = 0; i < argc; i++, p = p + strlen(p) + 1)
|
||||||
argv[i] = p;
|
argv[i] = p;
|
||||||
|
|
||||||
if (strcmp(argv[0], "clustered_disk") &&
|
if (strcmp(argv[0], "clustered_disk") &&
|
||||||
@ -576,13 +579,12 @@ static int clog_ctr(struct dm_ulog_request *rq)
|
|||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!(device_size = strtoll(argv[argc - 1], &p, 0)) || *p) {
|
if (!(device_size = strtoll(dev_size_str, &p, 0)) || *p) {
|
||||||
LOG_ERROR("Invalid device size argument: %s", argv[argc - 1]);
|
LOG_ERROR("Invalid device size argument: %s", dev_size_str);
|
||||||
free(argv);
|
free(argv);
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
argc--; /* We pass in the device_size separate */
|
|
||||||
r = _clog_ctr(rq->uuid, rq->luid, argc - 1, argv + 1, device_size);
|
r = _clog_ctr(rq->uuid, rq->luid, argc - 1, argv + 1, device_size);
|
||||||
|
|
||||||
/* We join the CPG when we resume */
|
/* We join the CPG when we resume */
|
||||||
|
Loading…
Reference in New Issue
Block a user