]> git.proxmox.com Git - pve-zsync.git/blobdiff - pve-zsync
Revert "fix: check for incremental sync snapshot."
[pve-zsync.git] / pve-zsync
index abaa225b4cdd20c6064f04f56b36a3acd2b971b1..25add923165a29f4c8d4e896d6ffd408bf720cb4 100755 (executable)
--- a/pve-zsync
+++ b/pve-zsync
@@ -53,6 +53,8 @@ my $HOSTRE = "(?:$HOSTv4RE1|\\[$IPV6RE\\])";       # ipv6 must always be in brac
 # targets are either a VMID, or a 'host:zpool/path' with 'host:' being optional
 my $TARGETRE = qr!^(?:($HOSTRE):)?(\d+|(?:[\w\-_]+)(/.+)?)$!;
 
+my $DISK_KEY_RE = qr/^(?:(?:(?:virtio|ide|scsi|sata|efidisk|mp)\d+)|rootfs): /;
+
 my $command = $ARGV[0];
 
 if (defined($command) && $command ne 'help' && $command ne 'printpod') {
@@ -545,10 +547,10 @@ sub init {
        update_state($job);
     }); #cron and state lock
 
-    eval {
-       sync($param) if !$param->{skip};
-    };
-    if(my $err = $@) {
+    return if $param->{skip};
+
+    eval { sync($param) };
+    if (my $err = $@) {
        destroy_job($param);
        print $err;
     }
@@ -612,6 +614,10 @@ sub sync {
            #job might've changed while we waited for the sync lock, but we can be sure it's not syncing
            eval { $job = get_job($param); };
 
+           if ($job && defined($job->{state}) && $job->{state} eq "stopped") {
+               die "Job --source $param->{source} --name $param->{name} has been disabled\n";
+           }
+
            $dest = parse_target($param->{dest});
            $source = parse_target($param->{source});
 
@@ -675,7 +681,11 @@ sub sync {
        locked("$CONFIG_PATH/cron_and_state.lock", sub {
            eval { $job = get_job($param); };
            if ($job) {
-               $job->{state} = "ok";
+               if (defined($job->{state}) && $job->{state} eq "stopped") {
+                   $job->{state} = "stopped";
+               } else {
+                   $job->{state} = "ok";
+               }
                $job->{lsync} = $date;
                update_state($job);
            }
@@ -822,7 +832,7 @@ sub parse_disks {
        my $line = $1;
 
        next if $line =~ /media=cdrom/;
-       next if $line !~ m/^(?:((?:virtio|ide|scsi|sata|mp)\d+)|rootfs): /;
+       next if $line !~ m/$DISK_KEY_RE/;
 
        #QEMU if backup is not set include in  sync
        next if $vm_type eq 'qemu' && ($line =~ m/backup=(?i:0|no|off|false)/);
@@ -832,7 +842,7 @@ sub parse_disks {
 
        my $disk = undef;
        my $stor = undef;
-       if($line =~ m/^(?:(?:(?:virtio|ide|scsi|sata|mp)\d+)|rootfs): (.*)$/) {
+       if($line =~ m/$DISK_KEY_RE(.*)$/) {
            my @parameter = split(/,/,$1);
 
            foreach my $opt (@parameter) {