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

Resume volumes in reverse order to preserve memlock pairing.

If renaming snapshot with virtual origin, the origin is renamed too.
But the code must resume LVs in reverse order to properly
pair memlock (in cluster locking).

(The resume of snapshot resumes origin too and later resume
is ignored otherwise.)
This commit is contained in:
Milan Broz 2010-01-05 15:58:11 +00:00
parent eb75125539
commit 60494fe74b
2 changed files with 9 additions and 2 deletions

View File

@ -1,5 +1,6 @@
Version 2.02.57 -
====================================
Resume renamed volumes in reverse order to preserve memlock pairing.
Drop metadata cache after device was autorepaired and removed from VG.
Remove missing flag in metadata if PV reappeared and is empty.
Destroy allocated mempool in _vg_read_orphans() error path.

View File

@ -1767,7 +1767,7 @@ int lv_rename(struct cmd_context *cmd, struct logical_volume *lv,
struct volume_group *vg = lv->vg;
struct lv_names lv_names;
DM_LIST_INIT(lvs_changed);
struct lv_list lvl, lvl2;
struct lv_list lvl, lvl2, *lvlp;
int r = 0;
/* rename is not allowed on sub LVs */
@ -1822,7 +1822,13 @@ int lv_rename(struct cmd_context *cmd, struct logical_volume *lv,
if (!(r = vg_commit(vg)))
stack;
resume_lvs(cmd, &lvs_changed);
/*
* FIXME: resume LVs in reverse order to prevent memory
* lock imbalance when resuming virtual snapshot origin
* (resume of snapshot resumes origin too)
*/
dm_list_iterate_back_items(lvlp, &lvs_changed)
resume_lv(cmd, lvlp->lv);
out:
backup(vg);
return r;