From 55222f374781cd16987a76aecfe2d6f5979af9cb Mon Sep 17 00:00:00 2001 From: Dietmar Maurer Date: Mon, 12 Jun 2017 11:33:05 +0200 Subject: [PATCH] PVE/ReplicationState.pm: implement write_vmid_job_states Update all job states related to a specific $vmid --- PVE/ReplicationState.pm | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/PVE/ReplicationState.pm b/PVE/ReplicationState.pm index 22649f9..ae4deaf 100644 --- a/PVE/ReplicationState.pm +++ b/PVE/ReplicationState.pm @@ -68,6 +68,7 @@ sub read_job_state { return extract_job_state($stateobj, $jobcfg); } +# update state for a single job sub write_job_state { my ($jobcfg, $state) = @_; @@ -94,6 +95,25 @@ sub write_job_state { PVE::GuestHelpers::guest_migration_lock($vmid, undef, $code); } +# update all job states related to a specific $vmid +sub write_vmid_job_states { + my ($vmid_state, $vmid) = @_; + + my $update = sub { + my $stateobj = read_state(); + $stateobj->{$vmid} = $vmid_state; + PVE::Tools::file_set_contents($state_path, encode_json($stateobj)); + }; + + my $code = sub { + PVE::Tools::lock_file($state_lock, 10, $update); + die $@ if $@; + }; + + # make sure we have guest_migration_lock during update + PVE::GuestHelpers::guest_migration_lock($vmid, undef, $code); +} + sub replication_snapshot_name { my ($jobid, $last_sync) = @_; -- 2.39.2