diff --git a/WHATS_NEW b/WHATS_NEW index 80781968c..3593f32e5 100644 --- a/WHATS_NEW +++ b/WHATS_NEW @@ -1,7 +1,8 @@ Version 2.02.18 - ==================================== - Print warning instead of error message if cannot zero volume - Update lvconvert man page (snapshot option) + Prevent permission changes on active mirrors. + Print warning instead of error message if lvconvert cannot zero volume. + Add snapshot options to lvconvert man page. dumpconfig accepts a list of configuration variables to display. Change dumpconfig to use --file to redirect output to a file. Avoid vgreduce error when mirror code removes the log LV. diff --git a/man/lvconvert.8 b/man/lvconvert.8 index 8efde5991..7ce15bf24 100644 --- a/man/lvconvert.8 +++ b/man/lvconvert.8 @@ -58,7 +58,7 @@ Power of 2 chunk size for the snapshot logical volume between 4k and 512k. .TP .I \-Z, \-\-zero y/n Controls zeroing of the first KB of data in the snapshot. -If the volume is read only snapshot will not be zeroed. +If the volume is read-only the snapshot will not be zeroed. .br .SH Examples "lvconvert -m1 vg00/lvol1" diff --git a/tools/lvchange.c b/tools/lvchange.c index 658725fd1..4f1210080 100644 --- a/tools/lvchange.c +++ b/tools/lvchange.c @@ -19,6 +19,7 @@ static int lvchange_permission(struct cmd_context *cmd, struct logical_volume *lv) { uint32_t lv_access; + struct lvinfo info; lv_access = arg_uint_value(cmd, permission_ARG, 0); @@ -34,6 +35,13 @@ static int lvchange_permission(struct cmd_context *cmd, return 0; } + if ((lv->status & MIRRORED) && (lv->vg->status & CLUSTERED) && + lv_info(cmd, lv, &info, 0) && info.exists) { + log_error("Cannot change permissions of mirror \"%s\" " + "while active.", lv->name); + return 0; + } + if (lv_access & LVM_WRITE) { lv->status |= LVM_WRITE; log_verbose("Setting logical volume \"%s\" read/write",