summaryrefslogtreecommitdiffstats
path: root/tools/lvchange.c
diff options
context:
space:
mode:
authorAlasdair Kergon <agk@redhat.com>2008-01-10 18:35:51 +0000
committerAlasdair Kergon <agk@redhat.com>2008-01-10 18:35:51 +0000
commit06ea7eaa27711301f9991e128e3d5db4f87be123 (patch)
tree19c6820adb988d9c062684c39f854b59352f04ed /tools/lvchange.c
parent4a898ae95be1d52eabbb9ad05735838b5be93c4b (diff)
downloadlvm2-06ea7eaa27711301f9991e128e3d5db4f87be123.tar.gz
lvm2-06ea7eaa27711301f9991e128e3d5db4f87be123.tar.xz
lvm2-06ea7eaa27711301f9991e128e3d5db4f87be123.zip
Various lvconvert/polldaemon-related fixes from NEC. See lvm-devel
for original patches & explanations.
Diffstat (limited to 'tools/lvchange.c')
-rw-r--r--tools/lvchange.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/tools/lvchange.c b/tools/lvchange.c
index b5075d99..a844d053 100644
--- a/tools/lvchange.c
+++ b/tools/lvchange.c
@@ -106,6 +106,8 @@ static int lvchange_availability(struct cmd_context *cmd,
{
int activate;
const char *pvname;
+ char *lv_full_name;
+ uint32_t len;
activate = arg_uint_value(cmd, available_ARG, 0);
@@ -158,6 +160,18 @@ static int lvchange_availability(struct cmd_context *cmd,
pvname);
pvmove_poll(cmd, pvname, 1);
}
+
+ if (lv->status & CONVERTING) {
+ len = strlen(lv->vg->name) + strlen(lv->name) + 2;
+ if (!(lv_full_name = alloca(len)))
+ return_0;
+ if (!dm_snprintf(lv_full_name, len, "%s/%s",
+ lv->vg->name, lv->name))
+ return_0;
+ log_verbose("Spawning background lvconvert process for %s",
+ lv->name);
+ lvconvert_poll(cmd, lv_full_name, 1);
+ }
}
return 1;