]> git.proxmox.com Git - pve-storage.git/blobdiff - PVE/API2/Disks/LVM.pm
test: also pass format for backing base image
[pve-storage.git] / PVE / API2 / Disks / LVM.pm
index 009ee0d46ba0bb2f4a84a29f1d9c0ab4de37efb5..885e02b585c5059118345fd7423e033509e54aeb 100644 (file)
@@ -7,7 +7,7 @@ use PVE::Storage::LVMPlugin;
 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;
@@ -149,12 +149,26 @@ __PACKAGE__->register_method ({
        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',