X-Git-Url: https://git.proxmox.com/?a=blobdiff_plain;ds=sidebyside;f=PVE%2FReplicationState.pm;h=ae4deaf0f500b99a4ca758f447fda9aae12e79be;hb=55222f374781cd16987a76aecfe2d6f5979af9cb;hp=22649f91110252af2097db469c7a9b6ae510f831;hpb=683a30e0623070737f2ce90c21f3bba2d4b25e03;p=pve-guest-common.git 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) = @_;