summaryrefslogtreecommitdiff
path: root/tools/vgchange.c
diff options
context:
space:
mode:
Diffstat (limited to 'tools/vgchange.c')
-rw-r--r--tools/vgchange.c25
1 files changed, 25 insertions, 0 deletions
diff --git a/tools/vgchange.c b/tools/vgchange.c
index 5dac6eda9..f3e7aaa5a 100644
--- a/tools/vgchange.c
+++ b/tools/vgchange.c
@@ -521,9 +521,24 @@ change:
}
vg->system_id = system_id;
+
+ /* update system_id in lvmlockd's record for this vg */
+ lvmlockd_start_vg(cmd, vg);
+
return 1;
}
+static int _vgchange_lock_start(struct cmd_context *cmd, struct volume_group *vg,
+ int auto_opt)
+{
+ return lvmlockd_start_vg(cmd, vg);
+}
+
+static int _vgchange_lock_stop(struct cmd_context *cmd, struct volume_group *vg)
+{
+ return lvmlockd_stop_vg(cmd, vg);
+}
+
static int vgchange_single(struct cmd_context *cmd, const char *vg_name,
struct volume_group *vg,
void *handle __attribute__((unused)))
@@ -639,6 +654,14 @@ static int vgchange_single(struct cmd_context *cmd, const char *vg_name,
if (!_vgchange_background_polling(cmd, vg))
return_ECMD_FAILED;
+ if (arg_is_set(cmd, lockstart_ARG)) {
+ if (!_vgchange_lock_start(cmd, vg, 0))
+ return_ECMD_FAILED;
+ } else if (arg_is_set(cmd, lockstop_ARG)) {
+ if (!_vgchange_lock_stop(cmd, vg))
+ return_ECMD_FAILED;
+ }
+
return ret;
}
@@ -646,6 +669,8 @@ int vgchange(struct cmd_context *cmd, int argc, char **argv)
{
int noupdate =
arg_count(cmd, activate_ARG) ||
+ arg_count(cmd, lockstart_ARG) ||
+ arg_count(cmd, lockstop_ARG) ||
arg_count(cmd, monitor_ARG) ||
arg_count(cmd, poll_ARG) ||
arg_count(cmd, refresh_ARG);