public inbox for lvm2-cvs@sourceware.org
help / color / mirror / Atom feed
* LVM2 ./WHATS_NEW lib/activate/activate.c lib/m ...
@ 2011-06-13 22:28 agk
  0 siblings, 0 replies; 10+ messages in thread
From: agk @ 2011-06-13 22:28 UTC (permalink / raw)
  To: lvm-devel, lvm2-cvs

CVSROOT:	/cvs/lvm2
Module name:	LVM2
Changes by:	agk@sourceware.org	2011-06-13 22:28:05

Modified files:
	.              : WHATS_NEW 
	lib/activate   : activate.c 
	lib/metadata   : lv_manip.c 

Log message:
	Fix last snapshot removal to avoid table reload while a device is suspended.

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/WHATS_NEW.diff?cvsroot=lvm2&r1=1.2013&r2=1.2014
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/activate/activate.c.diff?cvsroot=lvm2&r1=1.197&r2=1.198
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/metadata/lv_manip.c.diff?cvsroot=lvm2&r1=1.261&r2=1.262

--- LVM2/WHATS_NEW	2011/06/13 03:32:45	1.2013
+++ LVM2/WHATS_NEW	2011/06/13 22:28:04	1.2014
@@ -1,5 +1,6 @@
 Version 2.02.86 -  
 =================================
+  Fix last snapshot removal to avoid table reload while a device is suspended.
   Use dm_get_suspended_counter in replacement critical_section logic.
   Downgrade critical_section errors to debug level until it is moved to libdm.
   Fix ignored background polling default in vgchange -ay.
--- LVM2/lib/activate/activate.c	2011/06/11 00:03:07	1.197
+++ LVM2/lib/activate/activate.c	2011/06/13 22:28:04	1.198
@@ -534,6 +534,8 @@
 	if (!activation())
 		return 0;
 
+	log_debug("Checking transient status for LV %s/%s", lv->vg->name, lv->name);
+
 	if (!(dm = dev_manager_create(lv->vg->cmd, lv->vg->name, 1)))
 		return_0;
 
@@ -556,6 +558,8 @@
 	if (!activation())
 		return 0;
 
+	log_debug("Checking snapshot percent for LV %s/%s", lv->vg->name, lv->name);
+
 	if (!(dm = dev_manager_create(lv->vg->cmd, lv->vg->name, 1)))
 		return_0;
 
@@ -585,6 +589,8 @@
 	if (!activation())
 		return 0;
 
+	log_debug("Checking mirror percent for LV %s/%s", lv->vg->name, lv->name);
+
 	if (!lv_info(cmd, lv, 0, &info, 0, 0))
 		return_0;
 
@@ -692,7 +698,7 @@
 
 /*
  * These two functions return the number of visible LVs in the state,
- * or -1 on error.
+ * or -1 on error.  FIXME Check this.
  */
 int lvs_in_vg_activated(struct volume_group *vg)
 {
@@ -702,10 +708,11 @@
 	if (!activation())
 		return 0;
 
-	dm_list_iterate_items(lvl, &vg->lvs) {
+	dm_list_iterate_items(lvl, &vg->lvs)
 		if (lv_is_visible(lvl->lv))
 			count += (_lv_active(vg->cmd, lvl->lv) == 1);
-	}
+
+	log_debug("Counted %d active LVs in VG %s", count, vg->name);
 
 	return count;
 }
@@ -718,10 +725,11 @@
 	if (!activation())
 		return 0;
 
-	dm_list_iterate_items(lvl, &vg->lvs) {
+	dm_list_iterate_items(lvl, &vg->lvs)
 		if (lv_is_visible(lvl->lv))
 			count += (_lv_open_count(vg->cmd, lvl->lv) > 0);
-	}
+
+	log_debug("Counted %d open LVs in VG %s", count, vg->name);
 
 	return count;
 }
@@ -822,12 +830,14 @@
 int lv_is_active_exclusive_locally(struct logical_volume *lv)
 {
 	int l, e;
+
 	return _lv_is_active(lv, &l, &e) && l && e;
 }
 
 int lv_is_active_exclusive_remotely(struct logical_volume *lv)
 {
 	int l, e;
+
 	return _lv_is_active(lv, &l, &e) && !l && e;
 }
 
@@ -1258,6 +1268,10 @@
 		goto out;
 	}
 
+	log_debug("Resuming LV %s/%s%s%s.", lv->vg->name, lv->name,
+		  error_if_not_active ? "" : " if active",
+		  origin_only ? " without snapshots" : "");
+
 	if (!lv_info(cmd, lv, origin_only, &info, 0, 0))
 		goto_out;
 
@@ -1347,6 +1361,8 @@
 		goto out;
 	}
 
+	log_debug("Deactivating %s/%s.", lv->vg->name, lv->name);
+
 	if (!lv_info(cmd, lv, 0, &info, 1, 0))
 		goto_out;
 
@@ -1454,6 +1470,8 @@
 		goto out;
 	}
 
+	log_debug("Activating %s/%s%s.", lv->vg->name, lv->name, exclusive ? " exclusively" : "");
+
 	if (!lv_info(cmd, lv, 0, &info, 0, 0))
 		goto_out;
 
--- LVM2/lib/metadata/lv_manip.c	2011/06/11 00:03:07	1.261
+++ LVM2/lib/metadata/lv_manip.c	2011/06/13 22:28:05	1.262
@@ -2677,6 +2677,7 @@
 	struct lvinfo info;
 	struct logical_volume *origin = NULL;
 	int was_merging = 0;
+	int reload_required = 0;
 
 	vg = lv->vg;
 
@@ -2738,6 +2739,7 @@
 			return_0;
 	}
 
+	/* FIXME Review and fix the snapshot error paths! */
 	if (!deactivate_lv(cmd, lv)) {
 		log_error("Unable to deactivate logical volume \"%s\"",
 			  lv->name);
@@ -2750,20 +2752,24 @@
 		return 0;
 	}
 
+	/* If no snapshots left, and was not merging, reload without -real. */
+	if (origin && (!lv_is_origin(origin) && !was_merging))
+		reload_required = 1;
+
 	/* store it on disks */
-	if (!vg_write(vg) || !vg_commit(vg))
+	if (!vg_write(vg))
 		return_0;
 
