[lvm-devel] master - cleanup: postpone lv_is_thin_volume check

Zdenek Kabelac zkabelac at fedoraproject.org
Mon Feb 4 18:07:52 UTC 2013


Gitweb:        http://git.fedorahosted.org/git/?p=lvm2.git;a=commitdiff;h=9f433e6ee34c0ff94017c940aac301bc28d7e233
Commit:        9f433e6ee34c0ff94017c940aac301bc28d7e233
Parent:        38e7b37c897da9cfae8cb3b77ea585b7616d9813
Author:        Zdenek Kabelac <zkabelac at redhat.com>
AuthorDate:    Sat Feb 2 00:44:07 2013 +0100
Committer:     Zdenek Kabelac <zkabelac at redhat.com>
CommitterDate: Mon Feb 4 19:00:19 2013 +0100

cleanup: postpone lv_is_thin_volume check

Code move to make it easier to follow and
call _add_dev_to_dtree() in the separate if() branch
for thin volumes.
---
 lib/activate/dev_manager.c |   19 +++++++++++--------
 1 files changed, 11 insertions(+), 8 deletions(-)

diff --git a/lib/activate/dev_manager.c b/lib/activate/dev_manager.c
index 843823f..fda5bdc 100644
--- a/lib/activate/dev_manager.c
+++ b/lib/activate/dev_manager.c
@@ -1557,8 +1557,7 @@ static int _add_lv_to_dtree(struct dev_manager *dm, struct dm_tree *dtree,
 	struct dm_tree_node *thin_node;
 	const char *uuid;
 
-	if ((!origin_only || lv_is_thin_volume(lv)) &&
-	    !_add_dev_to_dtree(dm, dtree, lv, NULL))
+	if (!origin_only && !_add_dev_to_dtree(dm, dtree, lv, NULL))
 		return_0;
 
 	/* FIXME Can we avoid doing this every time? */
@@ -1590,18 +1589,22 @@ static int _add_lv_to_dtree(struct dev_manager *dm, struct dm_tree *dtree,
 		return_0;
 
 	if (lv_is_thin_volume(lv)) {
-#if 0
-		/* FIXME Implement dm_tree_node_skip_children optimisation */
 		if (origin_only) {
+			/* origin_only has special meaning for thin volumes */
+			if (!_add_dev_to_dtree(dm, dtree, lv, NULL))
+				return_0;
+#if 0
+			/* FIXME Implement dm_tree_node_skip_children optimisation */
 			if (!(uuid = build_dm_uuid(dm->mem, lv->lvid.s, NULL)))
 				return_0;
 			if ((thin_node = dm_tree_find_node_by_uuid(dtree, uuid)))
 				dm_tree_node_skip_children(thin_node, 1);
-		}
 #endif
-		/* Add thin pool LV layer */
-		lv = seg->pool_lv;
-		seg = first_seg(lv);
+		} else {
+			/* Add thin pool LV layer */
+			lv = seg->pool_lv;
+			seg = first_seg(lv);
+		}
 	}
 
 	if (!origin_only && lv_is_thin_pool(lv)) {




More information about the lvm-devel mailing list