mirror of
git://sourceware.org/git/lvm2.git
synced 2025-01-03 05:18:29 +03:00
pvmove: activation changes
Do not use precommitted LV for suspend of pvmoving LVs.
This commit is contained in:
parent
a25f9b2106
commit
b978f505ff
@ -1,5 +1,6 @@
|
|||||||
Version 2.02.177 -
|
Version 2.02.177 -
|
||||||
====================================
|
====================================
|
||||||
|
Avoid using precommitted metadata for suspending pvmove tree.
|
||||||
Ehnance pvmove locking.
|
Ehnance pvmove locking.
|
||||||
Deactivate activated LVs on error path when pvmove activation fails.
|
Deactivate activated LVs on error path when pvmove activation fails.
|
||||||
Add "io" to log/debug_classes for logging low-level I/O.
|
Add "io" to log/debug_classes for logging low-level I/O.
|
||||||
|
@ -2214,10 +2214,6 @@ static int _lv_suspend(struct cmd_context *cmd, const char *lvid_s,
|
|||||||
/* FIXME Consider aborting here */
|
/* FIXME Consider aborting here */
|
||||||
stack;
|
stack;
|
||||||
|
|
||||||
critical_section_inc(cmd, "suspending");
|
|
||||||
if (pvmove_lv)
|
|
||||||
critical_section_inc(cmd, "suspending pvmove LV");
|
|
||||||
|
|
||||||
if (!laopts->origin_only &&
|
if (!laopts->origin_only &&
|
||||||
(lv_is_origin(lv_pre) || lv_is_cow(lv_pre)))
|
(lv_is_origin(lv_pre) || lv_is_cow(lv_pre)))
|
||||||
lockfs = 1;
|
lockfs = 1;
|
||||||
@ -2229,31 +2225,11 @@ static int _lv_suspend(struct cmd_context *cmd, const char *lvid_s,
|
|||||||
if (laopts->origin_only && lv_is_thin_volume(lv) && lv_is_thin_volume(lv_pre))
|
if (laopts->origin_only && lv_is_thin_volume(lv) && lv_is_thin_volume(lv_pre))
|
||||||
lockfs = 1;
|
lockfs = 1;
|
||||||
|
|
||||||
/*
|
critical_section_inc(cmd, "suspending");
|
||||||
* Suspending an LV directly above a PVMOVE LV also
|
|
||||||
* suspends other LVs using that same PVMOVE LV.
|
|
||||||
* FIXME Remove this and delay the 'clear node' until
|
|
||||||
* after the code knows whether there's a different
|
|
||||||
* inactive table to load or not instead so lv_suspend
|
|
||||||
* can be called separately for each LV safely.
|
|
||||||
*/
|
|
||||||
if ((lv_pre->vg->status & PRECOMMITTED) &&
|
|
||||||
lv_is_locked(lv_pre) && find_pvmove_lv_in_lv(lv_pre)) {
|
|
||||||
if (!_lv_suspend_lv(lv_pre, laopts, lockfs, flush_required)) {
|
|
||||||
critical_section_dec(cmd, "failed precommitted suspend");
|
|
||||||
if (pvmove_lv)
|
|
||||||
critical_section_dec(cmd, "failed precommitted suspend (pvmove)");
|
|
||||||
goto_out;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
/* Normal suspend */
|
|
||||||
if (!_lv_suspend_lv(lv, laopts, lockfs, flush_required)) {
|
if (!_lv_suspend_lv(lv, laopts, lockfs, flush_required)) {
|
||||||
critical_section_dec(cmd, "failed suspend");
|
critical_section_dec(cmd, "failed suspend");
|
||||||
if (pvmove_lv)
|
|
||||||
critical_section_dec(cmd, "failed suspend (pvmove)");
|
|
||||||
goto_out;
|
goto_out;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
r = 1;
|
r = 1;
|
||||||
out:
|
out:
|
||||||
|
Loading…
Reference in New Issue
Block a user