All of lore.kernel.org
 help / color / mirror / Atom feed
* master - activation: Fix segfault with inactive pvmove LV.
@ 2013-08-28 21:58 Alasdair Kergon
  0 siblings, 0 replies; only message in thread
From: Alasdair Kergon @ 2013-08-28 21:58 UTC (permalink / raw)
  To: lvm-devel

Gitweb:        http://git.fedorahosted.org/git/?p=lvm2.git;a=commitdiff;h=c0f987949b8a0bbbbe7f06694f59f710a73814da
Commit:        c0f987949b8a0bbbbe7f06694f59f710a73814da
Parent:        0acd7173d14195aeb724c1048a8cbf64a2fd2aa7
Author:        Alasdair G Kergon <agk@redhat.com>
AuthorDate:    Wed Aug 28 22:56:23 2013 +0100
Committer:     Alasdair G Kergon <agk@redhat.com>
CommitterDate: Wed Aug 28 22:56:23 2013 +0100

activation: Fix segfault with inactive pvmove LV.

Set flag to avoid recursion back through an inactive pvmove LV when
populating deptree.
---
 WHATS_NEW                  |    3 ++-
 lib/activate/dev_manager.c |    8 +++++---
 2 files changed, 7 insertions(+), 4 deletions(-)

diff --git a/WHATS_NEW b/WHATS_NEW
index d974b0a..71e9fa8 100644
--- a/WHATS_NEW
+++ b/WHATS_NEW
@@ -1,6 +1,7 @@
 Version 2.02.101 - 
 ===================================
-  Require exactly 3 arguments for lvm2-activation-generator, remove defaults.
+  Avoid unlimited recursion when creating dtree containing inactive pvmove LV.
+  Require exactly 3 arguments for lvm2-activation-generator. Remove defaults.
   Disable pvmove of merging or converting logical volumes.
   Enable pvmove of snapshots and snapshot origins.
   Fix inability to specify LV name when pvmove'ing a RAID, mirror, or thin-LV.
diff --git a/lib/activate/dev_manager.c b/lib/activate/dev_manager.c
index 294606c..11be421 100644
--- a/lib/activate/dev_manager.c
+++ b/lib/activate/dev_manager.c
@@ -1763,11 +1763,13 @@ static int _add_lv_to_dtree(struct dev_manager *dm, struct dm_tree *dtree,
 				return_0;
 
 	/* Add any LVs referencing a PVMOVE LV unless told not to. */
-	if (dm->track_pvmove_deps && lv->status & PVMOVE)
+	if (dm->track_pvmove_deps && lv->status & PVMOVE) {
+		dm->track_pvmove_deps = 0;
 		dm_list_iterate_items(sl, &lv->segs_using_this_lv)
-			if (!_cached_info(dm->mem, dtree, sl->seg->lv, 0) &&
-			    !_add_lv_to_dtree(dm, dtree, sl->seg->lv, origin_only))
+			if (!_add_lv_to_dtree(dm, dtree, sl->seg->lv, origin_only))
 				return_0;
+		dm->track_pvmove_deps = 1;
+	}
 
 	/* Adding LV head of replicator adds all other related devs */
 	if (lv_is_replicator_dev(lv) &&



^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2013-08-28 21:58 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-08-28 21:58 master - activation: Fix segfault with inactive pvmove LV Alasdair Kergon

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.