[lvm-devel] LVM2 lib/metadata/lv_manip.c lib/metadata/meta ...

wysochanski at sourceware.org wysochanski at sourceware.org
Tue Aug 21 16:40:34 UTC 2007


CVSROOT:	/cvs/lvm2
Module name:	LVM2
Changes by:	wysochanski at sourceware.org	2007-08-21 16:40:33

Modified files:
	lib/metadata   : lv_manip.c metadata-exported.h 
	tools          : vgremove.c 

Log message:
	Prepare to move guts of vgremove into lvm library.
	Fixup force_t.

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/metadata/lv_manip.c.diff?cvsroot=lvm2&r1=1.124&r2=1.125
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/metadata/metadata-exported.h.diff?cvsroot=lvm2&r1=1.10&r2=1.11
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/tools/vgremove.c.diff?cvsroot=lvm2&r1=1.42&r2=1.43

--- LVM2/lib/metadata/lv_manip.c	2007/08/20 20:55:26	1.124
+++ LVM2/lib/metadata/lv_manip.c	2007/08/21 16:40:33	1.125
@@ -1850,7 +1850,7 @@
 			return 0;
 		}
 
-		if (info.exists && (force == DONT_FORCE)) {
+		if (info.exists && (force == PROMPT)) {
 			if (yes_no_prompt("Do you really want to remove active "
 					  "logical volume \"%s\"? [y/n]: ",
 					  lv->name) == 'n') {
--- LVM2/lib/metadata/metadata-exported.h	2007/08/20 20:55:26	1.10
+++ LVM2/lib/metadata/metadata-exported.h	2007/08/21 16:40:33	1.11
@@ -107,9 +107,9 @@
  * Whether or not to force an operation.
  */
 typedef enum {
-	DONT_FORCE = 0,
-	FORCE_NO_CONFIRM = 1, /* skip yes/no confirmation of operation */
-	FORCE_OVERRIDE = 2 /* skip confirmation and bypass a second condition */
+	PROMPT = 0, /* Issue yes/no prompt to confirm operation */
+	DONT_PROMPT = 1, /* Skip yes/no prompt */
+	DONT_PROMPT_OVERRIDE = 2 /* Skip prompt + override a second condition */
 } force_t;
 
 struct cmd_context;
--- LVM2/tools/vgremove.c	2007/08/20 20:55:30	1.42
+++ LVM2/tools/vgremove.c	2007/08/21 16:40:33	1.43
@@ -15,37 +15,37 @@
 
 #include "tools.h"
 
-static int vgremove_single(struct cmd_context *cmd, const char *vg_name,
-			   struct volume_group *vg, int consistent,
-			   void *handle __attribute((unused)))
+static int vg_remove_single(struct cmd_context *cmd, const char *vg_name,
+			    struct volume_group *vg, int consistent,
+			    force_t force)
 {
 	struct physical_volume *pv;
 	struct pv_list *pvl;
-	int ret = ECMD_PROCESSED;
+	int ret = 1;
 
 	if (!vg || !consistent || (vg_status(vg) & PARTIAL_VG)) {
 		log_error("Volume group \"%s\" not found or inconsistent.",
 			  vg_name);
 		log_error("Consider vgreduce --removemissing if metadata "
 			  "is inconsistent.");
-		return ECMD_FAILED;
+		return 0;
 	}
 
 	if (!vg_check_status(vg, EXPORTED_VG))
-		return ECMD_FAILED;
+		return 0;
 
 	if (vg->lv_count) {
 		log_error("Volume group \"%s\" still contains %d "
 			  "logical volume(s)", vg_name, vg->lv_count);
-		return ECMD_FAILED;
+		return 0;
 	}
 
 	if (!archive(vg))
-		return ECMD_FAILED;
+		return 0;
 
 	if (!vg_remove(vg)) {
 		log_error("vg_remove %s failed", vg_name);
-		return ECMD_FAILED;
+		return 0;
 	}
 
 	/* init physical volumes */
@@ -58,7 +58,7 @@
 
 		if (!dev_get_size(pv_dev(pv), &pv->size)) {
 			log_error("%s: Couldn't get size.", dev_name(pv_dev(pv)));
-			ret = ECMD_FAILED;
+			ret = 0;
 			continue;
 		}
 
@@ -67,19 +67,29 @@
 			log_error("Failed to remove physical volume \"%s\""
 				  " from volume group \"%s\"",
 				  dev_name(pv_dev(pv)), vg_name);
-			ret = ECMD_FAILED;
+			ret = 0;
 		}
 	}
 
 	backup_remove(cmd, vg_name);
 
-	if (ret == ECMD_PROCESSED)
+	if (ret)
 		log_print("Volume group \"%s\" successfully removed", vg_name);
 	else
 		log_error("Volume group \"%s\" not properly removed", vg_name);
 
 	return ret;
 }
+static int vgremove_single(struct cmd_context *cmd, const char *vg_name,
+			   struct volume_group *vg, int consistent,
+			   void *handle __attribute((unused)))
+{
+	if (!vg_remove_single(cmd, vg_name, vg, consistent,
+			      arg_count(cmd, force_ARG)))
+		return ECMD_FAILED;
+
+	return ECMD_PROCESSED;
+}
 
 int vgremove(struct cmd_context *cmd, int argc, char **argv)
 {




More information about the lvm-devel mailing list