]> sourceware.org Git - lvm2.git/commitdiff
toolib: move sigint_caught
authorZdenek Kabelac <zkabelac@redhat.com>
Sat, 27 Feb 2021 18:22:11 +0000 (19:22 +0100)
committerZdenek Kabelac <zkabelac@redhat.com>
Tue, 2 Mar 2021 21:54:40 +0000 (22:54 +0100)
Move the check for catched signal to the loop front.
Currently not much usable - but we can improve it later.

tools/toollib.c

index 9c026d9e5faaee81567e3bbace21fba4e77d098d..67422e3b4386f2d5533f0c9f1f65de0f5799ef3e 100644 (file)
@@ -1407,6 +1407,12 @@ int process_each_label(struct cmd_context *cmd, int argc, char **argv,
 
        if (argc) {
                for (; opt < argc; opt++) {
+                       if (sigint_caught()) {
+                               log_error("Interrupted.");
+                               ret_max = ECMD_FAILED;
+                               goto out;
+                       }
+
                        if (!(dev = dev_cache_get(cmd, argv[opt], cmd->filter))) {
                                log_error("Failed to find device "
                                          "\"%s\".", argv[opt]);
@@ -1436,12 +1442,14 @@ int process_each_label(struct cmd_context *cmd, int argc, char **argv,
                                ret_max = ret;
 
                        log_set_report_object_name_and_id(NULL, NULL);
-
-                       if (sigint_caught())
-                               break;
                }
 
                dm_list_iterate_items(devl, &process_duplicates) {
+                       if (sigint_caught()) {
+                               log_error("Interrupted.");
+                               ret_max = ECMD_FAILED;
+                               goto out;
+                       }
                        /* 
                         * remove the existing dev for this pvid from lvmcache
                         * so that the duplicate dev can replace it.
@@ -1470,9 +1478,6 @@ int process_each_label(struct cmd_context *cmd, int argc, char **argv,
                                ret_max = ret;
 
                        log_set_report_object_name_and_id(NULL, NULL);
-
-                       if (sigint_caught())
-                               break;
                }
 
                goto out;
@@ -1484,8 +1489,13 @@ int process_each_label(struct cmd_context *cmd, int argc, char **argv,
                goto out;
        }
 
-       while ((dev = dev_iter_get(cmd, iter)))
-       {
+       while ((dev = dev_iter_get(cmd, iter))) {
+               if (sigint_caught()) {
+                       log_error("Interrupted.");
+                       ret_max = ECMD_FAILED;
+                       break;
+               }
+
                if (!(label = lvmcache_get_dev_label(dev)))
                        continue;
 
@@ -1498,9 +1508,6 @@ int process_each_label(struct cmd_context *cmd, int argc, char **argv,
                        ret_max = ret;
 
                log_set_report_object_name_and_id(NULL, NULL);
-
-               if (sigint_caught())
-                       break;
        }
 
        dev_iter_destroy(iter);
@@ -3064,11 +3071,6 @@ int process_each_lv_in_vg(struct cmd_context *cmd, struct volume_group *vg,
 
                process_lv = process_lv && select_match_lv(cmd, handle, vg, lvl->lv) && _select_matches(handle);
 
-               if (sigint_caught()) {
-                       ret_max = ECMD_FAILED;
-                       goto_out;
-               }
-
                if (!process_lv)
                        continue;
 
@@ -3174,6 +3176,11 @@ int process_each_lv_in_vg(struct cmd_context *cmd, struct volume_group *vg,
 
                        log_set_report_object_name_and_id(glvl->glv->historical->name, lv_uuid);
 
+                       if (sigint_caught()) {
+                               ret_max = ECMD_FAILED;
+                               goto_out;
+                       }
+
                        process_lv = process_all;
 
                        if (lvargs_supplied &&
@@ -3185,11 +3192,6 @@ int process_each_lv_in_vg(struct cmd_context *cmd, struct volume_group *vg,
 
                        process_lv = process_lv && select_match_lv(cmd, handle, vg, lvl->lv) && _select_matches(handle);
 
-                       if (sigint_caught()) {
-                               ret_max = ECMD_FAILED;
-                               goto_out;
-                       }
-
                        if (!process_lv)
                                continue;
 
This page took 0.038621 seconds and 5 git commands to generate.