Gave both patches a spin and they work fine on first glance.

We should probably assign a fixed PCI bus/addr to the NVMe devices though (same as we do for SCSI and AHCI hardware with print_pci_addr somewhere in the depths of config_to_command).

On 5/13/20 5:36 PM, Oguz Bektas wrote:
now we can add nvme drives;

nvme0: local-lvm:vm-103-disk-0,size=32G

max number is 8

Signed-off-by: Oguz Bektas <o.bek...@proxmox.com>
---
  PVE/QemuServer.pm       | 20 +++++++++++++++++---
  PVE/QemuServer/Drive.pm | 21 +++++++++++++++++++++
  2 files changed, 38 insertions(+), 3 deletions(-)

diff --git a/PVE/QemuServer.pm b/PVE/QemuServer.pm
index dcf05df..441d209 100644
--- a/PVE/QemuServer.pm
+++ b/PVE/QemuServer.pm
@@ -406,7 +406,7 @@ EODESC
        optional => 1,
        type => 'string', format => 'pve-qm-bootdisk',
        description => "Enable booting from specified disk.",
-       pattern => '(ide|sata|scsi|virtio)\d+',
+       pattern => '(ide|sata|scsi|virtio|nvme)\d+',
      },
      smp => {
        optional => 1,
@@ -1424,7 +1424,11 @@ sub print_drivedevice_full {
            $device .= ",rotation_rate=1";
        }
        $device .= ",wwn=$drive->{wwn}" if $drive->{wwn};
-
+    } elsif ($drive->{interface} eq 'nvme') {
+       my $maxdev = $PVE::QemuServer::Drive::MAX_NVME_DISKS;

$maxdev is not used anywhere?

+       my $path = $drive->{file};
+       $drive->{serial} = "$drive->{interface}$drive->{index}"; # serial is 
mandatory for nvme
+       $device = "nvme,drive=drive-$drive->{interface}$drive->{index}";
      } elsif ($drive->{interface} eq 'ide' || $drive->{interface} eq 'sata') {
        my $maxdev = ($drive->{interface} eq 'sata') ? 
$PVE::QemuServer::Drive::MAX_SATA_DISKS : 2;
        my $controller = int($drive->{index} / $maxdev);
>
> [...]

_______________________________________________
pve-devel mailing list
pve-devel@pve.proxmox.com
https://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel

Reply via email to