summaryrefslogtreecommitdiff
path: root/lib/activate/activate.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/activate/activate.c')
-rw-r--r--lib/activate/activate.c16
1 files changed, 14 insertions, 2 deletions
diff --git a/lib/activate/activate.c b/lib/activate/activate.c
index a82a5cbc4..a0a0c3bdc 100644
--- a/lib/activate/activate.c
+++ b/lib/activate/activate.c
@@ -2870,6 +2870,7 @@ int deactivate_lv_with_sub_lv(const struct logical_volume *lv)
int activate_lv(struct cmd_context *cmd, const struct logical_volume *lv)
{
const struct logical_volume *active_lv;
+ const struct logical_volume *lv_use;
int ret;
/*
@@ -2888,19 +2889,30 @@ int activate_lv(struct cmd_context *cmd, const struct logical_volume *lv)
goto out;
}
+ if (lv->status & LV_UNCOMMITTED)
+ lv_use = lv;
+ else
+ lv_use = lv_committed(lv);
+
ret = lv_activate_with_filter(cmd, NULL, 0,
(lv->status & LV_NOSCAN) ? 1 : 0,
(lv->status & LV_TEMPORARY) ? 1 : 0,
- lv_committed(lv));
+ lv_use);
out:
return ret;
}
int deactivate_lv(struct cmd_context *cmd, const struct logical_volume *lv)
{
+ const struct logical_volume *lv_use;
int ret;
- ret = lv_deactivate(cmd, NULL, lv_committed(lv));
+ if (lv->status & LV_UNCOMMITTED)
+ lv_use = lv;
+ else
+ lv_use = lv_committed(lv);
+
+ ret = lv_deactivate(cmd, NULL, lv_use);
return ret;
}