mirror of
git://sourceware.org/git/lvm2.git
synced 2025-01-03 05:18:29 +03:00
Do not allow users to change the name of RAID sub-LVs or the name of the
RAID LV if it is tracking changes for a split image.
This commit is contained in:
parent
9981b8be03
commit
a927e401f1
@ -1,5 +1,7 @@
|
||||
Version 2.02.89 -
|
||||
==================================
|
||||
Don't allow name change of RAID LV while tracking a split image.
|
||||
Do not allow users to change the name of RAID sub-LVs
|
||||
Do not allow users to change permissions on RAID sub-LVs
|
||||
Support the ability to replace specific devices in a RAID array via lvconvert.
|
||||
Add activation/use_linear_target enabled by default.
|
||||
|
@ -780,6 +780,7 @@ struct logical_volume *first_replicator_dev(const struct logical_volume *lv);
|
||||
/* -- metadata/replicator_manip.c */
|
||||
|
||||
/* ++ metadata/raid_manip.c */
|
||||
int lv_is_raid_with_tracking(const struct logical_volume *lv);
|
||||
uint32_t lv_raid_image_count(const struct logical_volume *lv);
|
||||
int lv_raid_change_image_count(struct logical_volume *lv,
|
||||
uint32_t new_count, struct dm_list *pvs);
|
||||
|
@ -26,6 +26,22 @@
|
||||
|
||||
#define RAID_REGION_SIZE 1024
|
||||
|
||||
int lv_is_raid_with_tracking(const struct logical_volume *lv)
|
||||
{
|
||||
uint32_t s;
|
||||
struct lv_segment *seg;
|
||||
|
||||
if (lv->status & RAID) {
|
||||
seg = first_seg(lv);
|
||||
|
||||
for (s = 0; s < seg->area_count; s++)
|
||||
if (lv_is_visible(seg_lv(seg, s)) &&
|
||||
!(seg_lv(seg, s)->status & LVM_WRITE))
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
uint32_t lv_raid_image_count(const struct logical_volume *lv)
|
||||
{
|
||||
struct lv_segment *seg = first_seg(lv);
|
||||
|
@ -115,6 +115,21 @@ int lvrename(struct cmd_context *cmd, int argc, char **argv)
|
||||
goto error;
|
||||
}
|
||||
|
||||
if (lvl->lv->status & (RAID_IMAGE | RAID_META)) {
|
||||
log_error("Cannot rename a RAID %s directly",
|
||||
(lvl->lv->status & RAID_IMAGE) ? "image" :
|
||||
"metadata area");
|
||||
r = ECMD_FAILED;
|
||||
goto error;
|
||||
}
|
||||
|
||||
if (lv_is_raid_with_tracking(lvl->lv)) {
|
||||
log_error("Cannot rename %s while it is tracking a split image",
|
||||
lvl->lv->name);
|
||||
r = ECMD_FAILED;
|
||||
goto error;
|
||||
}
|
||||
|
||||
if (!lv_rename(cmd, lvl->lv, lv_name_new))
|
||||
goto error;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user