and pull the actual lock_file_full handling into a helper, to make the
public interface clearer:
lock_config -> standard exclusive lock with 10s timeout
lock_config_full -> exclusive lock with configurable timeout
lock_config_shared -> shared lock with configurable timeout
the latter only has a single user (qemu-server's clone API call)
currently.
Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
Tested-by: Fabian Ebner <f.ebner@proxmox.com>
Commit a1dfeff3a8 changed the behavior
for Replication::prepare with last_sync=0, so use last_sync=1 instead.
Signed-off-by: Fabian Ebner <f.ebner@proxmox.com>
See [0] for the details. The call tree for the variants is
lock_config -> lock_config_full -> lock_config_mode
so it is sufficient to adapt lock_config_mode.
[0]: https://bugzilla.proxmox.com/show_bug.cgi?id=2682
Suggested-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
Signed-off-by: Fabian Ebner <f.ebner@proxmox.com>
If a variable is defined and assigned in a conditional statement, it
is not defined behavior in Perl.
For more information about this behaviour see
https://perldoc.perl.org/perlsyn.html#Statement-Modifiers
> NOTE: The behaviour of a my, state, or our modified with a
> statement modifier conditional or loop construct (for example,
> `my $x if ...`) is undefined.
> The value of the my variable may be undef, any previously assigned
> value, or possibly anything else.
> Don't rely on it. Future versions of perl might do something
> different from the version of perl you try it out on. Here be
> dragons."
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
Introduce a parameter $opts to allow for better control of which
keys/volumes to use for the iteration and ability to reverse the order.
Also, allow extra parameters for the function.
Removes the '__snapshot'-prefix for future use from outside the module.
Signed-off-by: Fabian Ebner <f.ebner@proxmox.com>
or else the Exports will not work
found by hotplugging nics with current master from qemu-server
which resulted in a
'undefined subroutine &PVE::QemuServer::safe_string_ne'
Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
Aaron clarified that one documented element actually slipped through
and won't be returned.
Also firx the mixed tab/space indentation, for such comments we can
be pretty liberal and I just went with the two spaces per level, as
some part already had that.
Clarify that both array and hash are refs.
[0]: https://pve.proxmox.com/pipermail/pve-devel/2020-March/042070.html
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
allows partial fast plugging of functions as defined in the
$partial_fast_plug_option in qemuserver (and possibly lxc later on)
Signed-off-by: Oguz Bektas <o.bektas@proxmox.com>
move the safe_string_ne and safe_num_ne functions to guesthelpers to
remove duplicate code.
add the new safe_boolean_ne and typesafe_ne helper functions
also add them in @EXPORT_OK
Signed-off-by: Oguz Bektas <o.bektas@proxmox.com>
allows us to reuse this for clone, where we want to create a "clone"
locked config for the target guest.
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
pull out $conf->{pending} in a intermediate variable.
While for now only a force key could be in a pending delete value it
still is completely wrong to say the whole hash value is thus $force.
Fix that by omitting that intermediate variable completely and copy
over directly from the source hash.
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
return $conf for tests, use intermediate variable for
$conf->{pending}, which besides shorter lines avoids also the
autovification of $config stuff.
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>