-	/* If no snapshots left, and was not merging, reload without -real. */
-	if (origin && (!lv_is_origin(origin) && !was_merging)) {
-		if (!suspend_lv(cmd, origin)) {
-			log_error("Failed to refresh %s without snapshot.", origin->name);
-			return 0;
-		}
-		if (!resume_lv(cmd, origin)) {
-			log_error("Failed to resume %s.", origin->name);
-			return 0;
-		}
+	if (reload_required && !suspend_lv(cmd, origin))
+		log_error("Failed to refresh %s without snapshot.", origin->name);
+		/* FIXME Falls through because first part of change already in kernel! */
+
+	if (!vg_commit(vg))
+		return_0;
+
+	if (reload_required && !resume_lv(cmd, origin)) {
+		log_error("Failed to resume %s.", origin->name);
+		return 0;
 	}
 
 	backup(vg);


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

* LVM2 ./WHATS_NEW lib/activate/activate.c lib/m ...
@ 2011-02-18 14:29 zkabelac
  0 siblings, 0 replies; 10+ messages in thread
From: zkabelac @ 2011-02-18 14:29 UTC (permalink / raw)
  To: lvm-devel, lvm2-cvs

CVSROOT:	/cvs/lvm2
Module name:	LVM2
Changes by:	zkabelac@sourceware.org	2011-02-18 14:29:42

Modified files:
	.              : WHATS_NEW 
	lib/activate   : activate.c 
	lib/mirror     : mirrored.c 
	lib/snapshot   : snapshot.c 

Log message:
	Fix !DEVMAPPER_SUPPORT build
	
	Fix build when devmapper is disabled.

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/WHATS_NEW.diff?cvsroot=lvm2&r1=1.1917&r2=1.1918
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/activate/activate.c.diff?cvsroot=lvm2&r1=1.194&r2=1.195
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/mirror/mirrored.c.diff?cvsroot=lvm2&r1=1.83&r2=1.84
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/snapshot/snapshot.c.diff?cvsroot=lvm2&r1=1.52&r2=1.53

--- LVM2/WHATS_NEW	2011/02/18 14:26:31	1.1917
+++ LVM2/WHATS_NEW	2011/02/18 14:29:39	1.1918
@@ -1,5 +1,6 @@
 Version 2.02.85 - 
 ===================================
+  Fix compilation when devmapper is dissabled.
   Remove fs_unlock() from lv_suspend error path.
   Change memory locking semantic and use critical sections.
   Add configurable pv_min_size to select block devices by its size.
--- LVM2/lib/activate/activate.c	2011/02/18 14:26:31	1.194
+++ LVM2/lib/activate/activate.c	2011/02/18 14:29:39	1.195
@@ -1,6 +1,6 @@
 /*
  * Copyright (C) 2001-2004 Sistina Software, Inc. All rights reserved.
- * Copyright (C) 2004-2009 Red Hat, Inc. All rights reserved.
+ * Copyright (C) 2004-2011 Red Hat, Inc. All rights reserved.
  *
  * This file is part of LVM2.
  *
@@ -171,7 +171,7 @@
 {
 	return 0;
 }
-int lvs_in_vg_opened(struct volume_group *vg)
+int lvs_in_vg_opened(const struct volume_group *vg)
 {
 	return 0;
 }
@@ -181,15 +181,16 @@
 	return 1;
 }
 *******/
-int lv_suspend_if_active(struct cmd_context *cmd, const char *lvid_s)
+int lv_suspend_if_active(struct cmd_context *cmd, const char *lvid_s, unsigned origin_only)
 {
 	return 1;
 }
-int lv_resume(struct cmd_context *cmd, const char *lvid_s)
+int lv_resume(struct cmd_context *cmd, const char *lvid_s, unsigned origin_only)
 {
 	return 1;
 }
-int lv_resume_if_active(struct cmd_context *cmd, const char *lvid_s)
+int lv_resume_if_active(struct cmd_context *cmd, const char *lvid_s,
+			unsigned origin_only, unsigned exclusive)
 {
 	return 1;
 }
@@ -210,28 +211,42 @@
 {
 	return 1;
 }
-
 int lv_mknodes(struct cmd_context *cmd, const struct logical_volume *lv)
 {
 	return 1;
 }
-
 int pv_uses_vg(struct physical_volume *pv,
 	       struct volume_group *vg)
 {
 	return 0;
 }
-
 void activation_release(void)
 {
-	return;
 }
-
 void activation_exit(void)
 {
-	return;
 }
-
+int lv_is_active(struct logical_volume *lv)
+{
+	return 0;
+}
+int lv_is_active_exclusive_locally(struct logical_volume *lv)
+{
+	return 0;
+}
+int lv_is_active_exclusive_remotely(struct logical_volume *lv)
+{
+	return 0;
+}
+int lv_check_transient(struct logical_volume *lv)
+{
+	return 1;
+}
+int monitor_dev_for_events(struct cmd_context *cmd, struct logical_volume *lv,
+			   unsigned origin_only, int monitor)
+{
+	return 1;
+}
 #else				/* DEVMAPPER_SUPPORT */
 
 static int _activation = 1;
--- LVM2/lib/mirror/mirrored.c	2011/01/05 12:27:56	1.83
+++ LVM2/lib/mirror/mirrored.c	2011/02/18 14:29:40	1.84
@@ -30,9 +30,6 @@
 
 #include <sys/utsname.h>
 
-static int _block_on_error_available = 0;
-static unsigned _mirror_attributes = 0;
-
 enum {
 	MIRR_DISABLED,
 	MIRR_RUNNING,
@@ -158,6 +155,9 @@
 }
 
 #ifdef DEVMAPPER_SUPPORT
+static int _block_on_error_available = 0;
+static unsigned _mirror_attributes = 0;
+
 static struct mirror_state *_mirrored_init_target(struct dm_pool *mem,
 					 struct cmd_context *cmd)
 {
@@ -641,10 +641,12 @@
 	segtype->private = NULL;
 	segtype->flags = SEG_AREAS_MIRRORED;
 
+#ifdef DEVMAPPER_SUPPORT
 #ifdef DMEVENTD
 	if (_get_mirror_dso_path(cmd))
 		segtype->flags |= SEG_MONITORED;
 #endif
+#endif
 
 	log_very_verbose("Initialised segtype: %s", segtype->name);
 
--- LVM2/lib/snapshot/snapshot.c	2010/12/20 13:32:50	1.52
+++ LVM2/lib/snapshot/snapshot.c	2011/02/18 14:29:41	1.53
@@ -260,10 +260,12 @@
 	segtype->private = NULL;
 	segtype->flags = SEG_SNAPSHOT;
 
+#ifdef DEVMAPPER_SUPPORT
 #ifdef DMEVENTD
 	if (_get_snapshot_dso_path(cmd))
 		segtype->flags |= SEG_MONITORED;
 #endif
+#endif
 	log_very_verbose("Initialised segtype: %s", segtype->name);
 
 	return segtype;


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

* LVM2 ./WHATS_NEW lib/activate/activate.c lib/m ...
@ 2011-01-13 14:51 zkabelac
  0 siblings, 0 replies; 10+ messages in thread
From: zkabelac @ 2011-01-13 14:51 UTC (permalink / raw)
  To: lvm-devel, lvm2-cvs

CVSROOT:	/cvs/lvm2
Module name:	LVM2
Changes by:	zkabelac@sourceware.org	2011-01-13 14:51:35

Modified files:
	.              : WHATS_NEW 
	lib/activate   : activate.c 
	lib/misc       : lvm-exec.c lvm-exec.h 
	tools          : lvresize.c 

Log message:
	Add exec_cmd paramater  sync_needed
	
	As sync_local_dev_names() cannot be called within activation context,
	add new parametr which allows to select if the sync call is needed
	before executing new command.

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/WHATS_NEW.diff?cvsroot=lvm2&r1=1.1878&r2=1.1879
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/activate/activate.c.diff?cvsroot=lvm2&r1=1.185&r2=1.186
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/misc/lvm-exec.c.diff?cvsroot=lvm2&r1=1.11&r2=1.12
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/misc/lvm-exec.h.diff?cvsroot=lvm2&r1=1.6&r2=1.7
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/tools/lvresize.c.diff?cvsroot=lvm2&r1=1.127&r2=1.128

--- LVM2/WHATS_NEW	2011/01/12 20:42:50	1.1878
+++ LVM2/WHATS_NEW	2011/01/13 14:51:32	1.1879
@@ -1,5 +1,6 @@
 Version 2.02.81 -
 ===================================
+  Extend exec_cmd params to specify, when device sync is needed.
   Replace fs_unlock by sync_local_dev_names to notify local clvmd. (2.02.80)
   Introduce sync_local_dev_names and CLVMD_CMD_SYNC_NAMES to issue fs_unlock.
   Accept fusion fio in device type filter.
--- LVM2/lib/activate/activate.c	2011/01/10 14:02:31	1.185
+++ LVM2/lib/activate/activate.c	2011/01/13 14:51:33	1.186
@@ -424,7 +424,7 @@
 	argv[1] = module;
 	argv[2] = NULL;
 
-	ret = exec_cmd(cmd, argv, NULL);
+	ret = exec_cmd(cmd, argv, NULL, 0);
 #endif
 	return ret;
 }
--- LVM2/lib/misc/lvm-exec.c	2011/01/12 20:42:51	1.11
+++ LVM2/lib/misc/lvm-exec.c	2011/01/13 14:51:33	1.12
@@ -1,6 +1,6 @@
 /*
  * Copyright (C) 2001-2004 Sistina Software, Inc. All rights reserved.
- * Copyright (C) 2004-2009 Red Hat, Inc. All rights reserved.
+ * Copyright (C) 2004-2011 Red Hat, Inc. All rights reserved.
  *
  * This file is part of LVM2.
  *
@@ -47,7 +47,8 @@
 /*
  * Execute and wait for external command
  */
-int exec_cmd(struct cmd_context *cmd, const char *const argv[], int *rstatus)
+int exec_cmd(struct cmd_context *cmd, const char *const argv[],
+	     int *rstatus, int sync_needed)
 {
 	pid_t pid;
 	int status;
@@ -55,7 +56,12 @@
 
 	log_verbose("Executing: %s", _verbose_args(argv, buf, sizeof(buf)));
 
-	sync_local_dev_names(cmd); /* Flush ops and reset dm cookie */
+	if (rstatus)
+		*rstatus = -1;
+
+	if (sync_needed)
+		if (!sync_local_dev_names(cmd)) /* Flush ops and reset dm cookie */
+			return_0;
 
 	if ((pid = fork()) == -1) {
 		log_error("fork failed: %s", strerror(errno));
@@ -74,9 +80,6 @@
 		_exit(errno);
 	}
 
-	if (rstatus)
-		*rstatus = -1;
-
 	/* Parent */
 	if (wait4(pid, &status, 0, NULL) != pid) {
 		log_error("wait4 child process %u failed: %s", pid,
--- LVM2/lib/misc/lvm-exec.h	2010/11/01 14:17:36	1.6
+++ LVM2/lib/misc/lvm-exec.h	2011/01/13 14:51:33	1.7
@@ -1,6 +1,6 @@
 /*
  * Copyright (C) 2001-2004 Sistina Software, Inc. All rights reserved.  
- * Copyright (C) 2004-2010 Red Hat, Inc. All rights reserved.
+ * Copyright (C) 2004-2011 Red Hat, Inc. All rights reserved.
  *
  * This file is part of LVM2.
  *
@@ -19,6 +19,22 @@
 #include "lib.h"
 
 struct cmd_context;
-int exec_cmd(struct cmd_context *cmd, const char *const argv[], int *rstatus);
+
+/**
+ * Execute command with paramaters and return status
+ *
+ * \param rstatus
+ * Returns command's exit status code.
+ *
+ * \param sync_needed
+ * Bool specifying whether local devices needs to be synchronized
+ * before executing command.
+ * Note: You cannot synchronize devices within activation context.
+ *
+ * \return
+ * 0 (success) or -1 (failure).
+ */
+int exec_cmd(struct cmd_context *cmd, const char *const argv[],
+	     int *rstatus, int sync_needed);
 
 #endif
--- LVM2/tools/lvresize.c	2010/12/08 20:50:51	1.127
+++ LVM2/tools/lvresize.c	2011/01/13 14:51:34	1.128
@@ -179,7 +179,7 @@
 
 	argv[i] = NULL;
 
-	return exec_cmd(cmd, argv, status);
+	return exec_cmd(cmd, argv, status, 1);
 }
 
 static int _lvresize_params(struct cmd_context *cmd, int argc, char **argv,


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

* LVM2 ./WHATS_NEW lib/activate/activate.c lib/m ...
@ 2010-11-05 18:18 prajnoha
  0 siblings, 0 replies; 10+ messages in thread
From: prajnoha @ 2010-11-05 18:18 UTC (permalink / raw)
  To: lvm-devel, lvm2-cvs

CVSROOT:	/cvs/lvm2
Module name:	LVM2
Changes by:	prajnoha@sourceware.org	2010-11-05 18:18:12

Modified files:
	.              : WHATS_NEW 
	lib/activate   : activate.c 
	lib/metadata   : lv_manip.c 

Log message:
	Clarify error messages when activation fails due to activation filter use.

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/WHATS_NEW.diff?cvsroot=lvm2&r1=1.1788&r2=1.1789
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/activate/activate.c.diff?cvsroot=lvm2&r1=1.178&r2=1.179
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/metadata/lv_manip.c.diff?cvsroot=lvm2&r1=1.234&r2=1.235

--- LVM2/WHATS_NEW	2010/11/05 16:18:38	1.1788
+++ LVM2/WHATS_NEW	2010/11/05 18:18:11	1.1789
@@ -1,5 +1,6 @@
 Version 2.02.76 - 
 ===================================
+  Clarify error messages when activation fails due to activation filter use.
   Add initial script VolumeGroup.ocf for pacemaker support.
   Fix regex optimiser not to ignore RHS of OR nodes in _find_leftmost_common.
   Fix handling of online filesystem resize (using new fsadm return code).
--- LVM2/lib/activate/activate.c	2010/11/01 14:17:35	1.178
+++ LVM2/lib/activate/activate.c	2010/11/05 18:18:12	1.179
@@ -285,12 +285,12 @@
 		/* Don't activate */
 		return 0;
 	}
-
-	for (cv = cn->v; cv; cv = cv->next) {
+	else
 		log_verbose("activation/volume_list configuration setting "
 			    "defined, checking the list to match %s/%s",
 			    lv->vg->name, lv->name);
 
+	for (cv = cn->v; cv; cv = cv->next) {
 		if (cv->type != CFG_STRING) {
 			log_error("Ignoring invalid string in config file "
 				  "activation/volume_list");
@@ -303,6 +303,7 @@
 			continue;
 		}
 
+
 		/* Tag? */
 		if (*str == '@') {
 			str++;
@@ -1239,8 +1240,8 @@
 		goto out;
 
 	if (!_passes_activation_filter(cmd, lv)) {
-		log_verbose("Not activating %s/%s due to config file settings",
-			    lv->vg->name, lv->name);
+		log_verbose("Not activating %s/%s since it does not pass "
+			    "activation filter.", lv->vg->name, lv->name);
 		*activate_lv = 0;
 	} else
 		*activate_lv = 1;
@@ -1266,8 +1267,8 @@
 		goto out;
 
 	if (filter && !_passes_activation_filter(cmd, lv)) {
-		log_verbose("Not activating %s/%s due to config file settings",
-			    lv->vg->name, lv->name);
+		log_error("Not activating %s/%s since it does not pass "
+			  "activation filter.", lv->vg->name, lv->name);
 		goto out;
 	}
 
--- LVM2/lib/metadata/lv_manip.c	2010/10/14 20:03:12	1.234
+++ LVM2/lib/metadata/lv_manip.c	2010/11/05 18:18:12	1.235
@@ -3240,12 +3240,9 @@
 			goto revert_new_lv;
 		}
 	} else if (!activate_lv(cmd, lv)) {
-		if (lp->zero) {
-			log_error("Aborting. Failed to activate new LV to wipe "
-				  "the start of it.");
-			goto deactivate_and_revert_new_lv;
-		}
 		log_error("Failed to activate new LV.");
+		if (lp->zero)
+			goto deactivate_and_revert_new_lv;
 		return 0;
 	}
 


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

* LVM2 ./WHATS_NEW lib/activate/activate.c lib/m ...
@ 2010-11-01 14:17 zkabelac
  0 siblings, 0 replies; 10+ messages in thread
From: zkabelac @ 2010-11-01 14:17 UTC (permalink / raw)
  To: lvm-devel, lvm2-cvs

CVSROOT:	/cvs/lvm2
Module name:	LVM2
Changes by:	zkabelac@sourceware.org	2010-11-01 14:17:36

Modified files:
	.              : WHATS_NEW 
	lib/activate   : activate.c 
	lib/misc       : lvm-exec.c lvm-exec.h 
	tools          : lvresize.c 

Log message:
	Use new status code from fsadm check
	
	Patch updates exec_cmd() and adds 3rd parameter with pointer for
	status value, so caller might examine returned status code.
	If the passed pointer is NULL, behavior is unmodified.
	
	Patch allows to confinue with lvresize if the failure from fsadm check is
	caused by mounted filesystem as many of filesystem resize tools do support
	online filesystem resize. (originally user had to use flag '-n' to bypass
	this filesystem check)

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/WHATS_NEW.diff?cvsroot=lvm2&r1=1.1785&r2=1.1786
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/activate/activate.c.diff?cvsroot=lvm2&r1=1.177&r2=1.178
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/misc/lvm-exec.c.diff?cvsroot=lvm2&r1=1.7&r2=1.8
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/misc/lvm-exec.h.diff?cvsroot=lvm2&r1=1.5&r2=1.6
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/tools/lvresize.c.diff?cvsroot=lvm2&r1=1.124&r2=1.125

--- LVM2/WHATS_NEW	2010/11/01 14:10:46	1.1785
+++ LVM2/WHATS_NEW	2010/11/01 14:17:35	1.1786
@@ -1,5 +1,6 @@
 Version 2.02.76 - 
 ===================================
+  Fix handling of online filesystem resize (using new fsadm return code).
   Add DIAGNOSTICS section to fsadm man page.
   Modify fsadm to return different status code for check of mounted filesystem.
   Update VG metadata only once in vgchange when making multiple changes.
--- LVM2/lib/activate/activate.c	2010/08/17 16:25:32	1.177
+++ LVM2/lib/activate/activate.c	2010/11/01 14:17:35	1.178
@@ -425,7 +425,7 @@
 	argv[1] = module;
 	argv[2] = NULL;
 
-	ret = exec_cmd(cmd, argv);
+	ret = exec_cmd(cmd, argv, NULL);
 #endif
 	return ret;
 }
--- LVM2/lib/misc/lvm-exec.c	2009/07/13 21:26:41	1.7
+++ LVM2/lib/misc/lvm-exec.c	2010/11/01 14:17:36	1.8
@@ -46,7 +46,7 @@
 /*
  * Execute and wait for external command
  */
-int exec_cmd(struct cmd_context *cmd, const char *const argv[])
+int exec_cmd(struct cmd_context *cmd, const char *const argv[], int *rstatus)
 {
 	pid_t pid;
 	int status;
@@ -71,6 +71,9 @@
 		_exit(errno);
 	}
 
+	if (rstatus)
+		*rstatus = -1;
+
 	/* Parent */
 	if (wait4(pid, &status, 0, NULL) != pid) {
 		log_error("wait4 child process %u failed: %s", pid,
@@ -84,9 +87,16 @@
 	}
 
 	if (WEXITSTATUS(status)) {
-		log_error("%s failed: %u", argv[0], WEXITSTATUS(status));
+		if (rstatus) {
+			*rstatus = WEXITSTATUS(status);
+			log_verbose("%s failed: %u", argv[0], *rstatus);
+		} else
+			log_error("%s failed: %u", argv[0], WEXITSTATUS(status));
 		return 0;
 	}
 
+	if (rstatus)
+		*rstatus = 0;
+
 	return 1;
 }
--- LVM2/lib/misc/lvm-exec.h	2009/02/28 00:54:06	1.5
+++ LVM2/lib/misc/lvm-exec.h	2010/11/01 14:17:36	1.6
@@ -1,6 +1,6 @@
 /*
  * Copyright (C) 2001-2004 Sistina Software, Inc. All rights reserved.  
- * Copyright (C) 2004-2006 Red Hat, Inc. All rights reserved.
+ * Copyright (C) 2004-2010 Red Hat, Inc. All rights reserved.
  *
  * This file is part of LVM2.
  *
@@ -19,6 +19,6 @@
 #include "lib.h"
 
 struct cmd_context;
-int exec_cmd(struct cmd_context *cmd, const char *const argv[]);
+int exec_cmd(struct cmd_context *cmd, const char *const argv[], int *rstatus);
 
 #endif
--- LVM2/tools/lvresize.c	2010/10/15 16:28:16	1.124
+++ LVM2/tools/lvresize.c	2010/11/01 14:17:36	1.125
@@ -129,6 +129,7 @@
 enum fsadm_cmd_e { FSADM_CMD_CHECK, FSADM_CMD_RESIZE };
 #define FSADM_CMD "fsadm"
 #define FSADM_CMD_MAX_ARGS 6
+#define FSADM_CHECK_FAILS_FOR_MOUNTED 3 /* shell exist status code */
 
 /*
  * FSADM_CMD --dry-run --verbose --force check lv_path
@@ -137,7 +138,8 @@
 static int _fsadm_cmd(struct cmd_context *cmd,
 		      const struct volume_group *vg,
 		      const struct lvresize_params *lp,
-		      enum fsadm_cmd_e fcmd)
+		      enum fsadm_cmd_e fcmd,
+		      int *status)
 {
 	char lv_path[PATH_MAX];
 	char size_buf[SIZE_BUF];
@@ -177,7 +179,7 @@
 
 	argv[i] = NULL;
 
-	return exec_cmd(cmd, argv);
+	return exec_cmd(cmd, argv, status);
 }
 
 static int _lvresize_params(struct cmd_context *cmd, int argc, char **argv,
@@ -321,6 +323,7 @@
 	struct lv_segment *seg, *uninitialized_var(mirr_seg);
 	uint32_t seg_extents;
 	uint32_t sz, str;
+	int status;
 	struct dm_list *pvh = NULL;
 	int use_policy = arg_count(cmd, use_policies_ARG);
 
@@ -637,13 +640,16 @@
 
 	if (lp->resizefs) {
 		if (!lp->nofsck &&
-		    !_fsadm_cmd(cmd, vg, lp, FSADM_CMD_CHECK)) {
-			stack;
-			return ECMD_FAILED;
+		    !_fsadm_cmd(cmd, vg, lp, FSADM_CMD_CHECK, &status)) {
+			if (status != FSADM_CHECK_FAILS_FOR_MOUNTED) {
+				stack;
+				return ECMD_FAILED;
+			}
+                        /* some filesystems supports online resize */
 		}
 
 		if ((lp->resize == LV_REDUCE) &&
-		    !_fsadm_cmd(cmd, vg, lp, FSADM_CMD_RESIZE)) {
+		    !_fsadm_cmd(cmd, vg, lp, FSADM_CMD_RESIZE, NULL)) {
 			stack;
 			return ECMD_FAILED;
 		}
@@ -711,7 +717,7 @@
 	log_print("Logical volume %s successfully resized", lp->lv_name);
 
 	if (lp->resizefs && (lp->resize == LV_EXTEND) &&
-	    !_fsadm_cmd(cmd, vg, lp, FSADM_CMD_RESIZE)) {
+	    !_fsadm_cmd(cmd, vg, lp, FSADM_CMD_RESIZE, NULL)) {
 		stack;
 		return ECMD_FAILED;
 	}


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

* LVM2 ./WHATS_NEW lib/activate/activate.c lib/m ...
@ 2009-05-13 21:26 mbroz
  0 siblings, 0 replies; 10+ messages in thread
From: mbroz @ 2009-05-13 21:26 UTC (permalink / raw)
  To: lvm-devel, lvm2-cvs

CVSROOT:	/cvs/lvm2
Module name:	LVM2
Changes by:	mbroz@sourceware.org	2009-05-13 21:26:45

Modified files:
	.              : WHATS_NEW 
	lib/activate   : activate.c 
	lib/metadata   : lv_manip.c metadata-exported.h mirror.c 
	                 snapshot_manip.c 

Log message:
	Introduce lv_set_visible & lv_set_invisible and use lv_is_visible always.
	
	The vg->lv_count parameter now includes always number of visible
	logical volumes.
	
	Note that virtual snapshot volume (snapshotX) is never visible,
	but it is stored in metadata with visible flag.

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/WHATS_NEW.diff?cvsroot=lvm2&r1=1.1107&r2=1.1108
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/activate/activate.c.diff?cvsroot=lvm2&r1=1.145&r2=1.146
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/metadata/lv_manip.c.diff?cvsroot=lvm2&r1=1.168&r2=1.169
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/metadata/metadata-exported.h.diff?cvsroot=lvm2&r1=1.69&r2=1.70
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/metadata/mirror.c.diff?cvsroot=lvm2&r1=1.85&r2=1.86
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/metadata/snapshot_manip.c.diff?cvsroot=lvm2&r1=1.39&r2=1.40

--- LVM2/WHATS_NEW	2009/05/13 21:25:45	1.1107
+++ LVM2/WHATS_NEW	2009/05/13 21:26:45	1.1108
@@ -1,5 +1,6 @@
 Version 2.02.46 - 
 ================================
+  Introduce lv_set_visible & lv_set_invisible functions.
   Fix lv_is_visible to handle virtual origin.
   Introduce link_lv_to_vg and unlink_lv_from_vg functions.
   Remove lv_count from VG and use counter function instead.
--- LVM2/lib/activate/activate.c	2009/04/10 10:00:04	1.145
+++ LVM2/lib/activate/activate.c	2009/05/13 21:26:45	1.146
@@ -647,7 +647,7 @@
 		return 0;
 
 	dm_list_iterate_items(lvl, &vg->lvs) {
-		if (lvl->lv->status & VISIBLE_LV)
+		if (lv_is_visible(lvl->lv))
 			count += (_lv_active(vg->cmd, lvl->lv, by_uuid_only) == 1);
 	}
 
@@ -996,7 +996,7 @@
 		goto out;
 	}
 
-	if (info.open_count && (lv->status & VISIBLE_LV)) {
+	if (info.open_count && lv_is_visible(lv)) {
 		log_error("LV %s/%s in use: not deactivating", lv->vg->name,
 			  lv->name);
 		goto out;
--- LVM2/lib/metadata/lv_manip.c	2009/05/13 21:25:02	1.168
+++ LVM2/lib/metadata/lv_manip.c	2009/05/13 21:26:45	1.169
@@ -1503,7 +1503,7 @@
 		if (!set_lv_segment_area_lv(seg, m, sub_lvs[m - old_area_count],
 					    0, status))
 			return_0;
-		sub_lvs[m - old_area_count]->status &= ~VISIBLE_LV;
+		lv_set_invisible(sub_lvs[m - old_area_count]);
 	}
 
 	lv->status |= MIRRORED;
@@ -1960,6 +1960,26 @@
 	return 1;
 }
 
+void lv_set_visible(struct logical_volume *lv)
+{
+	if (lv_is_visible(lv))
+		return;
+
+	lv->status |= VISIBLE_LV;
+
+	log_debug("LV %s in VG %s is now visible.",  lv->name, lv->vg->name);
+}
+
+void lv_set_invisible(struct logical_volume *lv)
+{
+	if (!lv_is_visible(lv))
+		return;
+
+	lv->status &= ~VISIBLE_LV;
+
+	log_debug("LV %s in VG %s is now invisible.",  lv->name, lv->vg->name);
+}
+
 int lv_remove_single(struct cmd_context *cmd, struct logical_volume *lv,
 		     const force_t force)
 {
--- LVM2/lib/metadata/metadata-exported.h	2009/05/13 21:25:02	1.69
+++ LVM2/lib/metadata/metadata-exported.h	2009/05/13 21:26:45	1.70
@@ -373,6 +373,8 @@
  */
 int link_lv_to_vg(struct volume_group *vg, struct logical_volume *lv);
 int unlink_lv_from_vg(struct logical_volume *lv);
+void lv_set_visible(struct logical_volume *lv);
+void lv_set_invisible(struct logical_volume *lv);
 
 /* Set full_scan to 1 to re-read every (filtered) device label */
 struct dm_list *get_vgnames(struct cmd_context *cmd, int full_scan);
--- LVM2/lib/metadata/mirror.c	2009/04/23 16:43:01	1.85
+++ LVM2/lib/metadata/mirror.c	2009/05/13 21:26:45	1.86
@@ -260,7 +260,7 @@
 	}
 
 	/* Temporary make it visible for set_lv() */
-	log_lv->status |= VISIBLE_LV;
+	lv_set_visible(log_lv);
 
 	/* Temporary tag mirror log for activation */
 	dm_list_iterate_items(sl, tags)
@@ -303,7 +303,7 @@
 		return 0;
 	}
 
