From 56b3d20462c2e0094e8255bc62c0f663fad4dc3a Mon Sep 17 00:00:00 2001 From: Mike Snitzer Date: Tue, 5 Jan 2010 21:08:34 +0000 Subject: [PATCH] Add missing 'stack;' for all activate_lv and deactivate_lv callers. Signed-off-by: Mike Snitzer --- lib/activate/activate.c | 3 ++- lib/locking/locking.c | 3 ++- tools/pvmove.c | 13 ++++++++++--- tools/vgchange.c | 20 +++++++++++++++----- 4 files changed, 29 insertions(+), 10 deletions(-) diff --git a/lib/activate/activate.c b/lib/activate/activate.c index cfd2953fb..cef300d71 100644 --- a/lib/activate/activate.c +++ b/lib/activate/activate.c @@ -714,7 +714,8 @@ int lv_is_active(struct logical_volume *lv) * FIXME: check status to not deactivate already activate device */ if (activate_lv_excl(lv->vg->cmd, lv)) { - deactivate_lv(lv->vg->cmd, lv); + if (!deactivate_lv(lv->vg->cmd, lv)) + stack; return 0; } diff --git a/lib/locking/locking.c b/lib/locking/locking.c index a131eb571..e1881af40 100644 --- a/lib/locking/locking.c +++ b/lib/locking/locking.c @@ -498,7 +498,8 @@ int activate_lvs(struct cmd_context *cmd, struct dm_list *lvs, unsigned exclusiv log_error("Failed to activate %s", lvl->lv->name); dm_list_uniterate(lvh, lvs, &lvl->list) { lvl = dm_list_item(lvh, struct lv_list); - activate_lv(cmd, lvl->lv); + if (!activate_lv(cmd, lvl->lv)) + stack; } return 0; } diff --git a/tools/pvmove.c b/tools/pvmove.c index fff604350..47982e62a 100644 --- a/tools/pvmove.c +++ b/tools/pvmove.c @@ -271,10 +271,17 @@ static struct logical_volume *_set_up_pvmove_lv(struct cmd_context *cmd, static int _activate_lv(struct cmd_context *cmd, struct logical_volume *lv_mirr, unsigned exclusive) { - if (exclusive) - return activate_lv_excl(cmd, lv_mirr); + int r = 0; - return activate_lv(cmd, lv_mirr); + if (exclusive) + r = activate_lv_excl(cmd, lv_mirr); + else + r = activate_lv(cmd, lv_mirr); + + if (!r) + stack; + + return r; } static int _finish_pvmove(struct cmd_context *cmd, struct volume_group *vg, diff --git a/tools/vgchange.c b/tools/vgchange.c index 9b6b27ff9..cd692b34b 100644 --- a/tools/vgchange.c +++ b/tools/vgchange.c @@ -114,19 +114,29 @@ static int _activate_lvs_in_vg(struct cmd_context *cmd, expected_count++; if (activate == CHANGE_AN) { - if (!deactivate_lv(cmd, lv)) + if (!deactivate_lv(cmd, lv)) { + stack; continue; + } } else if (activate == CHANGE_ALN) { - if (!deactivate_lv_local(cmd, lv)) + if (!deactivate_lv_local(cmd, lv)) { + stack; continue; + } } else if (lv_is_origin(lv) || (activate == CHANGE_AE)) { - if (!activate_lv_excl(cmd, lv)) + if (!activate_lv_excl(cmd, lv)) { + stack; continue; + } } else if (activate == CHANGE_ALY) { - if (!activate_lv_local(cmd, lv)) + if (!activate_lv_local(cmd, lv)) { + stack; continue; - } else if (!activate_lv(cmd, lv)) + } + } else if (!activate_lv(cmd, lv)) { + stack; continue; + } if (background_polling() && activate != CHANGE_AN && activate != CHANGE_ALN &&