mirror of
git://sourceware.org/git/lvm2.git
synced 2024-12-21 13:34:40 +03:00
activation: use revert_lv on tree suspend failure
When thetable reload fails during suspend() - we were only calling plain resume() - and this will reload only those devices, which were left suspend, but will not try to restore metadata state according to lvm2 reverted metadata. So if we were reloading device tree - we have restored only top-level LV and rest of reverted device manipulation were left alone and possibly mismatched what is in committed metadata. FIXME: There are several cases were such revert will likely not work properly anyway as some operation are currenly handled in single commit, while they need multiple commits, but it's step towards better correctness. At least we catch there errors now earlier.
This commit is contained in:
parent
bc9bb534ff
commit
5bc66532c7
@ -1,5 +1,6 @@
|
||||
Version 2.03.11 -
|
||||
==================================
|
||||
Use revert_lv() on reload error path after vg_revert().
|
||||
Configure --with-integrity enabled.
|
||||
Restore lost signal blocking while VG lock is held.
|
||||
Improve estimation of needed extents when creating thin-pool.
|
||||
|
@ -2322,6 +2322,9 @@ static int _lv_resume(struct cmd_context *cmd, const char *lvid_s,
|
||||
lv_is_thin_volume(lv) ? " thin only" : " without snapshots") : "",
|
||||
laopts->revert ? " (reverting)" : "");
|
||||
|
||||
if (laopts->revert)
|
||||
goto needs_resume;
|
||||
|
||||
if (!lv_info(cmd, lv, laopts->origin_only, &info, 0, 0))
|
||||
goto_out;
|
||||
|
||||
|
@ -6858,6 +6858,10 @@ static int _lv_update_and_reload(struct logical_volume *lv, int origin_only)
|
||||
log_error("Failed to suspend logical volume %s.",
|
||||
display_lvname(lock_lv));
|
||||
vg_revert(vg);
|
||||
if (!revert_lv(vg->cmd, lock_lv))
|
||||
log_error("Failed to revert logical volume %s.",
|
||||
display_lvname(lock_lv));
|
||||
return 0;
|
||||
} else if (!(r = vg_commit(vg)))
|
||||
stack; /* !vg_commit() has implict vg_revert() */
|
||||
else
|
||||
|
Loading…
Reference in New Issue
Block a user