-	log_lv->status &= ~VISIBLE_LV;
+	lv_set_invisible(log_lv);
 
 	if (was_active && !activate_lv(cmd, log_lv))
 		return_0;
@@ -410,7 +410,7 @@
 
 	log_lv = mirrored_seg->log_lv;
 	mirrored_seg->log_lv = NULL;
-	log_lv->status |= VISIBLE_LV;
+	lv_set_visible(log_lv);
 	log_lv->status &= ~MIRROR_LOG;
 	remove_seg_from_segs_using_this_lv(log_lv, mirrored_seg);
 
@@ -536,7 +536,7 @@
 	dm_list_init(&tmp_orphan_lvs);
 	for (m = new_area_count; m < mirrored_seg->area_count; m++) {
 		seg_lv(mirrored_seg, m)->status &= ~MIRROR_IMAGE;
-		seg_lv(mirrored_seg, m)->status |= VISIBLE_LV;
+		lv_set_visible(seg_lv(mirrored_seg, m));
 		if (!(lvl = dm_pool_alloc(lv->vg->cmd->mem, sizeof(*lvl)))) {
 			log_error("lv_list alloc failed");
 			return 0;
@@ -554,7 +554,7 @@
 	if (new_area_count == 1 && !is_temporary_mirror_layer(lv)) {
 		lv1 = seg_lv(mirrored_seg, 0);
 		lv1->status &= ~MIRROR_IMAGE;
-		lv1->status |= VISIBLE_LV;
+		lv_set_visible(lv1);
 		detached_log_lv = detach_mirror_log(mirrored_seg);
 		if (!remove_layer_from_lv(lv, lv1))
 			return_0;
@@ -1340,7 +1340,7 @@
 {
 	seg->log_lv = log_lv;
 	log_lv->status |= MIRROR_LOG;
-	log_lv->status &= ~VISIBLE_LV;
+	lv_set_invisible(log_lv);
 	return add_seg_to_segs_using_this_lv(log_lv, seg);
 }
 
--- LVM2/lib/metadata/snapshot_manip.c	2009/05/13 21:25:46	1.39
+++ LVM2/lib/metadata/snapshot_manip.c	2009/05/13 21:26:45	1.40
@@ -76,7 +76,8 @@
 	seg->origin = origin;
 	seg->cow = cow;
 
-	cow->status &= ~VISIBLE_LV;
+	lv_set_invisible(cow);
+
 	cow->snapshot = seg;
 
 	origin->origin_count++;
@@ -137,7 +138,7 @@
 	}
 
 	cow->snapshot = NULL;
-	cow->status |= VISIBLE_LV;
+	lv_set_visible(cow);
 
 	return 1;
 }


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

* LVM2 ./WHATS_NEW lib/activate/activate.c lib/m ...
@ 2008-01-17 17:17 agk
  0 siblings, 0 replies; 10+ messages in thread
From: agk @ 2008-01-17 17:17 UTC (permalink / raw)
  To: lvm-devel, lvm2-cvs

CVSROOT:	/cvs/lvm2
Module name:	LVM2
Changes by:	agk@sourceware.org	2008-01-17 17:17:09

Modified files:
	.              : WHATS_NEW 
	lib/activate   : activate.c 
	lib/metadata   : lv_manip.c metadata-exported.h metadata.c 
	                 mirror.c 
	lib/mirror     : mirrored.c 
	tools          : toollib.c 

Log message:
	pre-release review cleanups

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/WHATS_NEW.diff?cvsroot=lvm2&r1=1.766&r2=1.767
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/activate/activate.c.diff?cvsroot=lvm2&r1=1.130&r2=1.131
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/metadata/lv_manip.c.diff?cvsroot=lvm2&r1=1.144&r2=1.145
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/metadata/metadata-exported.h.diff?cvsroot=lvm2&r1=1.39&r2=1.40
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/metadata/metadata.c.diff?cvsroot=lvm2&r1=1.151&r2=1.152
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/metadata/mirror.c.diff?cvsroot=lvm2&r1=1.62&r2=1.63
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/mirror/mirrored.c.diff?cvsroot=lvm2&r1=1.48&r2=1.49
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/tools/toollib.c.diff?cvsroot=lvm2&r1=1.127&r2=1.128

--- LVM2/WHATS_NEW	2008/01/17 15:53:01	1.766
+++ LVM2/WHATS_NEW	2008/01/17 17:17:08	1.767
@@ -1,5 +1,6 @@
 Version 2.02.30 - 17th January 2008
 ===================================
+  Set default readahead to twice maximium stripe size.
   Reinstate VG extent size and stripe size defaults (halved). (2.02.29)
   Add lists of stacked LV segments using each LV to the internal metadata.
   Change vgsplit -l (for unimplemented --list) into --maxlogicalvolumes.
--- LVM2/lib/activate/activate.c	2008/01/16 19:18:50	1.130
+++ LVM2/lib/activate/activate.c	2008/01/17 17:17:08	1.131
@@ -706,10 +706,9 @@
 	 */
 	if (lv_is_origin(lv)) {
 		list_iterate_safe(snh, snht, &lv->snapshot_segs)
-			if (!monitor_dev_for_events(
-				cmd, list_struct_base(snh,
-					struct lv_segment, origin_list)->cow, monitor))
-				r=0;
+			if (!monitor_dev_for_events(cmd, list_struct_base(snh,
+				    struct lv_segment, origin_list)->cow, monitor))
+				r = 0;
 		return r;
 	}
 
--- LVM2/lib/metadata/lv_manip.c	2008/01/17 13:54:05	1.144
+++ LVM2/lib/metadata/lv_manip.c	2008/01/17 17:17:09	1.145
@@ -31,7 +31,8 @@
 	const char *new;
 };
 
