1
0
mirror of git://sourceware.org/git/lvm2.git synced 2024-12-21 13:34:40 +03:00

lvconvert: Limit --corelog and --mirrorlog to mirrors.

It's an error to specify a log when the final result is not of type
mirror.
This commit is contained in:
Alasdair G Kergon 2016-08-08 14:25:46 +01:00
parent 7d6cf12554
commit c55134aa48
2 changed files with 13 additions and 1 deletions

View File

@ -1,5 +1,6 @@
Version 2.02.163 -
=================================
Limit use of --corelog and --mirrorlog to mirrors in lvconvert.
Do not refresh whole cmd context if profile dropped after processing LVM cmd.
Support straightforward lvconvert between striped and raid4 LVs.
Support straightforward lvconvert between raid1 and mirror LVs.

View File

@ -1700,6 +1700,11 @@ static int _lvconvert_mirrors(struct cmd_context *cmd,
uint32_t new_mimage_count;
uint32_t new_log_count;
if (*lp->type_str && strcmp(lp->type_str, SEG_TYPE_NAME_MIRROR)) {
log_error("--corelog and --mirrorlog is only compatible with --type mirror");
return 0;
}
if (lp->merge_mirror) {
log_error("Unable to merge mirror images"
"of segment type 'mirror'.");
@ -1888,6 +1893,11 @@ static int _lvconvert_raid(struct logical_volume *lv, struct lvconvert_params *l
}
}
if ((lp->corelog || lp->mirrorlog) && strcmp(lp->type_str, SEG_TYPE_NAME_MIRROR)) {
log_error("--corelog and --mirrorlog is only compatible with --type mirror");
return 0;
}
if (lp->merge_mirror)
return lv_raid_merge(lv);
@ -1898,7 +1908,8 @@ static int _lvconvert_raid(struct logical_volume *lv, struct lvconvert_params *l
return lv_raid_split(lv, lp->lv_split_name, image_count, lp->pvh);
if (lp->mirrors_supplied) {
if (!*lp->type_str || !strcmp(lp->type_str, SEG_TYPE_NAME_RAID1) || !strcmp(lp->type_str, SEG_TYPE_NAME_LINEAR)) {
if (!*lp->type_str || !strcmp(lp->type_str, SEG_TYPE_NAME_RAID1) || !strcmp(lp->type_str, SEG_TYPE_NAME_LINEAR) ||
(!strcmp(lp->type_str, SEG_TYPE_NAME_STRIPED) && image_count == 1)) {
if (!lv_raid_change_image_count(lv, image_count, lp->pvh))
return_0;