I create a separate class for common guest helpers.
We can move more code into this class later.
install: PVE
install -d ${PERL5DIR}/PVE
+ install -m 0644 PVE/GuestHelpers.pm ${PERL5DIR}/PVE/
install -m 0644 PVE/AbstractConfig.pm ${PERL5DIR}/PVE/
install -m 0644 PVE/AbstractMigrate.pm ${PERL5DIR}/PVE/
install -m 0644 PVE/ReplicationConfig.pm ${PERL5DIR}/PVE/
--- /dev/null
+package PVE::GuestHelpers;
+
+use strict;
+use warnings;
+
+use PVE::Tools;
+
+# We use a separate lock to block migration while a replication job
+# is running.
+
+sub guest_migration_lock {
+ my ($vmid, $timeout, $func, @param) = @_;
+
+ my $lockid = "pve-migrate-$vmid";
+ my $lockdir = "/var/lock/pve-manager";
+
+ mkdir $lockdir;
+
+ my $res = PVE::Tools::lock_file("$lockdir/$lockid", $timeout, $func, @param);
+ die $@ if $@;
+
+ return $res;
+}
+
+1;