]> sourceware.org Git - lvm2.git/commitdiff
Prevent the user from simultaneously adding a mirror log while removing
authorJonathan Earl Brassow <jbrassow@redhat.com>
Wed, 5 Jan 2011 20:02:45 +0000 (20:02 +0000)
committerJonathan Earl Brassow <jbrassow@redhat.com>
Wed, 5 Jan 2011 20:02:45 +0000 (20:02 +0000)
a mirror image (or removing a log while adding a mirror).  Advise the
user to use two separate commands instead.

This issue become especially problematic when PVs are specified, as they
tend to mean different things when adding vs removing.  In a command that
mixes adding and removing, it is impossible to decern exactly what the
user wants.

This change prevents bug 603912.

WHATS_NEW
tools/lvconvert.c

index 1a4dcc77da90bf4ea91b51276470dfe8fca2f534..04920bc6a14ddcf3d5287caf8c78931e533411c6 100644 (file)
--- a/WHATS_NEW
+++ b/WHATS_NEW
@@ -1,5 +1,6 @@
 Version 2.02.80 - 
 ====================================
+  Prevent adding/removing mirror log while removing/adding an image.
   Add missing tests in _setup_task().
   Fail poll daemon creation when lvmcache_init() fails.
   Return defined value for errors in _copy_percent() and _snap_percent().
index 7c7826bbdbb85dfd3520c2ba63a2c8da6e406cbd..3dab0d3f8a61a5ca9ff62d7be1b6457574ba97a6 100644 (file)
@@ -926,6 +926,25 @@ static int _lvconvert_mirrors_parse_params(struct cmd_context *cmd,
                return 0;
        }
 
+       /*
+        * Disallow adding logs while removing images or
+        *          adding images while removing logs
+        */
+       if ((*old_log_count < *new_log_count) &&
+           (*old_mimage_count > *new_mimage_count)) {
+               log_error("Mirror logs cannot be added while images are"
+                         " being removed.");
+               log_error("Try two separate commands.");
+               return 0;
+       }
+       if ((*old_log_count > *new_log_count) &&
+           (*old_mimage_count < *new_mimage_count)) {
+               log_error("Mirror images cannot be added while logs are"
+                         " being removed.");
+               log_error("Try two separate commands.");
+               return 0;
+       }
+
        /*
         * No mirrored logs for cluster mirrors until
         * log daemon is multi-threaded.
This page took 0.046411 seconds and 5 git commands to generate.