On 2/19/20 5:07 PM, Oguz Bektas wrote: > adds a loop after the main fastplug loop, to check if any of the options > are partially fast pluggable. > > these are defined in $partial_fast_plug_option > > Signed-off-by: Oguz Bektas <o.bek...@proxmox.com> > --- > > v1->v2: > * set $changes according to partial_fast_plug result as well as fast_plug > result > * do cleanup_pending before writing fastplug changes > > > > PVE/QemuConfig.pm | 7 +++++++ > PVE/QemuServer.pm | 19 +++++++++++++++++++ > 2 files changed, 26 insertions(+) > > diff --git a/PVE/QemuConfig.pm b/PVE/QemuConfig.pm > index 1ba728a..d1727b2 100644 > --- a/PVE/QemuConfig.pm > +++ b/PVE/QemuConfig.pm > @@ -399,6 +399,13 @@ sub __snapshot_foreach_volume { > > PVE::QemuServer::foreach_drive($conf, $func); > } > + > +sub get_partial_fast_plug_option { > + my ($class) = @_; > + > + return $PVE::QemuServer::partial_fast_plug_option; > +} > + > # END implemented abstract methods from PVE::AbstractConfig > > 1; > diff --git a/PVE/QemuServer.pm b/PVE/QemuServer.pm > index 44d0dee..8a689a0 100644 > --- a/PVE/QemuServer.pm > +++ b/PVE/QemuServer.pm > @@ -4732,6 +4732,18 @@ my $fast_plug_option = { > 'tags' => 1, > }; > > +# name of opt > +# -> fmt -> format variable > +# -> properties -> fastpluggable options hash > +our $partial_fast_plug_option = { > + agent => { > + fmt => $agent_fmt, > + properties => { > + fstrim_cloned_disks => 1 > + }, > + }, > +};
this belongs solely in the get_partial_fast_plug_option method, I do not want to tighten the cyclic use of both modules and it's not required here. > + > # hotplug changes in [PENDING] > # $selection hash can be used to only apply specified options, for > # example: { cores => 1 } (only apply changed 'cores') > @@ -4761,7 +4773,14 @@ sub vmconfig_hotplug_pending { > } > } > > + foreach my $opt (keys %{$conf->{pending}}) { > + if ($partial_fast_plug_option->{$opt}) { > + $changes ||= PVE::QemuConfig->partial_fast_plug($conf, $opt); > + } > + } with my followup for the guest-common series where I early return with 0 (no change) if no partial_fast_plug_option is set for $opt you could just do: for my $opt (keys %{$conf->{pending}}) { $changes ||= PVE::QemuConfig->partial_fast_plug($conf, $opt); } This avoids a split of logic between here and the guest common method, i.e., untangles spaghetti code a bit :) > + > if ($changes) { > + PVE::QemuConfig->cleanup_pending($conf); > PVE::QemuConfig->write_config($vmid, $conf); > } > > _______________________________________________ pve-devel mailing list pve-devel@pve.proxmox.com https://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel