From 26082b7dafe7ca8d0b12125c881c62658606cae7 Mon Sep 17 00:00:00 2001 From: Fabian Ebner Date: Mon, 25 Oct 2021 15:47:47 +0200 Subject: [PATCH] diskmanage: add helper for udev workaround to avoid duplication. Current callers pass along at least one device, but anticipate future callers that might call with the empty list. Do nothing in that case, rather than triggering everything. Signed-off-by: Fabian Ebner --- PVE/API2/Disks.pm | 7 +------ PVE/API2/Disks/Directory.pm | 6 +----- PVE/API2/Disks/LVM.pm | 6 +----- PVE/API2/Disks/LVMThin.pm | 6 +----- PVE/API2/Disks/ZFS.pm | 6 +----- PVE/Diskmanage.pm | 11 +++++++++++ 6 files changed, 16 insertions(+), 26 deletions(-) diff --git a/PVE/API2/Disks.pm b/PVE/API2/Disks.pm index 25c9ded..b618057 100644 --- a/PVE/API2/Disks.pm +++ b/PVE/API2/Disks.pm @@ -306,12 +306,7 @@ __PACKAGE__->register_method ({ my $worker = sub { PVE::Diskmanage::wipe_blockdev($disk); - - # FIXME: Remove once we depend on systemd >= v249. - # Work around udev bug https://github.com/systemd/systemd/issues/18525 to ensure the - # udev database is updated. - eval { run_command(['udevadm', 'trigger', $disk]); }; - warn $@ if $@; + PVE::Diskmanage::udevadm_trigger($disk); }; my $basename = basename($disk); # avoid '/' in the ID diff --git a/PVE/API2/Disks/Directory.pm b/PVE/API2/Disks/Directory.pm index 36cebbc..e9b05be 100644 --- a/PVE/API2/Disks/Directory.pm +++ b/PVE/API2/Disks/Directory.pm @@ -275,11 +275,7 @@ __PACKAGE__->register_method ({ $write_ini->($ini, $mountunitpath); - # FIXME: Remove once we depend on systemd >= v249. - # Work around udev bug https://github.com/systemd/systemd/issues/18525 to ensure the - # udev database is updated and the $uuid_path symlink is actually created! - eval { run_command(['udevadm', 'trigger', $part]); }; - warn $@ if $@; + PVE::Diskmanage::udevadm_trigger($part); run_command(['systemctl', 'daemon-reload']); run_command(['systemctl', 'enable', $mountunitname]); diff --git a/PVE/API2/Disks/LVM.pm b/PVE/API2/Disks/LVM.pm index ee9e282..1b88af2 100644 --- a/PVE/API2/Disks/LVM.pm +++ b/PVE/API2/Disks/LVM.pm @@ -163,11 +163,7 @@ __PACKAGE__->register_method ({ PVE::Storage::LVMPlugin::lvm_create_volume_group($dev, $name); - # FIXME: Remove once we depend on systemd >= v249. - # Work around udev bug https://github.com/systemd/systemd/issues/18525 to ensure the - # udev database is updated. - eval { run_command(['udevadm', 'trigger', $dev]); }; - warn $@ if $@; + PVE::Diskmanage::udevadm_trigger($dev); if ($param->{add_storage}) { my $storage_params = { diff --git a/PVE/API2/Disks/LVMThin.pm b/PVE/API2/Disks/LVMThin.pm index 52f3062..23f262a 100644 --- a/PVE/API2/Disks/LVMThin.pm +++ b/PVE/API2/Disks/LVMThin.pm @@ -141,11 +141,7 @@ __PACKAGE__->register_method ({ $name ]); - # FIXME: Remove once we depend on systemd >= v249. - # Work around udev bug https://github.com/systemd/systemd/issues/18525 to ensure the - # udev database is updated. - eval { run_command(['udevadm', 'trigger', $dev]); }; - warn $@ if $@; + PVE::Diskmanage::udevadm_trigger($dev); if ($param->{add_storage}) { my $storage_params = { diff --git a/PVE/API2/Disks/ZFS.pm b/PVE/API2/Disks/ZFS.pm index e8d5e7c..e892712 100644 --- a/PVE/API2/Disks/ZFS.pm +++ b/PVE/API2/Disks/ZFS.pm @@ -426,11 +426,7 @@ __PACKAGE__->register_method ({ run_command($cmd); } - # FIXME: Remove once we depend on systemd >= v249. - # Work around udev bug https://github.com/systemd/systemd/issues/18525 to ensure the - # udev database is updated. - eval { run_command(['udevadm', 'trigger', $devs->@*]); }; - warn $@ if $@; + PVE::Diskmanage::udevadm_trigger($devs->@*); if ($param->{add_storage}) { my $storage_params = { diff --git a/PVE/Diskmanage.pm b/PVE/Diskmanage.pm index 18459f9..d67cc6b 100644 --- a/PVE/Diskmanage.pm +++ b/PVE/Diskmanage.pm @@ -966,4 +966,15 @@ sub wipe_blockdev { } } +# FIXME: Remove once we depend on systemd >= v249. +# Work around udev bug https://github.com/systemd/systemd/issues/18525 ensuring database is updated. +sub udevadm_trigger { + my @devs = @_; + + return if scalar(@devs) == 0; + + eval { run_command(['udevadm', 'trigger', @devs]); }; + warn $@ if $@; +} + 1;