mirror of
git://sourceware.org/git/lvm2.git
synced 2025-01-20 18:09:23 +03:00
Thin creation without activation
All thins are created with the next activation and VG is updated without messages. Only some basic commands works. (i.e. lvcreate -an -V10 -T mvg/pool) There can be some combination to confuse this system. This functionality for snapshots is going to be interesting.
This commit is contained in:
parent
bbcd37e4b8
commit
7654abc26f
@ -4194,8 +4194,12 @@ static struct logical_volume *_lv_create_an_lv(struct volume_group *vg, struct l
|
|||||||
|
|
||||||
init_dmeventd_monitor(lp->activation_monitoring);
|
init_dmeventd_monitor(lp->activation_monitoring);
|
||||||
|
|
||||||
if (seg_is_thin_pool(lp) || seg_is_thin(lp)) {
|
if (seg_is_thin(lp)) {
|
||||||
if (!activate_lv_excl(cmd, lv)) {
|
if ((lp->activate == CHANGE_AY) ||
|
||||||
|
(lp->activate == CHANGE_ALY))
|
||||||
|
lp->activate = CHANGE_AE;
|
||||||
|
if ((lp->activate == CHANGE_AE) &&
|
||||||
|
!activate_lv_excl(cmd, lv)) {
|
||||||
log_error("Aborting. Failed to activate thin %s.",
|
log_error("Aborting. Failed to activate thin %s.",
|
||||||
lv->name);
|
lv->name);
|
||||||
goto deactivate_and_revert_new_lv;
|
goto deactivate_and_revert_new_lv;
|
||||||
@ -4222,7 +4226,7 @@ static struct logical_volume *_lv_create_an_lv(struct volume_group *vg, struct l
|
|||||||
lp->snapshot ? "snapshot exception store" :
|
lp->snapshot ? "snapshot exception store" :
|
||||||
"start of new LV");
|
"start of new LV");
|
||||||
goto deactivate_and_revert_new_lv;
|
goto deactivate_and_revert_new_lv;
|
||||||
} else if (seg_is_thin_volume(lp)) {
|
} else if (seg_is_thin_volume(lp) && (lp->activate == CHANGE_AE)) {
|
||||||
/* FIXME: for now we may drop any queued thin messages
|
/* FIXME: for now we may drop any queued thin messages
|
||||||
* since we are sure everything was activated already */
|
* since we are sure everything was activated already */
|
||||||
if (!detach_pool_messages(first_seg(lv)->pool_lv)) {
|
if (!detach_pool_messages(first_seg(lv)->pool_lv)) {
|
||||||
|
@ -142,6 +142,10 @@ static int lvchange_availability(struct cmd_context *cmd,
|
|||||||
"exclusively", lv->name);
|
"exclusively", lv->name);
|
||||||
if (!activate_lv_excl(cmd, lv))
|
if (!activate_lv_excl(cmd, lv))
|
||||||
return_0;
|
return_0;
|
||||||
|
/* Drop any left thin messages after activation */
|
||||||
|
if (lv_is_thin_volume(lv) &&
|
||||||
|
!detach_pool_messages(first_seg(lv)->pool_lv))
|
||||||
|
return_0;
|
||||||
} else if (activate == CHANGE_ALY) {
|
} else if (activate == CHANGE_ALY) {
|
||||||
log_verbose("Activating logical volume \"%s\" locally",
|
log_verbose("Activating logical volume \"%s\" locally",
|
||||||
lv->name);
|
lv->name);
|
||||||
|
@ -157,6 +157,12 @@ static int _activate_lvs_in_vg(struct cmd_context *cmd,
|
|||||||
stack;
|
stack;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
/* Drop any left thin messages after activation */
|
||||||
|
if (lv_is_thin_volume(lv) &&
|
||||||
|
!detach_pool_messages(first_seg(lv)->pool_lv)) {
|
||||||
|
stack;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
} else if (activate == CHANGE_ALY) {
|
} else if (activate == CHANGE_ALY) {
|
||||||
if (!activate_lv_local(cmd, lv)) {
|
if (!activate_lv_local(cmd, lv)) {
|
||||||
stack;
|
stack;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user