From 6e7b24d34ff3da1c56718bb7def8a8ecd4258c43 Mon Sep 17 00:00:00 2001 From: Peter Rajnoha Date: Mon, 23 Mar 2015 13:33:57 +0100 Subject: [PATCH] pvmove: use safe version of iteration when iterating over vg->lvs list in _poll_vg When we're iterating over LVs in _poll_vg fn, we need to use the safe version of iteration - the LV can be removed from the list which we're just iterating over if we're finishing or aborting pvmove operation. --- tools/polldaemon.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/polldaemon.c b/tools/polldaemon.c index 10ca4a56e..53dab9617 100644 --- a/tools/polldaemon.c +++ b/tools/polldaemon.c @@ -192,7 +192,7 @@ static int _poll_vg(struct cmd_context *cmd, const char *vgname, struct volume_group *vg, struct processing_handle *handle) { struct daemon_parms *parms = (struct daemon_parms *) handle->custom_handle; - struct lv_list *lvl; + struct lv_list *lvl, *tmp_lvl; struct logical_volume *lv; const char *name; int finished; @@ -202,7 +202,7 @@ static int _poll_vg(struct cmd_context *cmd, const char *vgname, return ECMD_FAILED; } - dm_list_iterate_items(lvl, &vg->lvs) { + dm_list_iterate_items_safe(lvl, tmp_lvl, &vg->lvs) { lv = lvl->lv; if (!(lv->status & parms->lv_type)) continue;