[lvm-devel] master - cleanup: use safe iterator

Zdenek Kabelac zkabelac at fedoraproject.org
Fri Nov 22 20:09:19 UTC 2013


Gitweb:        http://git.fedorahosted.org/git/?p=lvm2.git;a=commitdiff;h=bea118a87cd6cf7c63ccaa0d75691de1f73602ab
Commit:        bea118a87cd6cf7c63ccaa0d75691de1f73602ab
Parent:        19cc92230cd855d08e0a8787687c8dba9cd8d627
Author:        Zdenek Kabelac <zkabelac at redhat.com>
AuthorDate:    Fri Nov 22 13:18:02 2013 +0100
Committer:     Zdenek Kabelac <zkabelac at redhat.com>
CommitterDate: Fri Nov 22 21:00:55 2013 +0100

cleanup: use safe iterator

Simplify code and use dm_list_iterate_items_safe() and avoid
scanning the list mutliple times.
Use dm_list_move().
---
 lib/metadata/metadata.c |   16 +++++++---------
 1 files changed, 7 insertions(+), 9 deletions(-)

diff --git a/lib/metadata/metadata.c b/lib/metadata/metadata.c
index 53d7e5e..c71ec30 100644
--- a/lib/metadata/metadata.c
+++ b/lib/metadata/metadata.c
@@ -2809,7 +2809,7 @@ static struct volume_group *_vg_read_orphans(struct cmd_context *cmd,
 	struct lvmcache_vginfo *vginfo;
 	struct volume_group *vg = NULL;
 	struct _vg_read_orphan_baton baton;
-	struct pv_list *pvl, *pvl_;
+	struct pv_list *pvl, *tpvl;
 	struct pv_list head;
 
 	dm_list_init(&head.list);
@@ -2823,15 +2823,13 @@ static struct volume_group *_vg_read_orphans(struct cmd_context *cmd,
 		return_NULL;
 
 	vg = fmt->orphan_vg;
-restart:
-	dm_list_iterate_items(pvl, &vg->pvs) {
-		if (pvl->pv->status & UNLABELLED_PV ) {
-			dm_list_del(&pvl->list);
-			dm_list_add(&head.list, &pvl->list);
-			goto restart;
-		} else
+
+	dm_list_iterate_items_safe(pvl, tpvl, &vg->pvs)
+		if (pvl->pv->status & UNLABELLED_PV )
+			dm_list_move(&head.list, &pvl->list);
+		else
 			pv_set_fid(pvl->pv, NULL);
-	}
+
 	dm_list_init(&vg->pvs);
 	vg->pv_count = 0;
 	vg->extent_count = 0;




More information about the lvm-devel mailing list