diff --git a/PVE/Storage/ZFSPoolPlugin.pm b/PVE/Storage/ZFSPoolPlugin.pm index 7dc7d3e..69b05aa 100644 --- a/PVE/Storage/ZFSPoolPlugin.pm +++ b/PVE/Storage/ZFSPoolPlugin.pm @@ -180,13 +180,11 @@ sub alloc_image { $name = $class->zfs_find_free_diskname($storeid, $scfg, $vmid) if !$name; $class->zfs_create_zvol($scfg, $name, $size); - run_command ("udevadm trigger --subsystem-match block"); - run_command ("udevadm settle --timeout 5"); - - for (1..10) { - last if -e "/dev/zvol/$scfg->{pool}/$name" ; - Time::HiRes::usleep(100); - } + + my $devname = "/dev/zvol/$scfg->{pool}/$name"; + + run_command("udevadm trigger --subsystem-match block"); + system("udevadm settle --timeout 10 --exit-if-exists=${devname}"); return $name; }