1
0
mirror of git://sourceware.org/git/lvm2.git synced 2024-12-21 13:34:40 +03:00

Replace incomplete pvmove activation failure recovery code with a message.

As it stands, the recovery code can make things worse sometimes so it's
better to insist on a proper 'pvmove --abort' cleanup.
This commit is contained in:
Alasdair Kergon 2011-09-27 17:29:33 +00:00
parent 1c26860d82
commit 74e72bd75d
2 changed files with 3 additions and 15 deletions

View File

@ -1,5 +1,6 @@
Version 2.02.89 -
==================================
Replace incomplete pvmove activation failure recovery code with a message.
Abort if _finish_pvmove suspend_lvs fails instead of cleaning up incompletely.
Change suspend_lvs to call vg_revert internally.
Change vg_revert to void and remove superfluous calls after failed vg_commit.

View File

@ -390,22 +390,9 @@ static int _update_metadata(struct cmd_context *cmd, struct volume_group *vg,
}
/*
* Nothing changed yet, try to revert pvmove.
* FIXME This error path is incomplete and unsafe.
* FIXME Run --abort internally here.
*/
log_error("Temporary pvmove mirror activation failed.");
/* Ensure that temporary mrror is deactivate even on other nodes. */
/* FIXME Unsafe to proceed if this fails without checking explicitly that no pvmove LVs are still active */
(void)deactivate_lv(cmd, lv_mirr);
/* Revert metadata */
/* FIXME Use --abort code instead? */
if (!_detach_pvmove_mirror(cmd, lv_mirr) ||
!lv_remove(lv_mirr) ||
!vg_write(vg) || !vg_commit(vg))
log_error("ABORTING: Restoring original configuration "
"before pvmove failed. Run pvmove --abort.");
log_error("ABORTING: Temporary pvmove mirror activation failed. Run pvmove --abort.");
goto_out;
}
}