-int add_seg_to_segs_using_this_lv(struct logical_volume *lv, struct lv_segment *seg)
+int add_seg_to_segs_using_this_lv(struct logical_volume *lv,
+				  struct lv_segment *seg)
 {
 	struct seg_list *sl;
 
@@ -54,7 +55,8 @@
 	return 1;
 }
 
-int remove_seg_from_segs_using_this_lv(struct logical_volume *lv, struct lv_segment *seg)
+int remove_seg_from_segs_using_this_lv(struct logical_volume *lv,
+				       struct lv_segment *seg)
 {
 	struct seg_list *sl;
 
@@ -1429,7 +1431,7 @@
 
 		if (!seg_is_mirrored(seg) &&
 		    (!(seg = _convert_seg_to_mirror(seg, region_size, NULL))))
-				return_0;
+			return_0;
 
 		old_area_count = seg->area_count;
 		new_area_count = old_area_count + ah->area_count;
@@ -1530,20 +1532,16 @@
 		return 0;
 	}
 
-	if (!set_lv_segment_area_pv(seg, 0, ah->log_area.pv, ah->log_area.pe)) {
-		stack;
-		return 0;
-	}
+	if (!set_lv_segment_area_pv(seg, 0, ah->log_area.pv, ah->log_area.pe))
+		return_0;
 
 	list_add(&log_lv->segments, &seg->list);
 	log_lv->le_count += ah->log_area.len;
