public inbox for lvm2-cvs@sourceware.org
help / color / mirror / Atom feed
* LVM2/lib/metadata metadata-exported.h metadata ...
@ 2008-09-25 15:57 mbroz
  0 siblings, 0 replies; 2+ messages in thread
From: mbroz @ 2008-09-25 15:57 UTC (permalink / raw)
  To: lvm-devel, lvm2-cvs

CVSROOT:	/cvs/lvm2
Module name:	LVM2
Changes by:	mbroz@sourceware.org	2008-09-25 15:57:03

Modified files:
	lib/metadata   : metadata-exported.h metadata.c metadata.h 

Log message:
	Try to fix possible infinite loop in dependency tree walking (by mornfall).

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/metadata/metadata-exported.h.diff?cvsroot=lvm2&r1=1.53&r2=1.54
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/metadata/metadata.c.diff?cvsroot=lvm2&r1=1.191&r2=1.192
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/metadata/metadata.h.diff?cvsroot=lvm2&r1=1.182&r2=1.183

--- LVM2/lib/metadata/metadata-exported.h	2008/09/19 06:41:59	1.53
+++ LVM2/lib/metadata/metadata-exported.h	2008/09/25 15:57:02	1.54
@@ -75,8 +75,8 @@
 #define PARTIAL_LV              0x01000000U	/* LV - derived flag, not
 						   written out in metadata*/
 
-//#define POSTORDER_FLAG	0x02000000U /* Not a real flag, reserved for
-//					       temporary use inside vg_read. */
+//#define POSTORDER_FLAG	0x02000000U /* Not real flags, reserved for
+//#define POSTORDER_OPEN_FLAG	0x04000000U    temporary use inside vg_read. */
 
 #define LVM_READ              	0x00000100U	/* LV VG */
 #define LVM_WRITE             	0x00000200U	/* LV VG */
--- LVM2/lib/metadata/metadata.c	2008/09/19 06:41:59	1.191
+++ LVM2/lib/metadata/metadata.c	2008/09/25 15:57:02	1.192
@@ -1199,7 +1199,11 @@
 static int _lv_postorder_level(struct logical_volume *lv, void *data)
 {
 	struct _lv_postorder_baton *baton = data;
+	if (lv->status & POSTORDER_OPEN_FLAG)
+		return 1; // a data structure loop has closed...
+	lv->status |= POSTORDER_OPEN_FLAG;
 	int r =_lv_postorder_visit(lv, baton->fn, baton->data);
+	lv->status &= ~POSTORDER_OPEN_FLAG;
 	lv->status |= POSTORDER_FLAG;
 	return r;
 };
--- LVM2/lib/metadata/metadata.h	2008/09/19 06:41:59	1.182
+++ LVM2/lib/metadata/metadata.h	2008/09/25 15:57:02	1.183
@@ -67,8 +67,8 @@
 //#define PARTIAL_LV		0x01000000U	/* LV - derived flag, not
 //						   written out in metadata*/
 
-#define POSTORDER_FLAG		0x02000000U /* Not a real flag, reserved for
-					       temporary use inside vg_read. */
+#define POSTORDER_FLAG		0x02000000U /* Not real flags, reserved for  */
+#define POSTORDER_OPEN_FLAG	0x04000000U /* temporary use inside vg_read. */
 
 //#define LVM_READ              	0x00000100U	/* LV VG */
 //#define LVM_WRITE             	0x00000200U	/* LV VG */


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

* LVM2/lib/metadata metadata-exported.h metadata ...
@ 2010-04-13 17:25 wysochanski
  0 siblings, 0 replies; 2+ messages in thread
From: wysochanski @ 2010-04-13 17:25 UTC (permalink / raw)
  To: lvm-devel, lvm2-cvs

CVSROOT:	/cvs/lvm2
Module name:	LVM2
Changes by:	wysochanski@sourceware.org	2010-04-13 17:25:45

Modified files:
	lib/metadata   : metadata-exported.h metadata.c metadata.h 

Log message:
	Add del_pvl_from_vgs() and move prototypes into metadata-exported.h
	
	Add a delete function to manage the vg->pvs list.
	
	NOTE: It may be possible to do further cleanup to these add/del functions
	by passing a 'pv' as input instead of 'pv_list'.  The pv_list is used for
	functions which do allocations (lvcreate) while other places in the code
	just manage a list of 'pv' (e.g. import functions, vgextend, etc).
	
	Signed-off-by: Dave Wysochanski <dwysocha@redhat.com>

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/metadata/metadata-exported.h.diff?cvsroot=lvm2&r1=1.139&r2=1.140
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/metadata/metadata.c.diff?cvsroot=lvm2&r1=1.332&r2=1.333
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/metadata/metadata.h.diff?cvsroot=lvm2&r1=1.202&r2=1.203

--- LVM2/lib/metadata/metadata-exported.h	2010/04/09 01:00:11	1.139
+++ LVM2/lib/metadata/metadata-exported.h	2010/04/13 17:25:44	1.140
@@ -470,6 +470,9 @@
 int vg_set_clustered(struct volume_group *vg, int clustered);
 int vg_split_mdas(struct cmd_context *cmd, struct volume_group *vg_from,
 		  struct volume_group *vg_to);
+/* FIXME: Investigate refactoring these functions to take a pv ISO pv_list */
+void add_pvl_to_vgs(struct volume_group *vg, struct pv_list *pvl);
+void del_pvl_from_vgs(struct volume_group *vg, struct pv_list *pvl);
 
 /* FIXME: refactor / unexport when lvremove liblvm refactoring dones */
 int remove_lvs_in_vg(struct cmd_context *cmd,
--- LVM2/lib/metadata/metadata.c	2010/04/08 15:18:35	1.332
+++ LVM2/lib/metadata/metadata.c	2010/04/13 17:25:44	1.333
@@ -145,6 +145,12 @@
 	vg->pv_count++;
 }
 
+void del_pvl_from_vgs(struct volume_group *vg, struct pv_list *pvl)
+{
+	vg->pv_count--;
+	dm_list_del(&pvl->list);
+}
+
 
 /**
  * add_pv_to_vg - Add a physical volume to a volume group
--- LVM2/lib/metadata/metadata.h	2010/04/06 14:04:57	1.202
+++ LVM2/lib/metadata/metadata.h	2010/04/13 17:25:45	1.203
@@ -377,6 +377,5 @@
 struct physical_volume *pv_by_path(struct cmd_context *cmd, const char *pv_name);
 int add_pv_to_vg(struct volume_group *vg, const char *pv_name,
 		 struct physical_volume *pv);
-void add_pvl_to_vgs(struct volume_group *vg, struct pv_list *pvl);
 
 #endif


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

end of thread, other threads:[~2010-04-13 17:25 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2008-09-25 15:57 LVM2/lib/metadata metadata-exported.h metadata mbroz
2010-04-13 17:25 wysochanski

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).