diff options
Diffstat (limited to 'tools/vgchange.c')
-rw-r--r-- | tools/vgchange.c | 25 |
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); |