-	log_lv->size += (uint64_t) log_lv->le_count *log_lv->vg->extent_size;
+	log_lv->size += (uint64_t) log_lv->le_count * log_lv->vg->extent_size;
 
 	if (log_lv->vg->fid->fmt->ops->lv_setup &&
-	    !log_lv->vg->fid->fmt->ops->lv_setup(log_lv->vg->fid, log_lv)) {
-		stack;
-		return 0;
-	}
+	    !log_lv->vg->fid->fmt->ops->lv_setup(log_lv->vg->fid, log_lv))
+		return_0;
 
 	return 1;
 }
@@ -1668,7 +1666,7 @@
 	}
 	suffix = lv->name + len;
 
- 	/*
+	/*
 	 * Compose a new name for sub lv:
 	 *   e.g. new name is "lvol1_mlog"
 	 *        if the sub LV is "lvol0_mlog" and
@@ -2025,9 +2023,9 @@
 			 if (yes_no_prompt("Do you really want to remove active "
 					   "logical volume \"%s\"? [y/n]: ",
 					   lv->name) == 'n') {
-				 log_print("Logical volume \"%s\" not removed",
+				log_print("Logical volume \"%s\" not removed",
 					  lv->name);
-				 return 0;
+				return 0;
 			 }
 		}
 	}
@@ -2264,7 +2262,7 @@
 
 		if (!remove_layers_for_segments(cmd, lv1, layer_lv,
 						status_mask, lvs_changed))
-			return 0;
+			return_0;
 	}
 
 	if (!lv_empty(layer_lv))
@@ -2627,7 +2625,7 @@
 	}
 
 	if (dm_snprintf(name, PATH_MAX, "%s%s/%s", cmd->dev_dir,
-			 lv->vg->name, lv->name) < 0) {
+			lv->vg->name, lv->name) < 0) {
 		log_error("Name too long - device not cleared (%s)", lv->name);
 		return 0;
 	}
@@ -2640,7 +2638,7 @@
 	}
 
 	if (!dev_open_quiet(dev))
-		return 0;
+		return_0;
 
 	dev_set(dev, UINT64_C(0),
 		sectors ? (size_t) sectors << SECTOR_SHIFT : (size_t) 4096,
@@ -2650,5 +2648,3 @@
 
 	return 1;
 }
-
-
--- LVM2/lib/metadata/metadata-exported.h	2008/01/17 13:54:05	1.39
+++ LVM2/lib/metadata/metadata-exported.h	2008/01/17 17:17:09	1.40
@@ -94,7 +94,7 @@
 
 /* Mirror conversion type flags */
 #define MIRROR_BY_SEG		0x00000001U	/* segment-by-segment mirror */
-#define MIRROR_BY_LV		0x00000002U	/* mirror by mimage LVs */
+#define MIRROR_BY_LV		0x00000002U	/* mirror using whole mimage LVs */
 
 /* Ordered list - see lv_manip.c */
 typedef enum {
--- LVM2/lib/metadata/metadata.c	2008/01/16 22:52:46	1.151
+++ LVM2/lib/metadata/metadata.c	2008/01/17 17:17:09	1.152
@@ -233,7 +233,7 @@
 	char vg_path[PATH_MAX];
 
 	if (!validate_name(vg_name))
-		return 0;
+		return_0;
 
 	snprintf(vg_path, PATH_MAX, "%s%s", cmd->dev_dir, vg_name);
 	if (path_exists(vg_path)) {
@@ -244,7 +244,6 @@
 	return 1;
 }
 
-
 int validate_vg_rename_params(struct cmd_context *cmd,
 			      const char *vg_name_old,
 			      const char *vg_name_new)
@@ -1084,7 +1083,6 @@
 	return 1;
 }
 
-
 /*
  * Determine whether two vgs are compatible for merging.
  */
