use PVE::Diskmanage;
use PVE::JSONSchema qw(get_standard_option);
use PVE::API2::Storage::Config;
-use PVE::Tools qw(lock_file);
+use PVE::Tools qw(lock_file run_command);
use PVE::RPCEnvironment;
use PVE::RESTHandler;
my $node = $param->{node};
$dev = PVE::Diskmanage::verify_blockdev_path($dev);
- PVE::Diskmanage::check_unused($dev);
+ PVE::Diskmanage::assert_disk_unused($dev);
+ PVE::Storage::assert_sid_unused($name) if $param->{add_storage};
my $worker = sub {
PVE::Diskmanage::locked_disk_action(sub {
+ PVE::Diskmanage::assert_disk_unused($dev);
+
+ if (PVE::Diskmanage::is_partition($dev)) {
+ eval { PVE::Diskmanage::change_parttype($dev, '8E00'); };
+ warn $@ if $@;
+ }
+
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 $@;
+
if ($param->{add_storage}) {
my $storage_params = {
type => 'lvm',