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