@@ -1094,11 +1092,12 @@
 {
 	struct lv_list *lvl1, *lvl2;
 	struct pv_list *pvl;
+	char *name1, *name2;
 
 	if (lvs_in_vg_activated(vg_from)) {
 		log_error("Logical volumes in \"%s\" must be inactive",
 			  vg_from->name);
-		goto error;
+		return 0;
 	}
 
 	/* Check compatibility */
@@ -1106,7 +1105,7 @@
 		log_error("Extent sizes differ: %d (%s) and %d (%s)",
 			  vg_to->extent_size, vg_to->name,
 			  vg_from->extent_size, vg_from->name);
-		goto error;
+		return 0;
 	}
 
 	if (vg_to->max_pv &&
@@ -1114,7 +1113,7 @@
 		log_error("Maximum number of physical volumes (%d) exceeded "
 			  " for \"%s\" and \"%s\"", vg_to->max_pv, vg_to->name,
 			  vg_from->name);
-		goto error;
+		return 0;
 	}
 
 	if (vg_to->max_lv &&
@@ -1122,22 +1121,22 @@
 		log_error("Maximum number of logical volumes (%d) exceeded "
 			  " for \"%s\" and \"%s\"", vg_to->max_lv, vg_to->name,
 			  vg_from->name);
-		goto error;
+		return 0;
 	}
 
 	/* Check no conflicts with LV names */
 	list_iterate_items(lvl1, &vg_to->lvs) {
-		char *name1 = lvl1->lv->name;
+		name1 = lvl1->lv->name;
 
 		list_iterate_items(lvl2, &vg_from->lvs) {
-			char *name2 = lvl2->lv->name;
+			name2 = lvl2->lv->name;
 
 			if (!strcmp(name1, name2)) {
 				log_error("Duplicate logical volume "
 					  "name \"%s\" "
 					  "in \"%s\" and \"%s\"",
 					  name1, vg_to->name, vg_from->name);
-				goto error;
+				return 0;
 			}
 		}
 	}
@@ -1148,7 +1147,7 @@
 			log_error("Physical volume %s might be constructed "
 				  "from same volume group %s.",
 				  pv_dev_name(pvl->pv), vg_from->name);
-			goto error;
+			return 0;
 		}
 	}
 
@@ -1157,18 +1156,13 @@
 			log_error("Physical volume %s might be constructed "
 				  "from same volume group %s.",
 				  pv_dev_name(pvl->pv), vg_to->name);
-			goto error;
+			return 0;
 		}
 	}
 
 	return 1;
-
-error:
-	return 0;
 }
 
