[lvm-devel] main - toolib: move sigint_caught

Zdenek Kabelac zkabelac at sourceware.org
Tue Mar 2 21:58:34 UTC 2021


Gitweb:        https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=56620b903955e245d4a257847f5825bb44d6db1e
Commit:        56620b903955e245d4a257847f5825bb44d6db1e
Parent:        2a9a3346e74c1327eafb03c44f2579eb6119943f
Author:        Zdenek Kabelac <zkabelac at redhat.com>
AuthorDate:    Sat Feb 27 19:22:11 2021 +0100
Committer:     Zdenek Kabelac <zkabelac at redhat.com>
CommitterDate: Tue Mar 2 22:54:40 2021 +0100

toolib: move sigint_caught

Move the check for catched signal to the loop front.
Currently not much usable - but we can improve it later.
---
 tools/toollib.c | 44 +++++++++++++++++++++++---------------------
 1 file changed, 23 insertions(+), 21 deletions(-)

diff --git a/tools/toollib.c b/tools/toollib.c
index 9c026d9e5..67422e3b4 100644
--- a/tools/toollib.c
+++ b/tools/toollib.c
@@ -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;
 




More information about the lvm-devel mailing list