mirror of
git://sourceware.org/git/lvm2.git
synced 2025-01-03 05:18:29 +03:00
add clustered log uuid
This commit is contained in:
parent
7ffe8aab61
commit
67b25ed49f
@ -86,6 +86,7 @@ struct load_segment {
|
|||||||
unsigned clustered; /* Mirror */
|
unsigned clustered; /* Mirror */
|
||||||
unsigned mirror_area_count; /* Mirror */
|
unsigned mirror_area_count; /* Mirror */
|
||||||
uint32_t flags; /* Mirror log */
|
uint32_t flags; /* Mirror log */
|
||||||
|
char *uuid; /* Clustered mirror log */
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Per-device properties */
|
/* Per-device properties */
|
||||||
@ -1238,7 +1239,12 @@ static int _emit_segment_line(struct dm_task *dmt, struct load_segment *seg, uin
|
|||||||
case SEG_LINEAR:
|
case SEG_LINEAR:
|
||||||
break;
|
break;
|
||||||
case SEG_MIRRORED:
|
case SEG_MIRRORED:
|
||||||
|
log_parm_count = 1; /* Region size */
|
||||||
|
log_parm_count = hweight32(seg->flags); /* [no]sync, block_on_error etc. */
|
||||||
|
|
||||||
if (seg->clustered) {
|
if (seg->clustered) {
|
||||||
|
if (seg->uuid)
|
||||||
|
log_parm_count++; /* uuid */
|
||||||
if ((tw = _dm_snprintf(params + pos, paramsize - pos, "clustered_")) < 0) {
|
if ((tw = _dm_snprintf(params + pos, paramsize - pos, "clustered_")) < 0) {
|
||||||
stack; /* Out of space */
|
stack; /* Out of space */
|
||||||
return -1;
|
return -1;
|
||||||
@ -1246,9 +1252,6 @@ static int _emit_segment_line(struct dm_task *dmt, struct load_segment *seg, uin
|
|||||||
pos += tw;
|
pos += tw;
|
||||||
}
|
}
|
||||||
|
|
||||||
log_parm_count = 1; /* Region size */
|
|
||||||
log_parm_count = hweight32(seg->flags); /* [no]sync, block_on_error etc. */
|
|
||||||
|
|
||||||
if (!seg->log)
|
if (!seg->log)
|
||||||
logtype = "core";
|
logtype = "core";
|
||||||
else {
|
else {
|
||||||
@ -1278,6 +1281,14 @@ static int _emit_segment_line(struct dm_task *dmt, struct load_segment *seg, uin
|
|||||||
}
|
}
|
||||||
pos += tw;
|
pos += tw;
|
||||||
|
|
||||||
|
if (seg->clustered && seg->uuid) {
|
||||||
|
if ((tw = _dm_snprintf(params + pos, paramsize - pos, "%s ", seg->uuid)) < 0) {
|
||||||
|
stack; /* Out of space */
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
pos += tw;
|
||||||
|
}
|
||||||
|
|
||||||
if ((seg->flags & DM_NOSYNC)) {
|
if ((seg->flags & DM_NOSYNC)) {
|
||||||
if ((tw = _dm_snprintf(params + pos, paramsize - pos, "nosync ")) < 0) {
|
if ((tw = _dm_snprintf(params + pos, paramsize - pos, "nosync ")) < 0) {
|
||||||
stack; /* Out of space */
|
stack; /* Out of space */
|
||||||
@ -1694,8 +1705,14 @@ int dm_tree_node_add_mirror_target_log(struct dm_tree_node *node,
|
|||||||
log_error("Couldn't find mirror log uuid %s.", log_uuid);
|
log_error("Couldn't find mirror log uuid %s.", log_uuid);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!_link_tree_nodes(node, log_node))
|
if (!_link_tree_nodes(node, log_node))
|
||||||
return_0;
|
return_0;
|
||||||
|
|
||||||
|
if (!(seg->uuid = dm_pool_strdup(node->dtree->mem, log_uuid))) {
|
||||||
|
log_error("log uuid pool_strdup failed");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
seg->log = log_node;
|
seg->log = log_node;
|
||||||
|
Loading…
Reference in New Issue
Block a user