-
-
 int vg_validate(struct volume_group *vg)
 {
 	struct pv_list *pvl, *pvl2;
--- LVM2/lib/metadata/mirror.c	2008/01/17 13:54:05	1.62
+++ LVM2/lib/metadata/mirror.c	2008/01/17 17:17:09	1.63
@@ -1485,10 +1485,9 @@
 
 	/* MIRROR_BY_LV */
 	if (seg_type(seg, 0) == AREA_LV &&
-	    seg_lv(seg, 0)->status & MIRROR_IMAGE) {
+	    seg_lv(seg, 0)->status & MIRROR_IMAGE)
 		return remove_mirror_images(lv, new_mirrors + 1,
 					    pvs, log_count ? 1U : 0);
-	}
 
 	/* MIRROR_BY_SEG */
 	if (log_count) {
--- LVM2/lib/mirror/mirrored.c	2008/01/16 19:18:51	1.48
+++ LVM2/lib/mirror/mirrored.c	2008/01/17 17:17:09	1.49
@@ -283,8 +283,10 @@
 
 	mirr_state = *target_state;
 
-	/* Mirror segment could have only 1 area temporarily,
-	 * if the segment is under conversion. */
+	/*
+	 * Mirror segment could have only 1 area temporarily
+	 * if the segment is under conversion.
+	 */
  	if (seg->area_count == 1)
 		mirror_status = MIRR_DISABLED;
 
--- LVM2/tools/toollib.c	2008/01/16 19:54:39	1.127
+++ LVM2/tools/toollib.c	2008/01/17 17:17:09	1.128
@@ -20,10 +20,6 @@
 #include <sys/stat.h>
 #include <sys/wait.h>
 
-/* From linux/drivers/md/dm-log.c */
-#define MIRROR_MAGIC 0x4D695272
-#define MIRROR_DISK_VERSION 2
-
 /* Command line args */
 unsigned arg_count(const struct cmd_context *cmd, int a)
 {


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

* LVM2 ./WHATS_NEW lib/activate/activate.c lib/m ...
@ 2007-01-24 16:51 agk
  0 siblings, 0 replies; 10+ messages in thread
From: agk @ 2007-01-24 16:51 UTC (permalink / raw)
  To: lvm-devel, lvm2-cvs

CVSROOT:	/cvs/lvm2
Module name:	LVM2
Changes by:	agk@sourceware.org	2007-01-24 16:51:24

Modified files:
	.              : WHATS_NEW 
	lib/activate   : activate.c 
	lib/metadata   : segtype.h 
	lib/mirror     : mirrored.c 
	lib/report     : columns.h report.c 

Log message:
	Add field definitions to report help text.
	Remove unnecessary cmd arg from target_*monitor_events().

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/WHATS_NEW.diff?cvsroot=lvm2&r1=1.554&r2=1.555
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/activate/activate.c.diff?cvsroot=lvm2&r1=1.117&r2=1.118
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/metadata/segtype.h.diff?cvsroot=lvm2&r1=1.16&r2=1.17
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/mirror/mirrored.c.diff?cvsroot=lvm2&r1=1.44&r2=1.45
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/report/columns.h.diff?cvsroot=lvm2&r1=1.18&r2=1.19
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/report/report.c.diff?cvsroot=lvm2&r1=1.53&r2=1.54

--- LVM2/WHATS_NEW	2007/01/23 17:40:40	1.554
+++ LVM2/WHATS_NEW	2007/01/24 16:51:23	1.555
@@ -1,5 +1,7 @@
 Version 2.02.20 -
 ===================================
+  Add field definitions to report help text.
+  Remove unnecessary cmd arg from target_*monitor_events().
   Add private variable to dmeventd shared library interface.
   Long-lived processes write out persistent dev cache in refresh_toolcontext().
   Fix refresh_toolcontext() always to wipe persistent device filter cache.
--- LVM2/lib/activate/activate.c	2007/01/19 22:21:45	1.117
+++ LVM2/lib/activate/activate.c	2007/01/24 16:51:23	1.118
@@ -697,7 +697,7 @@
 		log_verbose("%sonitoring %s/%s", monitor ? "M" : "Not m", lv->vg->name, lv->name);
 
 		/* FIXME specify events */
-		if (!monitor_fn(cmd, seg, 0)) {
+		if (!monitor_fn(seg, 0)) {
 			log_error("%s/%s: %s segment monitoring function failed.",
 				  lv->vg->name, lv->name, seg->segtype->name);
 			return 0;
--- LVM2/lib/metadata/segtype.h	2007/01/19 22:21:45	1.16
+++ LVM2/lib/metadata/segtype.h	2007/01/24 16:51:24	1.17
@@ -84,10 +84,8 @@
 			       struct list *modules);
 	void (*destroy) (const struct segment_type * segtype);
 	int (*target_monitored) (struct lv_segment *seg, int *pending);
-	int (*target_monitor_events) (struct cmd_context *cmd,
-				       struct lv_segment *seg, int events);
-	int (*target_unmonitor_events) (struct cmd_context *cmd,
-					 struct lv_segment *seg, int events);
+	int (*target_monitor_events) (struct lv_segment *seg, int events);
+	int (*target_unmonitor_events) (struct lv_segment *seg, int events);
 };
 
 struct segment_type *get_segtype_from_string(struct cmd_context *cmd,
--- LVM2/lib/mirror/mirrored.c	2007/01/19 22:21:45	1.44
+++ LVM2/lib/mirror/mirrored.c	2007/01/24 16:51:24	1.45
@@ -449,9 +449,7 @@
 }
 
 /* FIXME This gets run while suspended and performs banned operations. */
-static int _target_set_events(struct cmd_context *cmd,
-				   struct lv_segment *seg,
-				   int evmask, int set)
+static int _target_set_events(struct lv_segment *seg, int evmask, int set)
 {
 	char *dso, *name;
 	struct logical_volume *lv;
@@ -462,10 +460,10 @@
 	lv = seg->lv;
 	vg = lv->vg;
 
-	if (!_get_mirror_dso_path(cmd, &dso))
+	if (!_get_mirror_dso_path(vg->cmd, &dso))
 		return_0;
 
-	if (!(name = build_dm_name(cmd->mem, vg->name, lv->name, NULL)))
+	if (!(name = build_dm_name(vg->cmd->mem, vg->name, lv->name, NULL)))
 		return_0;
 
 	if (!(dmevh = _create_dm_event_handler(name, dso, DM_EVENT_ALL_ERRORS)))
@@ -481,18 +479,14 @@
 	return 1;
 }
 
-static int _target_monitor_events(struct cmd_context *cmd,
-				     struct lv_segment *seg,
-				     int events)
+static int _target_monitor_events(struct lv_segment *seg, int events)
 {
-	return _target_set_events(cmd, seg, events, 1);
+	return _target_set_events(seg, events, 1);
 }
 
-static int _target_unmonitor_events(struct cmd_context *cmd,
-				     struct lv_segment *seg,
-				     int events)
+static int _target_unmonitor_events(struct lv_segment *seg, int events)
 {
-	return _target_set_events(cmd, seg, events, 0);
+	return _target_set_events(seg, events, 0);
 }
 
 #endif /* DMEVENTD */
--- LVM2/lib/report/columns.h	2006/10/07 10:42:27	1.18
+++ LVM2/lib/report/columns.h	2007/01/24 16:51:24	1.19
@@ -18,67 +18,67 @@
  * Display Fn, Unique format identifier */
 
 /* *INDENT-OFF* */
-FIELD(LVS, lv, STR, "LV UUID", lvid.id[1], 38, uuid, "lv_uuid")
-FIELD(LVS, lv, STR, "LV", lvid, 4, lvname, "lv_name")
-FIELD(LVS, lv, STR, "Attr", lvid, 4, lvstatus, "lv_attr")
-FIELD(LVS, lv, NUM, "Maj", major, 3, int32, "lv_major")
-FIELD(LVS, lv, NUM, "Min", minor, 3, int32, "lv_minor")
-FIELD(LVS, lv, STR, "KMaj", lvid, 4, lvkmaj, "lv_kernel_major")
-FIELD(LVS, lv, STR, "KMin", lvid, 4, lvkmin, "lv_kernel_minor")
-FIELD(LVS, lv, NUM, "LSize", size, 5, size64, "lv_size")
-FIELD(LVS, lv, NUM, "#Seg", lvid, 4, lvsegcount, "seg_count")
-FIELD(LVS, lv, STR, "Origin", lvid, 6, origin, "origin")
-FIELD(LVS, lv, NUM, "Snap%", lvid, 6, snpercent, "snap_percent")
-FIELD(LVS, lv, NUM, "Copy%", lvid, 6, copypercent, "copy_percent")
-FIELD(LVS, lv, STR, "Move", lvid, 4, movepv, "move_pv")
-FIELD(LVS, lv, STR, "LV Tags", tags, 7, tags, "lv_tags")
-FIELD(LVS, lv, STR, "Log", lvid, 3, loglv, "mirror_log")
-FIELD(LVS, lv, STR, "Modules", lvid, 7, modules, "modules")
+FIELD(LVS, lv, STR, "LV UUID", lvid.id[1], 38, uuid, "lv_uuid", "Unique identifier")
+FIELD(LVS, lv, STR, "LV", lvid, 4, lvname, "lv_name", "Name.  LVs created for internal use are enclosed in brackets.")
+FIELD(LVS, lv, STR, "Attr", lvid, 4, lvstatus, "lv_attr", "Various attributes - see man page.")
+FIELD(LVS, lv, NUM, "Maj", major, 3, int32, "lv_major", "Persistent major number or -1 if not persistent.")
+FIELD(LVS, lv, NUM, "Min", minor, 3, int32, "lv_minor", "Persistent minor number or -1 if not persistent.")
+FIELD(LVS, lv, STR, "KMaj", lvid, 4, lvkmaj, "lv_kernel_major", "Currently assigned major number or -1 if LV is not active.")
+FIELD(LVS, lv, STR, "KMin", lvid, 4, lvkmin, "lv_kernel_minor", "Currently assigned minor number or -1 if LV is not active.")
+FIELD(LVS, lv, NUM, "LSize", size, 5, size64, "lv_size", "Size of LV in current units.")
+FIELD(LVS, lv, NUM, "#Seg", lvid, 4, lvsegcount, "seg_count", "Number of segments in LV.")
+FIELD(LVS, lv, STR, "Origin", lvid, 6, origin, "origin", "For snapshots, the origin device of this LV")
+FIELD(LVS, lv, NUM, "Snap%", lvid, 6, snpercent, "snap_percent", "For snapshots, the percentage full if LV is active.")
+FIELD(LVS, lv, NUM, "Copy%", lvid, 6, copypercent, "copy_percent", "For mirrors and pvmove, current percentage in-sync.")
+FIELD(LVS, lv, STR, "Move", lvid, 4, movepv, "move_pv", "For pvmove, Source PV of temporary LV created by pvmove")
+FIELD(LVS, lv, STR, "LV Tags", tags, 7, tags, "lv_tags", "Tags, if any.")
+FIELD(LVS, lv, STR, "Log", lvid, 3, loglv, "mirror_log", "For mirrors, the LV holding the synchronisation log.")
+FIELD(LVS, lv, STR, "Modules", lvid, 7, modules, "modules", "Kernel device-mapper modules required for this LV.")
 
-FIELD(PVS, pv, STR, "Fmt", id, 3, pvfmt, "pv_fmt")
-FIELD(PVS, pv, STR, "PV UUID", id, 38, uuid, "pv_uuid")
-FIELD(PVS, pv, NUM, "PSize", id, 5, pvsize, "pv_size")
-FIELD(PVS, pv, NUM, "DevSize", dev, 7, devsize, "dev_size")
-FIELD(PVS, pv, NUM, "1st PE", pe_start, 7, size64, "pe_start")
-FIELD(PVS, pv, NUM, "PFree", id, 5, pvfree, "pv_free")
-FIELD(PVS, pv, NUM, "Used", id, 4, pvused, "pv_used")
-FIELD(PVS, pv, STR, "PV", dev, 10, dev_name, "pv_name")
-FIELD(PVS, pv, STR, "Attr", status, 4, pvstatus, "pv_attr")
-FIELD(PVS, pv, NUM, "PE", pe_count, 3, uint32, "pv_pe_count")
-FIELD(PVS, pv, NUM, "Alloc", pe_alloc_count, 5, uint32, "pv_pe_alloc_count")
-FIELD(PVS, pv, STR, "PV Tags", tags, 7, tags, "pv_tags")
+FIELD(PVS, pv, STR, "Fmt", id, 3, pvfmt, "pv_fmt", "Type of metadata.")
+FIELD(PVS, pv, STR, "PV UUID", id, 38, uuid, "pv_uuid", "Unique identifier.")
+FIELD(PVS, pv, NUM, "PSize", id, 5, pvsize, "pv_size", "Size of PV in current units.")
+FIELD(PVS, pv, NUM, "DevSize", dev, 7, devsize, "dev_size", "Size of underlying device in current units.")
+FIELD(PVS, pv, NUM, "1st PE", pe_start, 7, size64, "pe_start", "Offset to the start of data on the underlying device.")
+FIELD(PVS, pv, NUM, "PFree", id, 5, pvfree, "pv_free", "Total amount of unallocated space in current units.")
+FIELD(PVS, pv, NUM, "Used", id, 4, pvused, "pv_used", "Total amount of allocated space in current units.")
+FIELD(PVS, pv, STR, "PV", dev, 10, dev_name, "pv_name", "Name.")
+FIELD(PVS, pv, STR, "Attr", status, 4, pvstatus, "pv_attr", "Various attributes - see man page.")
+FIELD(PVS, pv, NUM, "PE", pe_count, 3, uint32, "pv_pe_count", "Total number of Physical Extents.")
+FIELD(PVS, pv, NUM, "Alloc", pe_alloc_count, 5, uint32, "pv_pe_alloc_count", "Total number of allocated Physical Extents.")
+FIELD(PVS, pv, STR, "PV Tags", tags, 7, tags, "pv_tags", "Tags, if any.")
 
-FIELD(VGS, vg, STR, "Fmt", cmd, 3, vgfmt, "vg_fmt")
-FIELD(VGS, vg, STR, "VG UUID", id, 38, uuid, "vg_uuid")
-FIELD(VGS, vg, STR, "VG", name, 4, string, "vg_name")
-FIELD(VGS, vg, STR, "Attr", cmd, 5, vgstatus, "vg_attr")
-FIELD(VGS, vg, NUM, "VSize", cmd, 5, vgsize, "vg_size")
-FIELD(VGS, vg, NUM, "VFree", cmd, 5, vgfree, "vg_free")
-FIELD(VGS, vg, STR, "SYS ID", system_id, 6, string, "vg_sysid")
-FIELD(VGS, vg, NUM, "Ext", extent_size, 3, size32, "vg_extent_size")
-FIELD(VGS, vg, NUM, "#Ext", extent_count, 4, uint32, "vg_extent_count")
-FIELD(VGS, vg, NUM, "Free", free_count, 4, uint32, "vg_free_count")
-FIELD(VGS, vg, NUM, "MaxLV", max_lv, 5, uint32, "max_lv")
-FIELD(VGS, vg, NUM, "MaxPV", max_pv, 5, uint32, "max_pv")
-FIELD(VGS, vg, NUM, "#PV", pv_count, 3, uint32, "pv_count")
-FIELD(VGS, vg, NUM, "#LV", lv_count, 3, uint32, "lv_count")
-FIELD(VGS, vg, NUM, "#SN", snapshot_count, 3, uint32, "snap_count")
-FIELD(VGS, vg, NUM, "Seq", seqno, 3, uint32, "vg_seqno")
-FIELD(VGS, vg, STR, "VG Tags", tags, 7, tags, "vg_tags")
+FIELD(VGS, vg, STR, "Fmt", cmd, 3, vgfmt, "vg_fmt", "Type of metadata.")
+FIELD(VGS, vg, STR, "VG UUID", id, 38, uuid, "vg_uuid", "Unique identifier.")
+FIELD(VGS, vg, STR, "VG", name, 4, string, "vg_name", "Name.")
+FIELD(VGS, vg, STR, "Attr", cmd, 5, vgstatus, "vg_attr", "Various attributes - see man page.")
+FIELD(VGS, vg, NUM, "VSize", cmd, 5, vgsize, "vg_size", "Total size of VG in current units.")
+FIELD(VGS, vg, NUM, "VFree", cmd, 5, vgfree, "vg_free", "Total amount of free space in current units.")
+FIELD(VGS, vg, STR, "SYS ID", system_id, 6, string, "vg_sysid", "System ID indicating when and where it was created.")
+FIELD(VGS, vg, NUM, "Ext", extent_size, 3, size32, "vg_extent_size", "Size of Physical Extents in current units.")
+FIELD(VGS, vg, NUM, "#Ext", extent_count, 4, uint32, "vg_extent_count", "Total number of Physical Extents.")
+FIELD(VGS, vg, NUM, "Free", free_count, 4, uint32, "vg_free_count", "Total number of unallocated Physical Extents.")
+FIELD(VGS, vg, NUM, "MaxLV", max_lv, 5, uint32, "max_lv", "Maximum number of LVs allowed in VG or 0 if unlimited.")
+FIELD(VGS, vg, NUM, "MaxPV", max_pv, 5, uint32, "max_pv", "Maximum number of PVs allowed in VG or 0 if unlimited.")
+FIELD(VGS, vg, NUM, "#PV", pv_count, 3, uint32, "pv_count", "Number of PVs.")
+FIELD(VGS, vg, NUM, "#LV", lv_count, 3, uint32, "lv_count", "Number of LVs.")
+FIELD(VGS, vg, NUM, "#SN", snapshot_count, 3, uint32, "snap_count", "Number of snapshots.")
+FIELD(VGS, vg, NUM, "Seq", seqno, 3, uint32, "vg_seqno", "Revision number of internal metadata.  Incremented whenever it changes.")
+FIELD(VGS, vg, STR, "VG Tags", tags, 7, tags, "vg_tags", "Tags, if any.")
 
-FIELD(SEGS, seg, STR, "Type", list, 4, segtype, "segtype")
-FIELD(SEGS, seg, NUM, "#Str", area_count, 4, uint32, "stripes")
-FIELD(SEGS, seg, NUM, "Stripe", stripe_size, 6, size32, "stripesize")
-FIELD(SEGS, seg, NUM, "Stripe", stripe_size, 6, size32, "stripe_size")
-FIELD(SEGS, seg, NUM, "Chunk", list, 5, chunksize, "chunksize")
-FIELD(SEGS, seg, NUM, "Chunk", list, 5, chunksize, "chunk_size")
-FIELD(SEGS, seg, NUM, "Region", region_size, 6, size32, "regionsize")
-FIELD(SEGS, seg, NUM, "Region", region_size, 6, size32, "region_size")
-FIELD(SEGS, seg, NUM, "Start", list, 5, segstart, "seg_start")
-FIELD(SEGS, seg, NUM, "SSize", list, 5, segsize, "seg_size")
-FIELD(SEGS, seg, STR, "Seg Tags", tags, 8, tags, "seg_tags")
-FIELD(SEGS, seg, STR, "Devices", list, 5, devices, "devices")
+FIELD(SEGS, seg, STR, "Type", list, 4, segtype, "segtype", "Type of LV segment")
+FIELD(SEGS, seg, NUM, "#Str", area_count, 4, uint32, "stripes", "Number of stripes or mirror legs.")
+FIELD(SEGS, seg, NUM, "Stripe", stripe_size, 6, size32, "stripesize", "For stripes, amount of data placed on one device before switching to the next.")
+FIELD(SEGS, seg, NUM, "Stripe", stripe_size, 6, size32, "stripe_size", "For stripes, amount of data placed on one device before switching to the next.")
+FIELD(SEGS, seg, NUM, "Region", region_size, 6, size32, "regionsize", "For mirrors, the unit of data copied when synchronising devices.")
+FIELD(SEGS, seg, NUM, "Region", region_size, 6, size32, "region_size", "For mirrors, the unit of data copied when synchronising devices.")
+FIELD(SEGS, seg, NUM, "Chunk", list, 5, chunksize, "chunksize", "For snapshots, the unit of data used when tracking changes.")
+FIELD(SEGS, seg, NUM, "Chunk", list, 5, chunksize, "chunk_size", "For snapshots, the unit of data used when tracking changes.")
+FIELD(SEGS, seg, NUM, "Start", list, 5, segstart, "seg_start", "Offset within the LV to the start of the segment in current units.")
+FIELD(SEGS, seg, NUM, "SSize", list, 5, segsize, "seg_size", "Size of segment in current units.")
+FIELD(SEGS, seg, STR, "Seg Tags", tags, 8, tags, "seg_tags", "Tags, if any.")
+FIELD(SEGS, seg, STR, "Devices", list, 5, devices, "devices", "Underlying devices used with starting extent numbers.")
 
-FIELD(PVSEGS, pvseg, NUM, "Start", pe, 5, uint32, "pvseg_start")
-FIELD(PVSEGS, pvseg, NUM, "SSize", len, 5, uint32, "pvseg_size")
+FIELD(PVSEGS, pvseg, NUM, "Start", pe, 5, uint32, "pvseg_start", "Physical Extent number of start of segment.")
+FIELD(PVSEGS, pvseg, NUM, "SSize", len, 5, uint32, "pvseg_size", "Number of extents in segment.")
 /* *INDENT-ON* */
--- LVM2/lib/report/report.c	2007/01/22 15:07:21	1.53
+++ LVM2/lib/report/report.c	2007/01/24 16:51:24	1.54
@@ -868,11 +868,11 @@
 
 #define STR DM_REPORT_FIELD_TYPE_STRING
 #define NUM DM_REPORT_FIELD_TYPE_NUMBER
-#define FIELD(type, strct, sorttype, head, field, width, func, id) {type, id, (off_t)((void *)&_dummy._ ## strct.field - (void *)&_dummy._ ## strct), head, width, sorttype, &_ ## func ## _disp},
+#define FIELD(type, strct, sorttype, head, field, width, func, id, desc) {type, id, (off_t)((void *)&_dummy._ ## strct.field - (void *)&_dummy._ ## strct), head, width, sorttype, &_ ## func ## _disp, desc},
 
 static struct dm_report_field_type _fields[] = {
 #include "columns.h"
-{0, "", 0, "", 0, 0, NULL},
+{0, "", 0, "", 0, 0, NULL, NULL},
 };
 
 #undef STR


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

* LVM2 ./WHATS_NEW lib/activate/activate.c lib/m ...
@ 2006-05-25 13:32 agk
  0 siblings, 0 replies; 10+ messages in thread
From: agk @ 2006-05-25 13:32 UTC (permalink / raw)
  To: lvm2-cvs

CVSROOT:	/cvs/lvm2
Module name:	LVM2
Changes by:	agk@sourceware.org	2006-05-25 13:32:26

Modified files:
	.              : WHATS_NEW 
	lib/activate   : activate.c 
	lib/metadata   : segtype.h 
	lib/mirror     : mirrored.c 

Log message:
	Fix target_register_events args.

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/WHATS_NEW.diff?cvsroot=lvm2&r1=1.392&r2=1.393
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/activate/activate.c.diff?cvsroot=lvm2&r1=1.110&r2=1.111
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/metadata/segtype.h.diff?cvsroot=lvm2&r1=1.11&r2=1.12
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/mirror/mirrored.c.diff?cvsroot=lvm2&r1=1.34&r2=1.35


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

* LVM2 ./WHATS_NEW lib/activate/activate.c lib/m ...
@ 2005-12-08 17:49 agk
  0 siblings, 0 replies; 10+ messages in thread
From: agk @ 2005-12-08 17:49 UTC (permalink / raw)
  To: lvm2-cvs

CVSROOT:	/cvs/lvm2
Module name:	LVM2
Changes by:	agk@sourceware.org	2005-12-08 17:49:34

Modified files:
	.              : WHATS_NEW 
	lib/activate   : activate.c 
	lib/metadata   : segtype.h 
	lib/mirror     : mirrored.c 
	tools          : Makefile.in lvscan.c pvcreate.c 

Log message:
	Fix lvscan snapshot full display.
	dmeventd fixes

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/WHATS_NEW.diff?cvsroot=lvm2&r1=1.334&r2=1.335
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/activate/activate.c.diff?cvsroot=lvm2&r1=1.99&r2=1.100
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/metadata/segtype.h.diff?cvsroot=lvm2&r1=1.7&r2=1.8
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/mirror/mirrored.c.diff?cvsroot=lvm2&r1=1.19&r2=1.20
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/tools/Makefile.in.diff?cvsroot=lvm2&r1=1.70&r2=1.71
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/tools/lvscan.c.diff?cvsroot=lvm2&r1=1.27&r2=1.28
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/tools/pvcreate.c.diff?cvsroot=lvm2&r1=1.45&r2=1.46


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

end of thread, other threads:[~2011-06-13 22:28 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-06-13 22:28 LVM2 ./WHATS_NEW lib/activate/activate.c lib/m agk
  -- strict thread matches above, loose matches on Subject: below --
2011-02-18 14:29 zkabelac
2011-01-13 14:51 zkabelac
2010-11-05 18:18 prajnoha
2010-11-01 14:17 zkabelac
2009-05-13 21:26 mbroz
2008-01-17 17:17 agk
2007-01-24 16:51 agk
2006-05-25 13:32 agk
2005-12-08 17:49 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).