my $PATH = "/usr/sbin/";
my $QEMU_CONF = '/etc/pve/local/qemu-server/';
my $DEBUG = 0;
+my $LOCKFILE = $VMCONFIG.$PROGNAME.'lock';
use strict;
use warnings;
sub init {
my ($param) = @_;
+ open(my $lock_fh, ">", $LOCKFILE) || die "cannot open Lock File: $LOCKFILE\n";
+ lock($lock_fh);
my $cfg = read_from_config;
my $vm = {};
&$add_job($vm, $name);
}
-
+
+ lock($lock_fh);
+ close($lock_fh);
+
eval {sync($param) if !$param->{skip};};
if(my $err = $@) {
destroy($param);
my ($param) = @_;
modify_configs($param->{name}, $param->{source},1);
+
}
sub sync {
my ($param) = @_;
+ open(my $lock_fh, ">", $LOCKFILE) || die "cannot open Lock File: $LOCKFILE\n";
+ lock($lock_fh);
my $cfg = read_from_config("$CONFIG_PATH$CONFIG");
my $source_target = $source->{ip} ? $source->{ip}.":" : '';
$source_target .= $source->{vmid} ? $source->{vmid} : $source->{abs_path};
write_to_cron($cfg);
+ lock($lock_fh);
+ close($lock_fh);
}
die "$err\n";
}
} else {
&$sync_path($source, $name, $cfg, $max_snap, $dest, $method);
}
+ lock($lock_fh);
+ close($lock_fh);
}
sub snapshot_get{
$name = $name ? $name : "default";
+ open(my $lock_fh, ">", $LOCKFILE) || die "cannot open Lock File: $LOCKFILE\n";
+ lock($lock_fh);
+
my $cfg = read_from_config("$CONFIG_PATH$CONFIG");
my $source = parse_target($sou);
&$change_configs($path, $name, $cfg, $op);
}
+ unlock($lock_fh);
+ close($lock_fh);
}