]> sourceware.org Git - lvm2.git/commitdiff
When down-converting RAID1, don't activate sub-lvs between suspend/resume
authorJonathan Earl Brassow <jbrassow@redhat.com>
Thu, 18 Aug 2011 19:31:33 +0000 (19:31 +0000)
committerJonathan Earl Brassow <jbrassow@redhat.com>
Thu, 18 Aug 2011 19:31:33 +0000 (19:31 +0000)
of top-level LV.

We can't activate sub-lv's that are being removed from a RAID1 LV while it
is suspended.  However, this is what was being used to have them show-up
so we could remove them.  'sync_local_dev_names' is a sufficient and
proper replacement and can be done after the top-level LV is resumed.

WHATS_NEW
lib/metadata/raid_manip.c

index 56778d1326343c8d4b141a91915b8bf2f4d9b8de..92a7938a3cd72a1fef828e1c41c1071935de557c 100644 (file)
--- a/WHATS_NEW
+++ b/WHATS_NEW
@@ -1,5 +1,6 @@
 Version 2.02.88 - 
 ==================================
+  When down-converting RAID1, don't activate sub-lvs between suspend/resume
   Add -V as short form of --virtualsize in lvcreate.
   Fix make clean not to remove Makefile.  (2.02.87)
 
index 545c79bc3ec7db74f93031cb095216ff43daef47..4a00820e5ee386573233527ab6a5d58705ccb834 100644 (file)
@@ -488,22 +488,9 @@ int lv_raid_change_image_count(struct logical_volume *lv,
        }
 
        /*
-        * Bring extracted LVs into existance, so there are no
-        * conflicts for the main RAID device's resume
+        * Resume original LV
+        * This also resumes all other sub-lvs (including the extracted)
         */
-       if (!dm_list_empty(&removal_list)) {
-               dm_list_iterate_items(lvl, &removal_list) {
-                       /* If top RAID was EX, use EX */
-                       if (lv_is_active_exclusive_locally(lv)) {
-                               if (!activate_lv_excl(lv->vg->cmd, lvl->lv))
-                                       return_0;
-                       } else {
-                               if (!activate_lv(lv->vg->cmd, lvl->lv))
-                                       return_0;
-                       }
-               }
-       }
-
        if (!resume_lv(lv->vg->cmd, lv)) {
                log_error("Failed to resume %s/%s after committing changes",
                          lv->vg->name, lv->name);
@@ -513,6 +500,7 @@ int lv_raid_change_image_count(struct logical_volume *lv,
        /*
         * Eliminate the extracted LVs
         */
+       sync_local_dev_names(lv->vg->cmd);
        if (!dm_list_empty(&removal_list)) {
                dm_list_iterate_items(lvl, &removal_list) {
                        if (!deactivate_lv(lv->vg->cmd, lvl->lv))
This page took 0.042046 seconds and 5 git commands to generate.