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;