public inbox for lvm2-cvs@sourceware.org
help / color / mirror / Atom feed
* LVM2 ./WHATS_NEW tools/lvcreate.c tools/lvrena ...
@ 2006-08-25 23:02 agk
  0 siblings, 0 replies; 3+ messages in thread
From: agk @ 2006-08-25 23:02 UTC (permalink / raw)
  To: lvm2-cvs

CVSROOT:	/cvs/lvm2
Module name:	LVM2
Changes by:	agk@sourceware.org	2006-08-25 23:02:33

Modified files:
	.              : WHATS_NEW 
	tools          : lvcreate.c lvrename.c pvmove.c toollib.c 
	                 toollib.h vgcfgrestore.c vgcreate.c vgextend.c 
	                 vgmerge.c vgreduce.c vgrename.c 

Log message:
	Add skip_dev_dir() to process command line VGs.

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/WHATS_NEW.diff?cvsroot=lvm2&r1=1.431&r2=1.432
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/tools/lvcreate.c.diff?cvsroot=lvm2&r1=1.122&r2=1.123
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/tools/lvrename.c.diff?cvsroot=lvm2&r1=1.38&r2=1.39
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/tools/pvmove.c.diff?cvsroot=lvm2&r1=1.30&r2=1.31
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/tools/toollib.c.diff?cvsroot=lvm2&r1=1.85&r2=1.86
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/tools/toollib.h.diff?cvsroot=lvm2&r1=1.41&r2=1.42
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/tools/vgcfgrestore.c.diff?cvsroot=lvm2&r1=1.11&r2=1.12
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/tools/vgcreate.c.diff?cvsroot=lvm2&r1=1.46&r2=1.47
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/tools/vgextend.c.diff?cvsroot=lvm2&r1=1.25&r2=1.26
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/tools/vgmerge.c.diff?cvsroot=lvm2&r1=1.32&r2=1.33
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/tools/vgreduce.c.diff?cvsroot=lvm2&r1=1.50&r2=1.51
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/tools/vgrename.c.diff?cvsroot=lvm2&r1=1.39&r2=1.40

--- LVM2/WHATS_NEW	2006/08/24 12:45:04	1.431
+++ LVM2/WHATS_NEW	2006/08/25 23:02:33	1.432
@@ -1,11 +1,12 @@
 Version 2.02.10 - 
 ==================================
+  Add skip_dev_dir() to process command line VGs.
+  Stop clvmd complaining about nodes that have left the cluster.
   Move lvm_snprintf(), split_words() and split_dm_name() into libdevmapper.
   Add lvconvert man page.
   Add mirror options to man pages.
   Prevent mirror renames.
   Move CMDLIB code into separate file and record whether static build.
-  Stop clvmd complaining about nodes that have left the cluster
 
 Version 2.02.09 - 17th August 2006
 ==================================
--- LVM2/tools/lvcreate.c	2006/08/17 18:23:44	1.122
+++ LVM2/tools/lvcreate.c	2006/08/25 23:02:33	1.123
@@ -94,19 +94,7 @@
 			}
 
 		} else {
-			vg_name = argv[0];
-			/* Strip dev_dir (optional) */
-			if (*vg_name == '/') {
-				while (*vg_name == '/')
-					vg_name++;
-				vg_name--;
-			}
-			if (!strncmp(vg_name, cmd->dev_dir,
-				     strlen(cmd->dev_dir))) {
-				vg_name += strlen(cmd->dev_dir);
-				while (*vg_name == '/')
-					vg_name++;
-			}
+			vg_name = skip_dev_dir(cmd, argv[0]);
 			if (strrchr(vg_name, '/')) {
 				log_error("Volume group name expected "
 					  "(no slash)");
--- LVM2/tools/lvrename.c	2006/08/18 21:19:54	1.38
+++ LVM2/tools/lvrename.c	2006/08/25 23:02:33	1.39
@@ -29,9 +29,7 @@
 	struct lv_list *lvl;
 
 	if (argc == 3) {
-		vg_name = argv[0];
-		if (!strncmp(vg_name, cmd->dev_dir, strlen(cmd->dev_dir)))
-			vg_name += strlen(cmd->dev_dir);
+		vg_name = skip_dev_dir(cmd, argv[0]);
 		lv_name_old = argv[1];
 		lv_name_new = argv[2];
 		if (strchr(lv_name_old, '/') &&
--- LVM2/tools/pvmove.c	2006/05/09 21:23:51	1.30
+++ LVM2/tools/pvmove.c	2006/08/25 23:02:33	1.31
@@ -27,9 +27,7 @@
 	if (!strchr(arg, '/'))
 		return arg;
 
-	lvname = arg;
-	if (!strncmp(lvname, cmd->dev_dir, strlen(cmd->dev_dir)))
-		lvname += strlen(cmd->dev_dir);
+	lvname = skip_dev_dir(cmd, arg);
 	while (*lvname == '/')
 		lvname++;
 	if (!strchr(lvname, '/')) {
--- LVM2/tools/toollib.c	2006/08/21 12:54:53	1.85
+++ LVM2/tools/toollib.c	2006/08/25 23:02:33	1.86
@@ -81,6 +81,28 @@
 }
 
 /*
+ * Strip dev_dir if present
+ */
+char *skip_dev_dir(struct cmd_context *cmd, const char *vg_name)
+{
+	/* FIXME Do this properly */
+
+	if (*vg_name == '/') {
+		while (*vg_name == '/')
+			vg_name++;
+		vg_name--;
+	}
+
+	if (!strncmp(vg_name, cmd->dev_dir, strlen(cmd->dev_dir))) {
+		vg_name += strlen(cmd->dev_dir);
+		while (*vg_name == '/')
+			vg_name++;
+	}
+
+	return (char *) vg_name;
+}
+
+/*
  * Metadata iteration functions
  */
 int process_each_lv_in_vg(struct cmd_context *cmd, struct volume_group *vg,
@@ -450,7 +472,6 @@
 	struct list arg_vgnames, tags;
 
 	const char *vg_name, *vgid;
-	char *dev_dir = cmd->dev_dir;
 
 	list_init(&tags);
 	list_init(&arg_vgnames);
@@ -475,13 +496,7 @@
 				continue;
 			}
 
-			if (*vg_name == '/') {
-				while (*vg_name == '/')
-					vg_name++;
-				vg_name--;
-			}
-			if (!strncmp(vg_name, dev_dir, strlen(dev_dir)))
-				vg_name += strlen(dev_dir);
+			vg_name = skip_dev_dir(cmd, vg_name);
 			if (strchr(vg_name, '/')) {
 				log_error("Invalid volume group name: %s",
 					  vg_name);
@@ -768,21 +783,13 @@
 char *default_vgname(struct cmd_context *cmd)
 {
 	char *vg_path;
-	char *dev_dir = cmd->dev_dir;
 
 	/* Take default VG from environment? */
 	vg_path = getenv("LVM_VG_NAME");
 	if (!vg_path)
 		return 0;
 
-	/* Strip dev_dir (optional) */
-	if (*vg_path == '/') {
-		while (*vg_path == '/')
-			vg_path++;
-		vg_path--;
-	}
-	if (!strncmp(vg_path, dev_dir, strlen(dev_dir)))
-		vg_path += strlen(dev_dir);
+	vg_path = skip_dev_dir(cmd, vg_path);
 
 	if (strchr(vg_path, '/')) {
 		log_error("Environment Volume Group in LVM_VG_NAME invalid: "
--- LVM2/tools/toollib.h	2006/05/11 18:39:24	1.41
+++ LVM2/tools/toollib.h	2006/08/25 23:02:33	1.42
@@ -76,6 +76,7 @@
 
 char *default_vgname(struct cmd_context *cmd);
 const char *extract_vgname(struct cmd_context *cmd, const char *lv_name);
+char *skip_dev_dir(struct cmd_context *cmd, const char *vg_name);
 
 /*
  * Builds a list of pv's from the names in argv.  Used in
--- LVM2/tools/vgcfgrestore.c	2004/03/30 19:35:44	1.11
+++ LVM2/tools/vgcfgrestore.c	2006/08/25 23:02:33	1.12
@@ -24,10 +24,7 @@
 		return ECMD_FAILED;
 	}
 
-	vg_name = argv[0];
-
-	if (!strncmp(vg_name, cmd->dev_dir, strlen(cmd->dev_dir)))
-		vg_name += strlen(cmd->dev_dir);
+	vg_name = skip_dev_dir(cmd, argv[0]);
 
 	if (!validate_name(vg_name)) {
 		log_error("Volume group name \"%s\" is invalid", vg_name);
--- LVM2/tools/vgcreate.c	2006/05/09 21:23:51	1.46
+++ LVM2/tools/vgcreate.c	2006/08/25 23:02:33	1.47
@@ -38,7 +38,7 @@
 		return EINVALID_CMD_LINE;
 	}
 
-	vg_name = argv[0];
+	vg_name = skip_dev_dir(cmd, argv[0]);
 	max_lv = arg_uint_value(cmd, maxlogicalvolumes_ARG, 0);
 	max_pv = arg_uint_value(cmd, maxphysicalvolumes_ARG, 0);
 	alloc = arg_uint_value(cmd, alloc_ARG, ALLOC_NORMAL);
@@ -84,10 +84,6 @@
 		return EINVALID_CMD_LINE;
 	}
 
-	/* Strip dev_dir if present */
-	if (!strncmp(vg_name, cmd->dev_dir, strlen(cmd->dev_dir)))
-		vg_name += strlen(cmd->dev_dir);
-
 	if (!validate_vg_name(cmd, vg_name)) {
 		log_error("New volume group name \"%s\" is invalid", vg_name);
 		return ECMD_FAILED;
--- LVM2/tools/vgextend.c	2006/04/12 21:23:04	1.25
+++ LVM2/tools/vgextend.c	2006/08/25 23:02:33	1.26
@@ -32,7 +32,7 @@
 		return EINVALID_CMD_LINE;
 	}
 
-	vg_name = argv[0];
+	vg_name = skip_dev_dir(cmd, argv[0]);
 	argc--;
 	argv++;
 
--- LVM2/tools/vgmerge.c	2006/05/11 17:58:58	1.32
+++ LVM2/tools/vgmerge.c	2006/08/25 23:02:33	1.33
@@ -231,7 +231,7 @@
 
 int vgmerge(struct cmd_context *cmd, int argc, char **argv)
 {
-	char *vg_name_to;
+	char *vg_name_to, *vg_name_from;
 	int opt = 0;
 	int ret = 0, ret_max = 0;
 
@@ -240,12 +240,14 @@
 		return EINVALID_CMD_LINE;
 	}
 
-	vg_name_to = argv[0];
+	vg_name_to = skip_dev_dir(cmd, argv[0]);
 	argc--;
 	argv++;
 
 	for (; opt < argc; opt++) {
-		ret = _vgmerge_single(cmd, vg_name_to, argv[opt]);
+		vg_name_from = skip_dev_dir(cmd, argv[opt]);
+
+		ret = _vgmerge_single(cmd, vg_name_to, vg_name_from);
 		if (ret > ret_max)
 			ret_max = ret;
 	}
--- LVM2/tools/vgreduce.c	2006/07/04 19:52:47	1.50
+++ LVM2/tools/vgreduce.c	2006/08/25 23:02:33	1.51
@@ -459,7 +459,7 @@
 		return EINVALID_CMD_LINE;
 	}
 
-	vg_name = argv[0];
+	vg_name = skip_dev_dir(cmd, argv[0]);
 	argv++;
 	argc--;
 
--- LVM2/tools/vgrename.c	2006/05/09 21:23:51	1.39
+++ LVM2/tools/vgrename.c	2006/08/25 23:02:33	1.40
@@ -35,18 +35,12 @@
 		return EINVALID_CMD_LINE;
 	}
 
-	vg_name_old = argv[0];
-	vg_name_new = argv[1];
+	vg_name_old = skip_dev_dir(cmd, argv[0]);
+	vg_name_new = skip_dev_dir(cmd, argv[1]);
 
 	dev_dir = cmd->dev_dir;
 	length = strlen(dev_dir);
 
-	/* If present, strip dev_dir */
-	if (!strncmp(vg_name_old, dev_dir, length))
-		vg_name_old += length;
-	if (!strncmp(vg_name_new, dev_dir, length))
-		vg_name_new += length;
-
 	/* Check sanity of new name */
 	if (strlen(vg_name_new) > NAME_LEN - length - 2) {
 		log_error("New volume group path exceeds maximum length "


^ permalink raw reply	[flat|nested] 3+ messages in thread

* LVM2 ./WHATS_NEW tools/lvcreate.c tools/lvrena ...
@ 2009-06-26  9:19 agk
  0 siblings, 0 replies; 3+ messages in thread
From: agk @ 2009-06-26  9:19 UTC (permalink / raw)
  To: lvm-devel, lvm2-cvs

CVSROOT:	/cvs/lvm2
Module name:	LVM2
Changes by:	agk@sourceware.org	2009-06-26 09:19:13

Modified files:
	.              : WHATS_NEW 
	tools          : lvcreate.c lvrename.c lvresize.c pvchange.c 

Log message:
	Abort if automatic metadata correction fails when reading VG to update it.

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/WHATS_NEW.diff?cvsroot=lvm2&r1=1.1154&r2=1.1155
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/tools/lvcreate.c.diff?cvsroot=lvm2&r1=1.193&r2=1.194
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/tools/lvrename.c.diff?cvsroot=lvm2&r1=1.50&r2=1.51
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/tools/lvresize.c.diff?cvsroot=lvm2&r1=1.109&r2=1.110
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/tools/pvchange.c.diff?cvsroot=lvm2&r1=1.66&r2=1.67

--- LVM2/WHATS_NEW	2009/06/26 09:03:59	1.1154
+++ LVM2/WHATS_NEW	2009/06/26 09:19:13	1.1155
@@ -1,6 +1,6 @@
 Version 2.02.48 - 
 ===============================
-  Abort operation if automatic metadata correction in lvconvert fails.
+  Abort if automatic metadata correction fails when reading VG to update it.
   Explicitly request fallback to default major number in device mapper.
   Ignore suspended devices during repair.
   Call vgreduce --removemissing automatically to clean up bad PVs in dmeventd.
--- LVM2/tools/lvcreate.c	2009/06/06 22:06:54	1.193
+++ LVM2/tools/lvcreate.c	2009/06/26 09:19:13	1.194
@@ -996,7 +996,7 @@
 	log_verbose("Finding volume group \"%s\"", lp.vg_name);
 	if (!(vg = vg_lock_and_read(cmd, lp.vg_name, NULL, LCK_VG_WRITE,
 				    CLUSTERED | EXPORTED_VG | LVM_WRITE,
-				    CORRECT_INCONSISTENT)))
+				    CORRECT_INCONSISTENT | FAIL_INCONSISTENT)))
 		return ECMD_FAILED;
 
 	if (!_lvcreate(cmd, vg, &lp))
--- LVM2/tools/lvrename.c	2009/05/21 03:04:53	1.50
+++ LVM2/tools/lvrename.c	2009/06/26 09:19:13	1.51
@@ -104,7 +104,7 @@
 	log_verbose("Checking for existing volume group \"%s\"", vg_name);
 	if (!(vg = vg_lock_and_read(cmd, vg_name, NULL, LCK_VG_WRITE,
 				    CLUSTERED | EXPORTED_VG | LVM_WRITE,
-				    CORRECT_INCONSISTENT)))
+				    CORRECT_INCONSISTENT | FAIL_INCONSISTENT)))
 		return ECMD_FAILED;
 
 	if (!(lvl = find_lv_in_vg(vg, lv_name_old))) {
--- LVM2/tools/lvresize.c	2009/05/21 03:04:53	1.109
+++ LVM2/tools/lvresize.c	2009/06/26 09:19:13	1.110
@@ -673,7 +673,7 @@
 	log_verbose("Finding volume group %s", lp.vg_name);
 	if (!(vg = vg_lock_and_read(cmd, lp.vg_name, NULL, LCK_VG_WRITE,
 				    CLUSTERED | EXPORTED_VG | LVM_WRITE,
-				    CORRECT_INCONSISTENT))) {
+				    CORRECT_INCONSISTENT | FAIL_INCONSISTENT))) {
 		stack;
 		return ECMD_FAILED;
 	}
--- LVM2/tools/pvchange.c	2009/05/21 03:04:53	1.66
+++ LVM2/tools/pvchange.c	2009/06/26 09:19:13	1.67
@@ -59,7 +59,7 @@
 			    vg_name, pv_name);
 		if (!(vg = vg_lock_and_read(cmd, vg_name, NULL, LCK_VG_WRITE,
 					    CLUSTERED | EXPORTED_VG | LVM_WRITE,
-					    CORRECT_INCONSISTENT)))
+					    CORRECT_INCONSISTENT | FAIL_INCONSISTENT)))
 			return_0;
 
 		if (!(pvl = find_pv_in_vg(vg, pv_name))) {


^ permalink raw reply	[flat|nested] 3+ messages in thread

* LVM2 ./WHATS_NEW tools/lvcreate.c tools/lvrena ...
@ 2007-03-09 20:47 agk
  0 siblings, 0 replies; 3+ messages in thread
From: agk @ 2007-03-09 20:47 UTC (permalink / raw)
  To: lvm-devel, lvm2-cvs

CVSROOT:	/cvs/lvm2
Module name:	LVM2
Changes by:	agk@sourceware.org	2007-03-09 20:47:41

Modified files:
	.              : WHATS_NEW 
	tools          : lvcreate.c lvrename.c pvmove.c toollib.c 
	                 toollib.h vgcfgrestore.c vgcreate.c vgextend.c 
	                 vgmerge.c vgreduce.c vgrename.c 

Log message:
	Support the /dev/mapper prefix on most command lines.

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/WHATS_NEW.diff?cvsroot=lvm2&r1=1.582&r2=1.583
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/tools/lvcreate.c.diff?cvsroot=lvm2&r1=1.132&r2=1.133
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/tools/lvrename.c.diff?cvsroot=lvm2&r1=1.41&r2=1.42
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/tools/pvmove.c.diff?cvsroot=lvm2&r1=1.32&r2=1.33
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/tools/toollib.c.diff?cvsroot=lvm2&r1=1.96&r2=1.97
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/tools/toollib.h.diff?cvsroot=lvm2&r1=1.44&r2=1.45
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/tools/vgcfgrestore.c.diff?cvsroot=lvm2&r1=1.12&r2=1.13
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/tools/vgcreate.c.diff?cvsroot=lvm2&r1=1.47&r2=1.48
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/tools/vgextend.c.diff?cvsroot=lvm2&r1=1.27&r2=1.28
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/tools/vgmerge.c.diff?cvsroot=lvm2&r1=1.35&r2=1.36
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/tools/vgreduce.c.diff?cvsroot=lvm2&r1=1.56&r2=1.57
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/tools/vgrename.c.diff?cvsroot=lvm2&r1=1.42&r2=1.43

--- LVM2/WHATS_NEW	2007/03/08 21:37:48	1.582
+++ LVM2/WHATS_NEW	2007/03/09 20:47:41	1.583
@@ -1,5 +1,6 @@
 Version 2.02.24 -
 ====================================
+  Support the /dev/mapper prefix on most command lines.
 
 Version 2.02.23 - 8th March 2007
 ================================
--- LVM2/tools/lvcreate.c	2007/01/10 14:13:46	1.132
+++ LVM2/tools/lvcreate.c	2007/03/09 20:47:41	1.133
@@ -95,7 +95,7 @@
 			}
 
 		} else {
-			vg_name = skip_dev_dir(cmd, argv[0]);
+			vg_name = skip_dev_dir(cmd, argv[0], NULL);
 			if (strrchr(vg_name, '/')) {
 				log_error("Volume group name expected "
 					  "(no slash)");
--- LVM2/tools/lvrename.c	2007/01/12 20:38:30	1.41
+++ LVM2/tools/lvrename.c	2007/03/09 20:47:41	1.42
@@ -29,7 +29,7 @@
 	struct lv_list *lvl;
 
 	if (argc == 3) {
-		vg_name = skip_dev_dir(cmd, argv[0]);
+		vg_name = skip_dev_dir(cmd, argv[0], NULL);
 		lv_name_old = argv[1];
 		lv_name_new = argv[2];
 		if (strchr(lv_name_old, '/') &&
--- LVM2/tools/pvmove.c	2006/09/02 01:18:17	1.32
+++ LVM2/tools/pvmove.c	2007/03/09 20:47:41	1.33
@@ -27,7 +27,7 @@
 	if (!strchr(arg, '/'))
 		return arg;
 
-	lvname = skip_dev_dir(cmd, arg);
+	lvname = skip_dev_dir(cmd, arg, NULL);
 	while (*lvname == '/')
 		lvname++;
 	if (!strchr(lvname, '/')) {
--- LVM2/tools/toollib.c	2007/01/15 21:55:11	1.96
+++ LVM2/tools/toollib.c	2007/03/09 20:47:41	1.97
@@ -88,21 +88,53 @@
 /*
  * Strip dev_dir if present
  */
-char *skip_dev_dir(struct cmd_context *cmd, const char *vg_name)
+char *skip_dev_dir(struct cmd_context *cmd, const char *vg_name,
+		   unsigned *dev_dir_found)
 {
-	/* FIXME Do this properly */
+	const char *dmdir = dm_dir();
+	size_t dmdir_len = strlen(dmdir), vglv_sz;
+	char *vgname, *lvname, *layer, *vglv;
 
+	/* FIXME Do this properly */
 	if (*vg_name == '/') {
 		while (*vg_name == '/')
 			vg_name++;
 		vg_name--;
 	}
 
+	/* Reformat string if /dev/mapper found */
+	if (!strncmp(vg_name, dmdir, dmdir_len) && vg_name[dmdir_len] == '/') {
+		if (dev_dir_found)
+			*dev_dir_found = 1;
+		vg_name += dmdir_len;
+		while (*vg_name == '/')
+			vg_name++;
+
+		if (!dm_split_lvm_name(cmd->mem, vg_name, &vgname, &lvname, &layer) ||
+		    *layer) {
+			log_error("skip_dev_dir: Couldn't split up device name %s",
+				  vg_name);
+			return (char *) vg_name;
+		}
+		vglv_sz = strlen(vgname) + strlen(lvname) + 2;
+		if (!(vglv = dm_pool_alloc(cmd->mem, vglv_sz)) ||
+		    dm_snprintf(vglv, vglv_sz, "%s%s%s", vgname,
+				 *lvname ? "/" : "",
+				 lvname) < 0) {
+			log_error("vg/lv string alloc failed");
+			return (char *) vg_name;
+		}
+		return vglv;
+	}
+
 	if (!strncmp(vg_name, cmd->dev_dir, strlen(cmd->dev_dir))) {
+		if (dev_dir_found)
+			*dev_dir_found = 1;
 		vg_name += strlen(cmd->dev_dir);
 		while (*vg_name == '/')
 			vg_name++;
-	}
+	} else if (dev_dir_found)
+		*dev_dir_found = 0;
 
 	return (char *) vg_name;
 }
@@ -222,7 +254,7 @@
 		for (; opt < argc; opt++) {
 			const char *lv_name = argv[opt];
 			char *vgname_def;
-			int dev_dir_found = 0;
+			unsigned dev_dir_found = 0;
 
 			/* Do we have a tag or vgname or lvname? */
 			vgname = lv_name;
@@ -243,18 +275,8 @@
 			}
 
 			/* FIXME Jumbled parsing */
-			if (*vgname == '/') {
-				while (*vgname == '/')
-					vgname++;
-				vgname--;
-			}
-			if (!strncmp(vgname, cmd->dev_dir,
-				     strlen(cmd->dev_dir))) {
-				vgname += strlen(cmd->dev_dir);
-				dev_dir_found = 1;
-				while (*vgname == '/')
-					vgname++;
-			}
+			vgname = skip_dev_dir(cmd, vgname, &dev_dir_found);
+
 			if (*vgname == '/') {
 				log_error("\"%s\": Invalid path for Logical "
 					  "Volume", argv[opt]);
@@ -528,7 +550,7 @@
 				continue;
 			}
 
-			vg_name = skip_dev_dir(cmd, vg_name);
+			vg_name = skip_dev_dir(cmd, vg_name, NULL);
 			if (strchr(vg_name, '/')) {
 				log_error("Invalid volume group name: %s",
 					  vg_name);
@@ -830,7 +852,7 @@
 	if (!vg_path)
 		return 0;
 
-	vg_path = skip_dev_dir(cmd, vg_path);
+	vg_path = skip_dev_dir(cmd, vg_path, NULL);
 
 	if (strchr(vg_path, '/')) {
 		log_error("Environment Volume Group in LVM_VG_NAME invalid: "
--- LVM2/tools/toollib.h	2006/11/03 21:07:15	1.44
+++ LVM2/tools/toollib.h	2007/03/09 20:47:41	1.45
@@ -76,7 +76,8 @@
 
 char *default_vgname(struct cmd_context *cmd);
 const char *extract_vgname(struct cmd_context *cmd, const char *lv_name);
-char *skip_dev_dir(struct cmd_context *cmd, const char *vg_name);
+char *skip_dev_dir(struct cmd_context *cmd, const char *vg_name,
+		   unsigned *dev_dir_found);
 
 /*
  * Builds a list of pv's from the names in argv.  Used in
--- LVM2/tools/vgcfgrestore.c	2006/08/25 23:02:33	1.12
+++ LVM2/tools/vgcfgrestore.c	2007/03/09 20:47:41	1.13
@@ -24,7 +24,7 @@
 		return ECMD_FAILED;
 	}
 
-	vg_name = skip_dev_dir(cmd, argv[0]);
+	vg_name = skip_dev_dir(cmd, argv[0], NULL);
 
 	if (!validate_name(vg_name)) {
 		log_error("Volume group name \"%s\" is invalid", vg_name);
--- LVM2/tools/vgcreate.c	2006/08/25 23:02:33	1.47
+++ LVM2/tools/vgcreate.c	2007/03/09 20:47:41	1.48
@@ -38,7 +38,7 @@
 		return EINVALID_CMD_LINE;
 	}
 
-	vg_name = skip_dev_dir(cmd, argv[0]);
+	vg_name = skip_dev_dir(cmd, argv[0], NULL);
 	max_lv = arg_uint_value(cmd, maxlogicalvolumes_ARG, 0);
 	max_pv = arg_uint_value(cmd, maxphysicalvolumes_ARG, 0);
 	alloc = arg_uint_value(cmd, alloc_ARG, ALLOC_NORMAL);
--- LVM2/tools/vgextend.c	2006/09/02 01:18:17	1.27
+++ LVM2/tools/vgextend.c	2007/03/09 20:47:41	1.28
@@ -32,7 +32,7 @@
 		return EINVALID_CMD_LINE;
 	}
 
-	vg_name = skip_dev_dir(cmd, argv[0]);
+	vg_name = skip_dev_dir(cmd, argv[0], NULL);
 	argc--;
 	argv++;
 
--- LVM2/tools/vgmerge.c	2006/11/30 23:11:42	1.35
+++ LVM2/tools/vgmerge.c	2007/03/09 20:47:41	1.36
@@ -253,12 +253,12 @@
 		return EINVALID_CMD_LINE;
 	}
 
-	vg_name_to = skip_dev_dir(cmd, argv[0]);
+	vg_name_to = skip_dev_dir(cmd, argv[0], NULL);
 	argc--;
 	argv++;
 
 	for (; opt < argc; opt++) {
-		vg_name_from = skip_dev_dir(cmd, argv[opt]);
+		vg_name_from = skip_dev_dir(cmd, argv[opt], NULL);
 
 		ret = _vgmerge_single(cmd, vg_name_to, vg_name_from);
 		if (ret > ret_max)
--- LVM2/tools/vgreduce.c	2007/01/31 16:26:23	1.56
+++ LVM2/tools/vgreduce.c	2007/03/09 20:47:41	1.57
@@ -461,7 +461,7 @@
 		return EINVALID_CMD_LINE;
 	}
 
-	vg_name = skip_dev_dir(cmd, argv[0]);
+	vg_name = skip_dev_dir(cmd, argv[0], NULL);
 	argv++;
 	argc--;
 
--- LVM2/tools/vgrename.c	2007/03/08 21:08:25	1.42
+++ LVM2/tools/vgrename.c	2007/03/09 20:47:41	1.43
@@ -35,8 +35,8 @@
 		return EINVALID_CMD_LINE;
 	}
 
-	vg_name_old = skip_dev_dir(cmd, argv[0]);
-	vg_name_new = skip_dev_dir(cmd, argv[1]);
+	vg_name_old = skip_dev_dir(cmd, argv[0], NULL);
+	vg_name_new = skip_dev_dir(cmd, argv[1], NULL);
 
 	dev_dir = cmd->dev_dir;
 	length = strlen(dev_dir);


^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2009-06-26  9:19 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2006-08-25 23:02 LVM2 ./WHATS_NEW tools/lvcreate.c tools/lvrena agk
2007-03-09 20:47 agk
2009-06-26  9:19 agk

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).