From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: <pve-devel-bounces@lists.proxmox.com> Received: from firstgate.proxmox.com (firstgate.proxmox.com [212.224.123.68]) by lore.proxmox.com (Postfix) with ESMTPS id 3AE0B1FF15E for <inbox@lore.proxmox.com>; Tue, 3 Jun 2025 13:05:10 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 38A7817253; Tue, 3 Jun 2025 13:05:26 +0200 (CEST) To: pve-devel@lists.proxmox.com Date: Tue, 3 Jun 2025 09:55:37 +0200 In-Reply-To: <20250603075558.627850-1-alexandre.derumier@groupe-cyllene.com> References: <20250603075558.627850-1-alexandre.derumier@groupe-cyllene.com> X-Mailman-Approved-At: Tue, 03 Jun 2025 13:05:24 +0200 MIME-Version: 1.0 Message-ID: <mailman.237.1748948724.395.pve-devel@lists.proxmox.com> List-Id: Proxmox VE development discussion <pve-devel.lists.proxmox.com> List-Post: <mailto:pve-devel@lists.proxmox.com> From: Alexandre Derumier via pve-devel <pve-devel@lists.proxmox.com> Precedence: list Cc: Alexandre Derumier <alexandre.derumier@groupe-cyllene.com> X-Mailman-Version: 2.1.29 X-BeenThere: pve-devel@lists.proxmox.com List-Subscribe: <https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel>, <mailto:pve-devel-request@lists.proxmox.com?subject=subscribe> List-Unsubscribe: <https://lists.proxmox.com/cgi-bin/mailman/options/pve-devel>, <mailto:pve-devel-request@lists.proxmox.com?subject=unsubscribe> List-Archive: <http://lists.proxmox.com/pipermail/pve-devel/> Reply-To: Proxmox VE development discussion <pve-devel@lists.proxmox.com> List-Help: <mailto:pve-devel-request@lists.proxmox.com?subject=help> Subject: [pve-devel] [PATCH qemu-server 01/13] blockdev: cmdline: add blockdev syntax support Content-Type: multipart/mixed; boundary="===============7484685111218873872==" Errors-To: pve-devel-bounces@lists.proxmox.com Sender: "pve-devel" <pve-devel-bounces@lists.proxmox.com> --===============7484685111218873872== Content-Type: message/rfc822 Content-Disposition: inline Return-Path: <root@formationkvm1.odiso.net> X-Original-To: pve-devel@lists.proxmox.com Delivered-To: pve-devel@lists.proxmox.com Received: from firstgate.proxmox.com (firstgate.proxmox.com [212.224.123.68]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by lists.proxmox.com (Postfix) with ESMTPS id 6FB9BCB61A for <pve-devel@lists.proxmox.com>; Tue, 3 Jun 2025 09:56:42 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 9757110DEF for <pve-devel@lists.proxmox.com>; Tue, 3 Jun 2025 09:56:23 +0200 (CEST) Received: from bastiontest.odiso.net (unknown [185.151.190.228]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by firstgate.proxmox.com (Proxmox) with ESMTPS for <pve-devel@lists.proxmox.com>; Tue, 3 Jun 2025 09:56:09 +0200 (CEST) Received: from formationkvm1.odiso.net (unknown [10.11.201.57]) by bastiontest.odiso.net (Postfix) with ESMTP id 1651C860F0C; Tue, 3 Jun 2025 09:56:02 +0200 (CEST) Received: by formationkvm1.odiso.net (Postfix, from userid 0) id 3D95C110DBD4; Tue, 3 Jun 2025 09:56:01 +0200 (CEST) From: Alexandre Derumier <alexandre.derumier@groupe-cyllene.com> To: pve-devel@lists.proxmox.com Subject: [PATCH qemu-server 01/13] blockdev: cmdline: add blockdev syntax support Date: Tue, 3 Jun 2025 09:55:37 +0200 Message-Id: <20250603075558.627850-3-alexandre.derumier@groupe-cyllene.com> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250603075558.627850-1-alexandre.derumier@groupe-cyllene.com> References: <20250603075558.627850-1-alexandre.derumier@groupe-cyllene.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-SPAM-LEVEL: Spam detection results: 0 AWL 0.027 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% DMARC_NONE 0.1 DMARC none policy HEADER_FROM_DIFFERENT_DOMAINS 0.001 From and EnvelopeFrom 2nd level mail domains are different KAM_DMARC_NONE 0.25 DKIM has Failed or SPF has failed on the message and the domain has no DMARC policy KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment KAM_LAZY_DOMAIN_SECURITY 1 Sending domain does not have any anti-forgery methods RCVD_IN_VALIDITY_CERTIFIED_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to Validity was blocked. See https://knowledge.validity.com/hc/en-us/articles/20961730681243 for more information. RCVD_IN_VALIDITY_RPBL_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to Validity was blocked. See https://knowledge.validity.com/hc/en-us/articles/20961730681243 for more information. RCVD_IN_VALIDITY_SAFE_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to Validity was blocked. See https://knowledge.validity.com/hc/en-us/articles/20961730681243 for more information. RDNS_NONE 0.793 Delivered to internal network by a host with no rDNS SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_NONE 0.001 SPF: sender does not publish an SPF Record URIBL_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to URIBL was blocked. See http://wiki.apache.org/spamassassin/DnsBlocklists#dnsbl-block for more information. [virtiofs.pm,qemuserver.pm,8006.pid,qmphelpers.pm,metainfo.pm,drive.pm,cgroup.pm,cpuconfig.pm,pci.pm,spinics.net,blockdev.pm] X-Mailman-Approved-At: Tue, 03 Jun 2025 13:05:24 +0200 use the blockdev syntax for machine_type > 10.0 only The blockdev chain is: -throttle-group-node (drive-(ide|scsi|virtio)x) - format-node (fmt-drive-x) - file-node (file-drive -x) Volumes activation is done earlier now, at config_to_command, as we need it for file blockdev generation fixme: -desactivate volumes on config_to_command fail Signed-off-by: Alexandre Derumier <alexandre.derumier@groupe-cyllene.com> --- PVE/QemuServer.pm | 201 +++---------- PVE/QemuServer/Blockdev.pm | 272 ++++++++++++++++++ PVE/QemuServer/Drive.pm | 201 +++++++++++++ PVE/QemuServer/Makefile | 1 + test/cfg2cmd/bootorder-blockdev.conf | 15 + test/cfg2cmd/bootorder-blockdev.conf.cmd | 43 +++ test/cfg2cmd/bootorder-empty-blockdev.conf | 15 + .../cfg2cmd/bootorder-empty-blockdev.conf.cmd | 43 +++ test/cfg2cmd/bootorder-empty.conf | 1 + test/cfg2cmd/bootorder-empty.conf.cmd | 2 +- test/cfg2cmd/bootorder-legacy.conf | 1 + test/cfg2cmd/bootorder-legacy.conf.cmd | 2 +- test/cfg2cmd/bootorder.conf | 1 + test/cfg2cmd/bootorder.conf.cmd | 2 +- .../cputype-icelake-client-deprecation.conf | 3 - ...putype-icelake-client-deprecation.conf.cmd | 7 +- .../custom-cpu-model-defaults.conf.cmd | 2 +- test/cfg2cmd/efi-raw-template.conf.cmd | 2 +- test/cfg2cmd/efi-raw.conf | 1 + test/cfg2cmd/efi-raw.conf.cmd | 2 +- test/cfg2cmd/efi-secboot-and-tpm-q35.conf.cmd | 2 +- test/cfg2cmd/efi-secboot-and-tpm.conf.cmd | 2 +- test/cfg2cmd/efidisk-on-rbd.conf.cmd | 2 +- test/cfg2cmd/i440fx-viommu-virtio.conf.cmd | 2 +- test/cfg2cmd/ide-blockdev.conf | 14 + test/cfg2cmd/ide-blockdev.conf.cmd | 46 +++ test/cfg2cmd/ide.conf | 1 + test/cfg2cmd/ide.conf.cmd | 2 +- .../cfg2cmd/memory-hotplug-hugepages.conf.cmd | 2 +- test/cfg2cmd/memory-hotplug.conf.cmd | 2 +- test/cfg2cmd/memory-hugepages-1g.conf.cmd | 2 +- test/cfg2cmd/memory-hugepages-2m.conf.cmd | 2 +- test/cfg2cmd/minimal-defaults.conf.cmd | 2 +- test/cfg2cmd/netdev-7.1-multiqueues.conf.cmd | 2 +- test/cfg2cmd/netdev-7.1.conf.cmd | 2 +- test/cfg2cmd/q35-ide-blockdev.conf | 15 + test/cfg2cmd/q35-ide-blockdev.conf.cmd | 45 +++ test/cfg2cmd/q35-ide.conf | 2 +- test/cfg2cmd/q35-ide.conf.cmd | 3 +- .../q35-linux-hostpci-mapping.conf.cmd | 2 +- .../q35-linux-hostpci-multifunction.conf.cmd | 2 +- .../q35-linux-hostpci-template.conf.cmd | 5 +- ...q35-linux-hostpci-x-pci-overrides.conf.cmd | 4 +- test/cfg2cmd/q35-linux-hostpci.conf.cmd | 2 +- test/cfg2cmd/q35-simple.conf.cmd | 2 +- test/cfg2cmd/q35-viommu-intel.conf.cmd | 2 +- test/cfg2cmd/q35-viommu-virtio.conf.cmd | 2 +- test/cfg2cmd/seabios_serial.conf | 4 - test/cfg2cmd/seabios_serial.conf.cmd | 7 +- test/cfg2cmd/sev-es.conf.cmd | 2 +- test/cfg2cmd/sev-snp.conf.cmd | 2 +- test/cfg2cmd/sev-std.conf.cmd | 2 +- test/cfg2cmd/simple-btrfs.conf | 1 + test/cfg2cmd/simple-btrfs.conf.cmd | 2 +- .../simple-disk-passthrough-blockdev.conf | 15 + .../simple-disk-passthrough-blockdev.conf.cmd | 40 +++ test/cfg2cmd/simple-disk-passthrough.conf | 1 + test/cfg2cmd/simple-disk-passthrough.conf.cmd | 2 +- test/cfg2cmd/simple-rbd-blockdev.conf | 15 + test/cfg2cmd/simple-rbd-blockdev.conf.cmd | 38 +++ test/cfg2cmd/simple-rbd.conf | 1 + test/cfg2cmd/simple-rbd.conf.cmd | 2 +- test/cfg2cmd/simple-virtio-blk-blockdev.conf | 13 + .../simple-virtio-blk-blockdev.conf.cmd | 35 +++ test/cfg2cmd/simple-virtio-blk.conf | 1 + test/cfg2cmd/simple-virtio-blk.conf.cmd | 2 +- .../simple-zfs-over-iscsi-blockdev.conf | 14 + .../simple-zfs-over-iscsi-blockdev.conf.cmd | 35 +++ test/cfg2cmd/simple-zfs-over-iscsi.conf | 1 + test/cfg2cmd/simple-zfs-over-iscsi.conf.cmd | 2 +- test/cfg2cmd/simple1-blockdev.conf | 14 + test/cfg2cmd/simple1-blockdev.conf.cmd | 35 +++ test/cfg2cmd/simple1-template.conf.cmd | 13 +- test/cfg2cmd/simple1.conf | 1 + test/cfg2cmd/simple1.conf.cmd | 2 +- test/cfg2cmd/vnc-clipboard-spice.conf.cmd | 2 +- test/cfg2cmd/vnc-clipboard-std.conf.cmd | 2 +- test/run_config2command_tests.pl | 26 ++ 78 files changed, 1093 insertions(+), 227 deletions(-) create mode 100644 PVE/QemuServer/Blockdev.pm create mode 100644 test/cfg2cmd/bootorder-blockdev.conf create mode 100644 test/cfg2cmd/bootorder-blockdev.conf.cmd create mode 100644 test/cfg2cmd/bootorder-empty-blockdev.conf create mode 100644 test/cfg2cmd/bootorder-empty-blockdev.conf.cmd create mode 100644 test/cfg2cmd/ide-blockdev.conf create mode 100644 test/cfg2cmd/ide-blockdev.conf.cmd create mode 100644 test/cfg2cmd/q35-ide-blockdev.conf create mode 100644 test/cfg2cmd/q35-ide-blockdev.conf.cmd create mode 100644 test/cfg2cmd/simple-disk-passthrough-blockdev.conf create mode 100644 test/cfg2cmd/simple-disk-passthrough-blockdev.conf.cmd create mode 100644 test/cfg2cmd/simple-rbd-blockdev.conf create mode 100644 test/cfg2cmd/simple-rbd-blockdev.conf.cmd create mode 100644 test/cfg2cmd/simple-virtio-blk-blockdev.conf create mode 100644 test/cfg2cmd/simple-virtio-blk-blockdev.conf.cmd create mode 100644 test/cfg2cmd/simple-zfs-over-iscsi-blockdev.conf create mode 100644 test/cfg2cmd/simple-zfs-over-iscsi-blockdev.conf.cmd create mode 100644 test/cfg2cmd/simple1-blockdev.conf create mode 100644 test/cfg2cmd/simple1-blockdev.conf.cmd diff --git a/PVE/QemuServer.pm b/PVE/QemuServer.pm index 577959a4..383a5833 100644 --- a/PVE/QemuServer.pm +++ b/PVE/QemuServer.pm @@ -52,10 +52,11 @@ use PVE::QMPClient; use PVE::QemuConfig; use PVE::QemuConfig::NoWrite; use PVE::QemuServer::Helpers qw(config_aware_timeout min_version kvm_user_version windows_version); +use PVE::QemuServer::Blockdev qw(generate_drive_blockdev); use PVE::QemuServer::Cloudinit; use PVE::QemuServer::CGroup; use PVE::QemuServer::CPUConfig qw(print_cpu_device get_cpu_options get_cpu_bitness is_native_arch get_amd_sev_object get_amd_sev_type); -use PVE::QemuServer::Drive qw(is_valid_drivename checked_volume_format drive_is_cloudinit drive_is_cdrom drive_is_read_only parse_drive print_drive); +use PVE::QemuServer::Drive qw(is_valid_drivename checked_volume_format drive_is_cloudinit drive_is_cdrom drive_is_read_only parse_drive print_drive print_drive_commandline_full print_drive_throttle_group); use PVE::QemuServer::Machine; use PVE::QemuServer::Memory qw(get_current_memory); use PVE::QemuServer::MetaInfo; @@ -1308,6 +1309,8 @@ sub print_drivedevice_full { my $maxdev = 0; my $drive_id = PVE::QemuServer::Drive::get_drive_id($drive); + my $machine_version = extract_version($machine_type, kvm_user_version()); + if ($drive->{interface} eq 'virtio') { my $pciaddr = print_pci_addr("$drive_id", $bridges, $arch, $machine_type); $device = "virtio-blk-pci,drive=drive-$drive_id,id=${drive_id}${pciaddr}"; @@ -1317,7 +1320,6 @@ sub print_drivedevice_full { my ($maxdev, $controller, $controller_prefix) = scsihw_infos($conf, $drive); my $unit = $drive->{index} % $maxdev; - my $machine_version = extract_version($machine_type, kvm_user_version()); my $device_type = PVE::QemuServer::Drive::get_scsi_device_type( $drive, $storecfg, $machine_version); @@ -1367,7 +1369,15 @@ sub print_drivedevice_full { } else { $device .= ",bus=ahci$controller.$unit"; } - $device .= ",drive=drive-$drive_id,id=$drive_id"; + + if (min_version($machine_version, 10, 0, 0)) { + $device .= ",id=$drive_id"; + #with blockdev, empty cdrom device don't have any blockdev attached, so drive param can't be declared + #with drive=none (and throttle-filter can't be defined without media too) + $device .= ",drive=drive-$drive_id" if $device_type ne 'cd' || $drive->{file} ne 'none'; + } else { + $device .= ",drive=drive-$drive_id,id=$drive_id"; + } if ($device_type eq 'hd') { if (my $model = $drive->{model}) { @@ -1393,7 +1403,16 @@ sub print_drivedevice_full { $device .= ",serial=$serial"; } + if (min_version($machine_version, 10, 0, 0)) { + my $writecache = $drive->{cache} && $drive->{cache} =~ /^(?:none|writeback|unsafe)$/ ? "on" : "off"; + $device .= ",write-cache=$writecache" if $drive->{media} && $drive->{media} ne 'cdrom'; + + my @qemu_drive_options = qw(heads secs cyls trans rerror werror); + foreach my $o (@qemu_drive_options) { + $device .= ",$o=$drive->{$o}" if defined($drive->{$o}); + } + } return $device; } @@ -1411,154 +1430,6 @@ sub get_initiator_name { return $initiator; } -my sub storage_allows_io_uring_default { - my ($scfg, $cache_direct) = @_; - - # io_uring with cache mode writeback or writethrough on krbd will hang... - return if $scfg && $scfg->{type} eq 'rbd' && $scfg->{krbd} && !$cache_direct; - - # io_uring with cache mode writeback or writethrough on LVM will hang, without cache only - # sometimes, just plain disable... - return if $scfg && $scfg->{type} eq 'lvm'; - - # io_uring causes problems when used with CIFS since kernel 5.15 - # Some discussion: https://www.spinics.net/lists/linux-cifs/msg26734.html - return if $scfg && $scfg->{type} eq 'cifs'; - - return 1; -} - -my sub drive_uses_cache_direct { - my ($drive, $scfg) = @_; - - my $cache_direct = 0; - - if (my $cache = $drive->{cache}) { - $cache_direct = $cache =~ /^(?:off|none|directsync)$/; - } elsif (!drive_is_cdrom($drive) && !($scfg && $scfg->{type} eq 'btrfs' && !$scfg->{nocow})) { - $cache_direct = 1; - } - - return $cache_direct; -} - -sub print_drive_commandline_full { - my ($storecfg, $vmid, $drive, $live_restore_name, $io_uring) = @_; - - my $drive_id = PVE::QemuServer::Drive::get_drive_id($drive); - - my ($storeid) = PVE::Storage::parse_volume_id($drive->{file}, 1); - my $scfg = $storeid ? PVE::Storage::storage_config($storecfg, $storeid) : undef; - my $vtype = $storeid ? (PVE::Storage::parse_volname($storecfg, $drive->{file}))[0] : undef; - - my ($path, $format) = PVE::QemuServer::Drive::get_path_and_format( - $storecfg, $vmid, $drive, $live_restore_name); - - my $is_rbd = $path =~ m/^rbd:/; - - my $opts = ''; - my @qemu_drive_options = qw(heads secs cyls trans media cache rerror werror aio discard); - foreach my $o (@qemu_drive_options) { - $opts .= ",$o=$drive->{$o}" if defined($drive->{$o}); - } - - # snapshot only accepts on|off - if (defined($drive->{snapshot})) { - my $v = $drive->{snapshot} ? 'on' : 'off'; - $opts .= ",snapshot=$v"; - } - - if (defined($drive->{ro})) { # ro maps to QEMUs `readonly`, which accepts `on` or `off` only - $opts .= ",readonly=" . ($drive->{ro} ? 'on' : 'off'); - } - - foreach my $type (['', '-total'], [_rd => '-read'], [_wr => '-write']) { - my ($dir, $qmpname) = @$type; - if (my $v = $drive->{"mbps$dir"}) { - $opts .= ",throttling.bps$qmpname=".int($v*1024*1024); - } - if (my $v = $drive->{"mbps${dir}_max"}) { - $opts .= ",throttling.bps$qmpname-max=".int($v*1024*1024); - } - if (my $v = $drive->{"bps${dir}_max_length"}) { - $opts .= ",throttling.bps$qmpname-max-length=$v"; - } - if (my $v = $drive->{"iops${dir}"}) { - $opts .= ",throttling.iops$qmpname=$v"; - } - if (my $v = $drive->{"iops${dir}_max"}) { - $opts .= ",throttling.iops$qmpname-max=$v"; - } - if (my $v = $drive->{"iops${dir}_max_length"}) { - $opts .= ",throttling.iops$qmpname-max-length=$v"; - } - } - - if ($live_restore_name) { - $format = "rbd" if $is_rbd; - die "$drive_id: Proxmox Backup Server backed drive cannot auto-detect the format\n" - if !$format; - $opts .= ",format=alloc-track,file.driver=$format"; - } elsif ($format) { - $opts .= ",format=$format"; - } - - my $cache_direct = drive_uses_cache_direct($drive, $scfg); - - $opts .= ",cache=none" if !$drive->{cache} && $cache_direct; - - if (!$drive->{aio}) { - if ($io_uring && storage_allows_io_uring_default($scfg, $cache_direct)) { - # io_uring supports all cache modes - $opts .= ",aio=io_uring"; - } else { - # aio native works only with O_DIRECT - if($cache_direct) { - $opts .= ",aio=native"; - } else { - $opts .= ",aio=threads"; - } - } - } - - die "$drive_id: explicit media parameter is required for iso images\n" - if !defined($drive->{media}) && defined($vtype) && $vtype eq 'iso'; - - if (!drive_is_cdrom($drive)) { - my $detectzeroes; - if (defined($drive->{detect_zeroes}) && !$drive->{detect_zeroes}) { - $detectzeroes = 'off'; - } elsif ($drive->{discard}) { - $detectzeroes = $drive->{discard} eq 'on' ? 'unmap' : 'on'; - } else { - # This used to be our default with discard not being specified: - $detectzeroes = 'on'; - } - - # note: 'detect-zeroes' works per blockdev and we want it to persist - # after the alloc-track is removed, so put it on 'file' directly - my $dz_param = $live_restore_name ? "file.detect-zeroes" : "detect-zeroes"; - $opts .= ",$dz_param=$detectzeroes" if $detectzeroes; - } - - if ($live_restore_name) { - $opts .= ",backing=$live_restore_name"; - $opts .= ",auto-remove=on"; - } - - # my $file_param = $live_restore_name ? "file.file.filename" : "file"; - my $file_param = "file"; - if ($live_restore_name) { - # non-rbd drivers require the underlying file to be a separate block - # node, so add a second .file indirection - $file_param .= ".file" if !$is_rbd; - $file_param .= ".filename"; - } - my $pathinfo = $path ? "$file_param=$path," : ''; - - return "${pathinfo}if=none,id=drive-$drive->{interface}$drive->{index}$opts"; -} - sub print_pbs_blockdev { my ($pbs_conf, $pbs_name) = @_; my $blockdev = "driver=pbs,node-name=$pbs_name,read-only=on"; @@ -3899,6 +3770,7 @@ sub config_to_command { if (PVE::Storage::parse_volume_id($drive->{file}, 1)) { check_volume_storage_type($storecfg, $drive->{file}); + PVE::Storage::activate_volumes($storecfg, [$drive->{file}]); push @$vollist, $drive->{file}; } @@ -3960,13 +3832,22 @@ sub config_to_command { push @$devices, '-blockdev', $live_restore->{blockdev}; } - my $drive_cmd = print_drive_commandline_full( - $storecfg, $vmid, $drive, $live_blockdev_name, min_version($kvmver, 6, 0)); + if(min_version($machine_version, 10, 0, 0)) { + my $throttle_group = print_drive_throttle_group($drive); + push @$devices, '-object', $throttle_group if $throttle_group; - # extra protection for templates, but SATA and IDE don't support it.. - $drive_cmd .= ',readonly=on' if drive_is_read_only($conf, $drive); + # extra protection for templates, but SATA and IDE don't support it.. + $drive->{ro} = 1 if drive_is_read_only($conf, $drive); + my $blockdev = generate_drive_blockdev($storecfg, $drive, $live_blockdev_name); + push @$devices, '-blockdev', JSON->new->canonical->allow_nonref->encode($blockdev) if $blockdev; + + } else { + my $drive_cmd = print_drive_commandline_full( + $storecfg, $vmid, $drive, $live_blockdev_name, min_version($kvmver, 6, 0)); + $drive_cmd .= ',readonly=on' if drive_is_read_only($conf, $drive); + push @$devices, '-drive',$drive_cmd; + } - push @$devices, '-drive',$drive_cmd; push @$devices, '-device', print_drivedevice_full( $storecfg, $conf, $vmid, $drive, $bridges, $arch, $machine_type); }); @@ -5810,9 +5691,6 @@ sub vm_start_nolock { die $err; } - PVE::Storage::activate_volumes($storecfg, $vollist); - - my %silence_std_outs = (outfunc => sub {}, errfunc => sub {}); eval { run_command(['/bin/systemctl', 'reset-failed', "$vmid.scope"], %silence_std_outs) }; eval { run_command(['/bin/systemctl', 'stop', "$vmid.scope"], %silence_std_outs) }; @@ -6081,9 +5959,12 @@ sub vm_commandline { my $defaults = load_defaults(); - my $cmd = config_to_command($storecfg, $vmid, $conf, $defaults, $forcemachine, $forcecpu); + my ($cmd, $vollist) = (config_to_command($storecfg, $vmid, $conf, $defaults, $forcemachine, $forcecpu))[0,1]; + # if the vm is not running, we need to clean up the reserved/created devices if (!PVE::QemuServer::Helpers::vm_running_locally($vmid)) { + eval { PVE::Storage::deactivate_volumes($storecfg, $vollist); }; + warn $@ if $@; eval { cleanup_pci_devices($vmid, $conf) }; warn $@ if $@; } diff --git a/PVE/QemuServer/Blockdev.pm b/PVE/QemuServer/Blockdev.pm new file mode 100644 index 00000000..48d1821f --- /dev/null +++ b/PVE/QemuServer/Blockdev.pm @@ -0,0 +1,272 @@ +package PVE::QemuServer::Blockdev; + +use strict; +use warnings; + +use PVE::QemuServer::Drive qw(checked_volume_format drive_is_cdrom drive_uses_cache_direct get_drive_id get_iso_path storage_allows_io_uring_default); +use PVE::Storage; + +use base qw(Exporter); + +our @EXPORT_OK = qw( +generate_drive_blockdev +); + +sub encode_base62 { + my ($input) = @_; + my @chars = ('0'..'9', 'A'..'Z', 'a'..'z'); + my $base = 62; + my $value = 0; + + foreach my $byte (unpack('C*', $input)) { + $value = $value * 256 + $byte; + } + + my $result = ''; + while ($value > 0) { + $result = $chars[$value % $base] . $result; + $value = int($value / $base); + } + + return $result || '0'; +} + +sub encode_nodename { + my ($type, $volid, $snap) = @_; + + my $nodename = "$volid"; + $nodename .= "-$snap" if $snap; + $nodename = encode_base62(Digest::SHA::sha1($nodename)); + my $prefix = ""; + if ($type eq 'fmt') { + $prefix = 'f'; + } elsif ($type eq 'file') { + $prefix = 'e'; + } else { + die "wrong node type"; + } + #node-name start with an alpha character + return "$prefix-$nodename"; +} + +sub generate_blockdev_drive_aio { + my ($drive, $scfg) = @_; + + my $cache_direct = drive_uses_cache_direct($drive, $scfg); + $drive->{aio} = 'threads' if drive_is_cdrom($drive); + my $aio = $drive->{aio}; + if (!$aio) { + if (storage_allows_io_uring_default($scfg, $cache_direct)) { + # io_uring supports all cache modes + $aio = "io_uring"; + } else { + # aio native works only with O_DIRECT + if($cache_direct) { + $aio = "native"; + } else { + $aio = "threads"; + } + } + } + return $aio; +} + +sub generate_blockdev_drive_cache { + my ($drive, $scfg) = @_; + + my $cache_direct = drive_uses_cache_direct($drive, $scfg); + my $cache = {}; + $cache->{direct} = $cache_direct ? JSON::true : JSON::false; + $cache->{'no-flush'} = $drive->{cache} && $drive->{cache} eq 'unsafe' ? JSON::true : JSON::false; + return $cache; +} + +sub generate_throttle_group { + my ($drive) = @_; + + my $drive_id = get_drive_id($drive); + + my $throttle_group = { id => "throttle-drive-$drive_id" }; + my $limits = {}; + + foreach my $type (['', '-total'], [_rd => '-read'], [_wr => '-write']) { + my ($dir, $qmpname) = @$type; + + if (my $v = $drive->{"mbps$dir"}) { + $limits->{"bps$qmpname"} = int($v*1024*1024); + } + if (my $v = $drive->{"mbps${dir}_max"}) { + $limits->{"bps$qmpname-max"} = int($v*1024*1024); + } + if (my $v = $drive->{"bps${dir}_max_length"}) { + $limits->{"bps$qmpname-max-length"} = int($v) + } + if (my $v = $drive->{"iops${dir}"}) { + $limits->{"iops$qmpname"} = int($v); + } + if (my $v = $drive->{"iops${dir}_max"}) { + $limits->{"iops$qmpname-max"} = int($v); + } + if (my $v = $drive->{"iops${dir}_max_length"}) { + $limits->{"iops$qmpname-max-length"} = int($v); + } + } + + $throttle_group->{limits} = $limits; + + return $throttle_group; +} + +sub print_drive_throttle_group { + my ($drive) = @_; + + return if drive_is_cdrom($drive) && $drive->{file} eq 'none'; + + my $group = generate_throttle_group($drive); + $group->{'qom-type'} = "throttle-group"; + return JSON->new->canonical->allow_nonref->encode($group) +} + +sub generate_file_blockdev { + my ($storecfg, $drive, $snap, $nodename) = @_; + + my $volid = $drive->{file}; + my $drive_id = get_drive_id($drive); + my $blockdev = {}; + + my $scfg = undef; + my $path = $volid; + my $storeid = undef; + + ($storeid) = PVE::Storage::parse_volume_id($volid, 1); + my $vtype = $storeid ? (PVE::Storage::parse_volname($storecfg, $drive->{file}))[0] : undef; + die "$drive_id: explicit media parameter is required for iso images\n" + if !defined($drive->{media}) && defined($vtype) && $vtype eq 'iso'; + + if ($path =~ m/^nbd:(\S+):(\d+):exportname=(\S+)$/) { + my $server = { type => 'inet', host => $1, port => $2 }; + $blockdev = { driver => 'nbd', server => $server, export => $3 }; + } elsif($storeid) { + $blockdev = PVE::Storage::qemu_blockdev_options($storecfg, $volid, $snap); + $scfg = PVE::Storage::storage_config($storecfg, $storeid); + } elsif (drive_is_cdrom($drive)) { + $path = get_iso_path($storecfg, $volid); + my $driver = $path =~ m/^\/dev/ ? 'host_cdrom' : 'file'; + $blockdev = { driver => $driver, filename => $path }; + } elsif ($path =~ m/^\/dev/) { + $blockdev = { driver => 'host_device', filename => $path }; + } elsif ($path =~ m/^\//) { + $blockdev = { driver => 'file', filename => $path}; + } else { + die "unsupported path: $path\n"; + } + + $blockdev->{cache} = generate_blockdev_drive_cache($drive, $scfg); + #non-host qemu block driver (rbd, gluster,iscsi,..) don't have aio attribute + $blockdev->{aio} = generate_blockdev_drive_aio($drive, $scfg) if $blockdev->{filename}; + + ##discard && detect-zeroes + my $discard = 'ignore'; + if($drive->{discard}) { + $discard = $drive->{discard}; + $discard = 'unmap' if $discard eq 'on'; + } + $blockdev->{discard} = $discard if !drive_is_cdrom($drive); + + my $detect_zeroes; + if (defined($drive->{detect_zeroes}) && !$drive->{detect_zeroes}) { + $detect_zeroes = 'off'; + } elsif ($drive->{discard}) { + $detect_zeroes = $drive->{discard} eq 'on' ? 'unmap' : 'on'; + } else { + # This used to be our default with discard not being specified: + $detect_zeroes = 'on'; + } + $blockdev->{'detect-zeroes'} = $detect_zeroes if !drive_is_cdrom($drive); + + $nodename = encode_nodename('file', $volid, $snap) if !$nodename; + $blockdev->{'node-name'} = $nodename; + + return $blockdev; +} + +sub generate_format_blockdev { + my ($storecfg, $drive, $file, $snap, $nodename) = @_; + + my $volid = $drive->{file}; + #nbd don't support format blockdev, return the fileblockdev + return $file if $volid =~ /^nbd:/; + + my $scfg = undef; + $nodename = encode_nodename('fmt', $volid, $snap) if !$nodename; + + my $drive_id = get_drive_id($drive); + + if ($drive->{zeroinit}) { + #fixme how to handle zeroinit ? insert special blockdev filter ? + } + + my ($storeid, $volname) = PVE::Storage::parse_volume_id($volid, 1); + + # For PVE-managed volumes, use the format from the storage layer and prevent overrides via the + # drive's 'format' option. For unmanaged volumes, fallback to 'raw' to avoid auto-detection by + # QEMU. + my $format = undef; + if($storeid) { + $scfg = PVE::Storage::storage_config($storecfg, $storeid); + $format = checked_volume_format($storecfg, $volid); + if ($drive->{format} && $drive->{format} ne $format) { + die "drive '$drive->{interface}$drive->{index}' - volume '$volid'" + ." - 'format=$drive->{format}' option different from storage format '$format'\n"; + } + } else { + $format = $drive->{format} // 'raw'; + } + + my $readonly = defined($drive->{ro}) ? JSON::true : JSON::false; + + #libvirt define cache option on both format && file + my $cache = generate_blockdev_drive_cache($drive, $scfg); + + my $blockdev = { 'node-name' => $nodename, driver => $format, file => $file, cache => $cache, 'read-only' => $readonly }; + + return $blockdev; +} + +sub generate_drive_blockdev { + my ($storecfg, $drive, $live_restore_name) = @_; + + my $volid = $drive->{file}; + my $drive_id = get_drive_id($drive); + + if (drive_is_cdrom($drive)) { + die "$drive_id: cannot back cdrom drive with a live restore image\n" if $live_restore_name; + + my $path = get_iso_path($storecfg, $volid); + #throttle-filter can't be defined without attached disk + return if !$path; + $drive->{ro} = 1; + } + + my $blockdev_file = generate_file_blockdev($storecfg, $drive); + my $blockdev_format = generate_format_blockdev($storecfg, $drive, $blockdev_file); + + my $blockdev_live_restore = undef; + if ($live_restore_name) { + die "$drive_id: Proxmox Backup Server backed drive cannot auto-detect the format\n" + if !$drive->{format}; + + $blockdev_live_restore = { 'node-name' => "liverestore-drive-$drive_id", + backing => $live_restore_name, + 'auto-remove' => 'on', format => "alloc-track", + file => $blockdev_format }; + } + + #this is the topfilter entry point, use $drive-drive_id as nodename + my $blockdev_throttle = { driver => "throttle", 'node-name' => "drive-$drive_id", 'throttle-group' => "throttle-drive-$drive_id" }; + #put liverestore filter between throttle && format filter + $blockdev_throttle->{file} = $live_restore_name ? $blockdev_live_restore : $blockdev_format; + return $blockdev_throttle, +} + +1; diff --git a/PVE/QemuServer/Drive.pm b/PVE/QemuServer/Drive.pm index 473970c1..f2b70e48 100644 --- a/PVE/QemuServer/Drive.pm +++ b/PVE/QemuServer/Drive.pm @@ -21,9 +21,15 @@ checked_volume_format drive_is_cloudinit drive_is_cdrom drive_is_read_only +drive_uses_cache_direct +get_drive_id +get_iso_path get_scsi_devicetype parse_drive print_drive +print_drive_commandline_full +print_drive_throttle_group +storage_allows_io_uring_default ); our $QEMU_FORMAT_RE = qr/raw|qcow|qcow2|qed|vmdk|cloop/; @@ -998,4 +1004,199 @@ sub get_scsi_device_type { return $devicetype; } + +sub storage_allows_io_uring_default { + my ($scfg, $cache_direct) = @_; + + # io_uring with cache mode writeback or writethrough on krbd will hang... + return if $scfg && $scfg->{type} eq 'rbd' && $scfg->{krbd} && !$cache_direct; + + # io_uring with cache mode writeback or writethrough on LVM will hang, without cache only + # sometimes, just plain disable... + return if $scfg && $scfg->{type} eq 'lvm'; + + # io_uring causes problems when used with CIFS since kernel 5.15 + # Some discussion: https://www.spinics.net/lists/linux-cifs/msg26734.html + return if $scfg && $scfg->{type} eq 'cifs'; + + return 1; +} + +sub drive_uses_cache_direct { + my ($drive, $scfg) = @_; + + my $cache_direct = 0; + + if (my $cache = $drive->{cache}) { + $cache_direct = $cache =~ /^(?:off|none|directsync)$/; + } elsif (!drive_is_cdrom($drive) && !($scfg && $scfg->{type} eq 'btrfs' && !$scfg->{nocow})) { + $cache_direct = 1; + } + + return $cache_direct; +} + +sub print_drive_commandline_full { + my ($storecfg, $vmid, $drive, $live_restore_name, $io_uring) = @_; + + my $drive_id = get_drive_id($drive); + + my ($storeid) = PVE::Storage::parse_volume_id($drive->{file}, 1); + my $scfg = $storeid ? PVE::Storage::storage_config($storecfg, $storeid) : undef; + my $vtype = $storeid ? (PVE::Storage::parse_volname($storecfg, $drive->{file}))[0] : undef; + + my ($path, $format) = get_path_and_format( + $storecfg, $vmid, $drive, $live_restore_name); + + my $is_rbd = $path =~ m/^rbd:/; + + my $opts = ''; + my @qemu_drive_options = qw(heads secs cyls trans media cache rerror werror aio discard); + foreach my $o (@qemu_drive_options) { + $opts .= ",$o=$drive->{$o}" if defined($drive->{$o}); + } + + # snapshot only accepts on|off + if (defined($drive->{snapshot})) { + my $v = $drive->{snapshot} ? 'on' : 'off'; + $opts .= ",snapshot=$v"; + } + + if (defined($drive->{ro})) { # ro maps to QEMUs `readonly`, which accepts `on` or `off` only + $opts .= ",readonly=" . ($drive->{ro} ? 'on' : 'off'); + } + + foreach my $type (['', '-total'], [_rd => '-read'], [_wr => '-write']) { + my ($dir, $qmpname) = @$type; + if (my $v = $drive->{"mbps$dir"}) { + $opts .= ",throttling.bps$qmpname=".int($v*1024*1024); + } + if (my $v = $drive->{"mbps${dir}_max"}) { + $opts .= ",throttling.bps$qmpname-max=".int($v*1024*1024); + } + if (my $v = $drive->{"bps${dir}_max_length"}) { + $opts .= ",throttling.bps$qmpname-max-length=$v"; + } + if (my $v = $drive->{"iops${dir}"}) { + $opts .= ",throttling.iops$qmpname=$v"; + } + if (my $v = $drive->{"iops${dir}_max"}) { + $opts .= ",throttling.iops$qmpname-max=$v"; + } + if (my $v = $drive->{"iops${dir}_max_length"}) { + $opts .= ",throttling.iops$qmpname-max-length=$v"; + } + } + + if ($live_restore_name) { + $format = "rbd" if $is_rbd; + die "$drive_id: Proxmox Backup Server backed drive cannot auto-detect the format\n" + if !$format; + $opts .= ",format=alloc-track,file.driver=$format"; + } elsif ($format) { + $opts .= ",format=$format"; + } + + my $cache_direct = drive_uses_cache_direct($drive, $scfg); + + $opts .= ",cache=none" if !$drive->{cache} && $cache_direct; + + if (!$drive->{aio}) { + if ($io_uring && storage_allows_io_uring_default($scfg, $cache_direct)) { + # io_uring supports all cache modes + $opts .= ",aio=io_uring"; + } else { + # aio native works only with O_DIRECT + if($cache_direct) { + $opts .= ",aio=native"; + } else { + $opts .= ",aio=threads"; + } + } + } + + die "$drive_id: explicit media parameter is required for iso images\n" + if !defined($drive->{media}) && defined($vtype) && $vtype eq 'iso'; + + if (!drive_is_cdrom($drive)) { + my $detectzeroes; + if (defined($drive->{detect_zeroes}) && !$drive->{detect_zeroes}) { + $detectzeroes = 'off'; + } elsif ($drive->{discard}) { + $detectzeroes = $drive->{discard} eq 'on' ? 'unmap' : 'on'; + } else { + # This used to be our default with discard not being specified: + $detectzeroes = 'on'; + } + + # note: 'detect-zeroes' works per blockdev and we want it to persist + # after the alloc-track is removed, so put it on 'file' directly + my $dz_param = $live_restore_name ? "file.detect-zeroes" : "detect-zeroes"; + $opts .= ",$dz_param=$detectzeroes" if $detectzeroes; + } + + if ($live_restore_name) { + $opts .= ",backing=$live_restore_name"; + $opts .= ",auto-remove=on"; + } + + # my $file_param = $live_restore_name ? "file.file.filename" : "file"; + my $file_param = "file"; + if ($live_restore_name) { + # non-rbd drivers require the underlying file to be a separate block + # node, so add a second .file indirection + $file_param .= ".file" if !$is_rbd; + $file_param .= ".filename"; + } + my $pathinfo = $path ? "$file_param=$path," : ''; + + return "${pathinfo}if=none,id=drive-$drive->{interface}$drive->{index}$opts"; +} + +sub generate_throttle_group { + my ($drive) = @_; + + my $drive_id = get_drive_id($drive); + + my $throttle_group = { id => "throttle-drive-$drive_id" }; + my $limits = {}; + + foreach my $type (['', '-total'], [_rd => '-read'], [_wr => '-write']) { + my ($dir, $qmpname) = @$type; + + if (my $v = $drive->{"mbps$dir"}) { + $limits->{"bps$qmpname"} = int($v*1024*1024); + } + if (my $v = $drive->{"mbps${dir}_max"}) { + $limits->{"bps$qmpname-max"} = int($v*1024*1024); + } + if (my $v = $drive->{"bps${dir}_max_length"}) { + $limits->{"bps$qmpname-max-length"} = int($v) + } + if (my $v = $drive->{"iops${dir}"}) { + $limits->{"iops$qmpname"} = int($v); + } + if (my $v = $drive->{"iops${dir}_max"}) { + $limits->{"iops$qmpname-max"} = int($v); + } + if (my $v = $drive->{"iops${dir}_max_length"}) { + $limits->{"iops$qmpname-max-length"} = int($v); + } + } + + $throttle_group->{limits} = $limits; + + return $throttle_group; +} + +sub print_drive_throttle_group { + my ($drive) = @_; + + return if drive_is_cdrom($drive) && $drive->{file} eq 'none'; + + my $group = generate_throttle_group($drive); + $group->{'qom-type'} = "throttle-group"; + return JSON->new->canonical->allow_nonref->encode($group) +} + 1; diff --git a/PVE/QemuServer/Makefile b/PVE/QemuServer/Makefile index 8bcd484e..248e8859 100644 --- a/PVE/QemuServer/Makefile +++ b/PVE/QemuServer/Makefile @@ -11,6 +11,7 @@ SOURCES=PCI.pm \ MetaInfo.pm \ CPUConfig.pm \ CGroup.pm \ + Blockdev.pm \ Drive.pm \ QMPHelpers.pm \ Virtiofs.pm diff --git a/test/cfg2cmd/bootorder-blockdev.conf b/test/cfg2cmd/bootorder-blockdev.conf new file mode 100644 index 00000000..7991065d --- /dev/null +++ b/test/cfg2cmd/bootorder-blockdev.conf @@ -0,0 +1,15 @@ +# TEST: Test for a specific bootorder given by 'boot: order=' property +cores: 3 +boot: order=virtio1;net0;scsi4;ide2 +ide2: none,media=cdrom +memory: 768 +name: simple +net0: virtio=A2:C0:43:77:08:A0,bridge=vmbr0 +numa: 0 +ostype: l26 +scsi4: local:8006/vm-8006-disk-0.qcow2,discard=on,size=104858K +smbios1: uuid=7b10d7af-b932-4c66-b2c3-3996152ec465 +sockets: 1 +virtio0: local:8006/vm-8006-disk-0.qcow2,discard=on,iothread=1,size=104858K +virtio1: local:8006/vm-8006-disk-0.qcow2,discard=on,iothread=1,size=104858K +vmgenid: c773c261-d800-4348-9f5d-167fadd53cf8 diff --git a/test/cfg2cmd/bootorder-blockdev.conf.cmd b/test/cfg2cmd/bootorder-blockdev.conf.cmd new file mode 100644 index 00000000..435ac280 --- /dev/null +++ b/test/cfg2cmd/bootorder-blockdev.conf.cmd @@ -0,0 +1,43 @@ +/usr/bin/kvm \ + -id 8006 \ + -name 'simple,debug-threads=on' \ + -no-shutdown \ + -chardev 'socket,id=qmp,path=/var/run/qemu-server/8006.qmp,server=on,wait=off' \ + -mon 'chardev=qmp,mode=control' \ + -chardev 'socket,id=qmp-event,path=/var/run/qmeventd.sock,reconnect-ms=5000' \ + -mon 'chardev=qmp-event,mode=control' \ + -pidfile /var/run/qemu-server/8006.pid \ + -daemonize \ + -smbios 'type=1,uuid=7b10d7af-b932-4c66-b2c3-3996152ec465' \ + -smp '3,sockets=1,cores=3,maxcpus=3' \ + -nodefaults \ + -boot 'menu=on,strict=on,reboot-timeout=1000,splash=/usr/share/qemu-server/bootsplash.jpg' \ + -vnc 'unix:/var/run/qemu-server/8006.vnc,password=on' \ + -cpu kvm64,enforce,+kvm_pv_eoi,+kvm_pv_unhalt,+lahf_lm,+sep \ + -m 768 \ + -object 'iothread,id=iothread-virtio0' \ + -object 'iothread,id=iothread-virtio1' \ + -global 'PIIX4_PM.disable_s3=1' \ + -global 'PIIX4_PM.disable_s4=1' \ + -device 'pci-bridge,id=pci.1,chassis_nr=1,bus=pci.0,addr=0x1e' \ + -device 'pci-bridge,id=pci.2,chassis_nr=2,bus=pci.0,addr=0x1f' \ + -device 'vmgenid,guid=c773c261-d800-4348-9f5d-167fadd53cf8' \ + -device 'piix3-usb-uhci,id=uhci,bus=pci.0,addr=0x1.0x2' \ + -device 'usb-tablet,id=tablet,bus=uhci.0,port=1' \ + -device 'VGA,id=vga,bus=pci.0,addr=0x2' \ + -device 'virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x3,free-page-reporting=on' \ + -iscsi 'initiator-name=iqn.1993-08.org.debian:01:aabbccddeeff' \ + -device 'ide-cd,bus=ide.1,unit=0,id=ide2,bootindex=103' \ + -device 'lsi,id=scsihw0,bus=pci.0,addr=0x5' \ + -object '{"id":"throttle-drive-scsi4","limits":{},"qom-type":"throttle-group"}' \ + -blockdev '{"driver":"throttle","file":{"cache":{"direct":true,"no-flush":false},"driver":"qcow2","file":{"aio":"io_uring","cache":{"direct":true,"no-flush":false},"detect-zeroes":"unmap","discard":"unmap","driver":"file","filename":"/var/lib/vz/images/8006/vm-8006-disk-0.qcow2","node-name":"e-IQHs2Stp3mYmKYSGmUACmUu8i6u"},"node-name":"f-IQHs2Stp3mYmKYSGmUACmUu8i6u","read-only":false},"node-name":"drive-scsi4","throttle-group":"throttle-drive-scsi4"}' \ + -device 'scsi-hd,bus=scsihw0.0,scsi-id=4,drive=drive-scsi4,id=scsi4,bootindex=102' \ + -object '{"id":"throttle-drive-virtio0","limits":{},"qom-type":"throttle-group"}' \ + -blockdev '{"driver":"throttle","file":{"cache":{"direct":true,"no-flush":false},"driver":"qcow2","file":{"aio":"io_uring","cache":{"direct":true,"no-flush":false},"detect-zeroes":"unmap","discard":"unmap","driver":"file","filename":"/var/lib/vz/images/8006/vm-8006-disk-0.qcow2","node-name":"e-IQHs2Stp3mYmKYSGmUACmUu8i6u"},"node-name":"f-IQHs2Stp3mYmKYSGmUACmUu8i6u","read-only":false},"node-name":"drive-virtio0","throttle-group":"throttle-drive-virtio0"}' \ + -device 'virtio-blk-pci,drive=drive-virtio0,id=virtio0,bus=pci.0,addr=0xa,iothread=iothread-virtio0' \ + -object '{"id":"throttle-drive-virtio1","limits":{},"qom-type":"throttle-group"}' \ + -blockdev '{"driver":"throttle","file":{"cache":{"direct":true,"no-flush":false},"driver":"qcow2","file":{"aio":"io_uring","cache":{"direct":true,"no-flush":false},"detect-zeroes":"unmap","discard":"unmap","driver":"file","filename":"/var/lib/vz/images/8006/vm-8006-disk-0.qcow2","node-name":"e-IQHs2Stp3mYmKYSGmUACmUu8i6u"},"node-name":"f-IQHs2Stp3mYmKYSGmUACmUu8i6u","read-only":false},"node-name":"drive-virtio1","throttle-group":"throttle-drive-virtio1"}' \ + -device 'virtio-blk-pci,drive=drive-virtio1,id=virtio1,bus=pci.0,addr=0xb,iothread=iothread-virtio1,bootindex=100' \ + -netdev 'type=tap,id=net0,ifname=tap8006i0,script=/usr/libexec/qemu-server/pve-bridge,downscript=/usr/libexec/qemu-server/pve-bridgedown,vhost=on' \ + -device 'virtio-net-pci,mac=A2:C0:43:77:08:A0,netdev=net0,bus=pci.0,addr=0x12,id=net0,rx_queue_size=1024,tx_queue_size=256,bootindex=101' \ + -machine 'type=pc+pve0' diff --git a/test/cfg2cmd/bootorder-empty-blockdev.conf b/test/cfg2cmd/bootorder-empty-blockdev.conf new file mode 100644 index 00000000..ccfadb9f --- /dev/null +++ b/test/cfg2cmd/bootorder-empty-blockdev.conf @@ -0,0 +1,15 @@ +# TEST: Test for an empty boot parameter producing no bootindices either +cores: 3 +boot: +ide2: none,media=cdrom +memory: 768 +name: simple +net0: virtio=A2:C0:43:77:08:A0,bridge=vmbr0 +numa: 0 +ostype: l26 +scsi4: local:8006/vm-8006-disk-0.qcow2,discard=on,size=104858K +smbios1: uuid=7b10d7af-b932-4c66-b2c3-3996152ec465 +sockets: 1 +virtio0: local:8006/vm-8006-disk-0.qcow2,discard=on,iothread=1,size=104858K +virtio1: local:8006/vm-8006-disk-0.qcow2,discard=on,iothread=1,size=104858K +vmgenid: c773c261-d800-4348-9f5d-167fadd53cf8 diff --git a/test/cfg2cmd/bootorder-empty-blockdev.conf.cmd b/test/cfg2cmd/bootorder-empty-blockdev.conf.cmd new file mode 100644 index 00000000..3a41a28c --- /dev/null +++ b/test/cfg2cmd/bootorder-empty-blockdev.conf.cmd @@ -0,0 +1,43 @@ +/usr/bin/kvm \ + -id 8006 \ + -name 'simple,debug-threads=on' \ + -no-shutdown \ + -chardev 'socket,id=qmp,path=/var/run/qemu-server/8006.qmp,server=on,wait=off' \ + -mon 'chardev=qmp,mode=control' \ + -chardev 'socket,id=qmp-event,path=/var/run/qmeventd.sock,reconnect-ms=5000' \ + -mon 'chardev=qmp-event,mode=control' \ + -pidfile /var/run/qemu-server/8006.pid \ + -daemonize \ + -smbios 'type=1,uuid=7b10d7af-b932-4c66-b2c3-3996152ec465' \ + -smp '3,sockets=1,cores=3,maxcpus=3' \ + -nodefaults \ + -boot 'menu=on,strict=on,reboot-timeout=1000,splash=/usr/share/qemu-server/bootsplash.jpg' \ + -vnc 'unix:/var/run/qemu-server/8006.vnc,password=on' \ + -cpu kvm64,enforce,+kvm_pv_eoi,+kvm_pv_unhalt,+lahf_lm,+sep \ + -m 768 \ + -object 'iothread,id=iothread-virtio0' \ + -object 'iothread,id=iothread-virtio1' \ + -global 'PIIX4_PM.disable_s3=1' \ + -global 'PIIX4_PM.disable_s4=1' \ + -device 'pci-bridge,id=pci.1,chassis_nr=1,bus=pci.0,addr=0x1e' \ + -device 'pci-bridge,id=pci.2,chassis_nr=2,bus=pci.0,addr=0x1f' \ + -device 'vmgenid,guid=c773c261-d800-4348-9f5d-167fadd53cf8' \ + -device 'piix3-usb-uhci,id=uhci,bus=pci.0,addr=0x1.0x2' \ + -device 'usb-tablet,id=tablet,bus=uhci.0,port=1' \ + -device 'VGA,id=vga,bus=pci.0,addr=0x2' \ + -device 'virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x3,free-page-reporting=on' \ + -iscsi 'initiator-name=iqn.1993-08.org.debian:01:aabbccddeeff' \ + -device 'ide-cd,bus=ide.1,unit=0,id=ide2' \ + -device 'lsi,id=scsihw0,bus=pci.0,addr=0x5' \ + -object '{"id":"throttle-drive-scsi4","limits":{},"qom-type":"throttle-group"}' \ + -blockdev '{"driver":"throttle","file":{"cache":{"direct":true,"no-flush":false},"driver":"qcow2","file":{"aio":"io_uring","cache":{"direct":true,"no-flush":false},"detect-zeroes":"unmap","discard":"unmap","driver":"file","filename":"/var/lib/vz/images/8006/vm-8006-disk-0.qcow2","node-name":"e-IQHs2Stp3mYmKYSGmUACmUu8i6u"},"node-name":"f-IQHs2Stp3mYmKYSGmUACmUu8i6u","read-only":false},"node-name":"drive-scsi4","throttle-group":"throttle-drive-scsi4"}' + -device 'scsi-hd,bus=scsihw0.0,scsi-id=4,drive=drive-scsi4,id=scsi4' \ + -object '{"id":"throttle-drive-virtio0","limits":{},"qom-type":"throttle-group"}' \ + -blockdev '{"driver":"throttle","file":{"cache":{"direct":true,"no-flush":false},"driver":"qcow2","file":{"aio":"io_uring","cache":{"direct":true,"no-flush":false},"detect-zeroes":"unmap","discard":"unmap","driver":"file","filename":"/var/lib/vz/images/8006/vm-8006-disk-0.qcow2","node-name":"e-IQHs2Stp3mYmKYSGmUACmUu8i6u"},"node-name":"f-IQHs2Stp3mYmKYSGmUACmUu8i6u","read-only":false},"node-name":"drive-virtio0","throttle-group":"throttle-drive-virtio0"}' \ + -device 'virtio-blk-pci,drive=drive-virtio0,id=virtio0,bus=pci.0,addr=0xa,iothread=iothread-virtio0' \ + -object '{"id":"throttle-drive-virtio1","limits":{},"qom-type":"throttle-group"}' \ + -blockdev '{"driver":"throttle","file":{"cache":{"direct":true,"no-flush":false},"driver":"qcow2","file":{"aio":"io_uring","cache":{"direct":true,"no-flush":false},"detect-zeroes":"unmap","discard":"unmap","driver":"file","filename":"/var/lib/vz/images/8006/vm-8006-disk-0.qcow2","node-name":"e-IQHs2Stp3mYmKYSGmUACmUu8i6u"},"node-name":"f-IQHs2Stp3mYmKYSGmUACmUu8i6u","read-only":false},"node-name":"drive-virtio1","throttle-group":"throttle-drive-virtio1"}' \ + -device 'virtio-blk-pci,drive=drive-virtio1,id=virtio1,bus=pci.0,addr=0xb,iothread=iothread-virtio1' \ + -netdev 'type=tap,id=net0,ifname=tap8006i0,script=/usr/libexec/qemu-server/pve-bridge,downscript=/usr/libexec/qemu-server/pve-bridgedown,vhost=on' \ + -device 'virtio-net-pci,mac=A2:C0:43:77:08:A0,netdev=net0,bus=pci.0,addr=0x12,id=net0,rx_queue_size=1024,tx_queue_size=256' \ + -machine 'type=pc+pve0' diff --git a/test/cfg2cmd/bootorder-empty.conf b/test/cfg2cmd/bootorder-empty.conf index ccfadb9f..19dcf054 100644 --- a/test/cfg2cmd/bootorder-empty.conf +++ b/test/cfg2cmd/bootorder-empty.conf @@ -2,6 +2,7 @@ cores: 3 boot: ide2: none,media=cdrom +machine: pc-i440fx-9.2+pve1 memory: 768 name: simple net0: virtio=A2:C0:43:77:08:A0,bridge=vmbr0 diff --git a/test/cfg2cmd/bootorder-empty.conf.cmd b/test/cfg2cmd/bootorder-empty.conf.cmd index 07d46ee9..b4e95f13 100644 --- a/test/cfg2cmd/bootorder-empty.conf.cmd +++ b/test/cfg2cmd/bootorder-empty.conf.cmd @@ -38,4 +38,4 @@ -device 'virtio-blk-pci,drive=drive-virtio1,id=virtio1,bus=pci.0,addr=0xb,iothread=iothread-virtio1' \ -netdev 'type=tap,id=net0,ifname=tap8006i0,script=/usr/libexec/qemu-server/pve-bridge,downscript=/usr/libexec/qemu-server/pve-bridgedown,vhost=on' \ -device 'virtio-net-pci,mac=A2:C0:43:77:08:A0,netdev=net0,bus=pci.0,addr=0x12,id=net0,rx_queue_size=1024,tx_queue_size=256' \ - -machine 'type=pc+pve1' + -machine 'type=pc-i440fx-9.2+pve1' diff --git a/test/cfg2cmd/bootorder-legacy.conf b/test/cfg2cmd/bootorder-legacy.conf index 4e59268b..c6716740 100644 --- a/test/cfg2cmd/bootorder-legacy.conf +++ b/test/cfg2cmd/bootorder-legacy.conf @@ -3,6 +3,7 @@ cores: 3 boot: ndca bootdisk: virtio1 ide2: none,media=cdrom +machine: pc-i440fx-9.2+pve1 memory: 768 name: simple net0: virtio=A2:C0:43:77:08:A0,bridge=vmbr0 diff --git a/test/cfg2cmd/bootorder-legacy.conf.cmd b/test/cfg2cmd/bootorder-legacy.conf.cmd index d12dcd94..4e520b2e 100644 --- a/test/cfg2cmd/bootorder-legacy.conf.cmd +++ b/test/cfg2cmd/bootorder-legacy.conf.cmd @@ -38,4 +38,4 @@ -device 'virtio-blk-pci,drive=drive-virtio1,id=virtio1,bus=pci.0,addr=0xb,iothread=iothread-virtio1,bootindex=302' \ -netdev 'type=tap,id=net0,ifname=tap8006i0,script=/usr/libexec/qemu-server/pve-bridge,downscript=/usr/libexec/qemu-server/pve-bridgedown,vhost=on' \ -device 'virtio-net-pci,mac=A2:C0:43:77:08:A0,netdev=net0,bus=pci.0,addr=0x12,id=net0,rx_queue_size=1024,tx_queue_size=256,bootindex=100' \ - -machine 'type=pc+pve1' + -machine 'type=pc-i440fx-9.2+pve1' diff --git a/test/cfg2cmd/bootorder.conf b/test/cfg2cmd/bootorder.conf index 7991065d..5ae38bf4 100644 --- a/test/cfg2cmd/bootorder.conf +++ b/test/cfg2cmd/bootorder.conf @@ -2,6 +2,7 @@ cores: 3 boot: order=virtio1;net0;scsi4;ide2 ide2: none,media=cdrom +machine: pc-i440fx-9.2+pve1 memory: 768 name: simple net0: virtio=A2:C0:43:77:08:A0,bridge=vmbr0 diff --git a/test/cfg2cmd/bootorder.conf.cmd b/test/cfg2cmd/bootorder.conf.cmd index 2f2aa555..e8f9b666 100644 --- a/test/cfg2cmd/bootorder.conf.cmd +++ b/test/cfg2cmd/bootorder.conf.cmd @@ -38,4 +38,4 @@ -device 'virtio-blk-pci,drive=drive-virtio1,id=virtio1,bus=pci.0,addr=0xb,iothread=iothread-virtio1,bootindex=100' \ -netdev 'type=tap,id=net0,ifname=tap8006i0,script=/usr/libexec/qemu-server/pve-bridge,downscript=/usr/libexec/qemu-server/pve-bridgedown,vhost=on' \ -device 'virtio-net-pci,mac=A2:C0:43:77:08:A0,netdev=net0,bus=pci.0,addr=0x12,id=net0,rx_queue_size=1024,tx_queue_size=256,bootindex=101' \ - -machine 'type=pc+pve1' + -machine 'type=pc-i440fx-9.2+pve1' diff --git a/test/cfg2cmd/cputype-icelake-client-deprecation.conf b/test/cfg2cmd/cputype-icelake-client-deprecation.conf index c0c4b929..dc186e52 100644 --- a/test/cfg2cmd/cputype-icelake-client-deprecation.conf +++ b/test/cfg2cmd/cputype-icelake-client-deprecation.conf @@ -2,12 +2,9 @@ bootdisk: scsi0 cores: 2 cpu: Icelake-Client -ide2: none,media=cdrom memory: 768 name: simple ostype: l26 -scsi0: local:8006/base-8006-disk-0.qcow2,discard=on,size=104858K -scsihw: virtio-scsi-pci smbios1: uuid=7b10d7af-b932-4c66-b2c3-3996152ec465 sockets: 1 vmgenid: c773c261-d800-4348-9f5d-167fadd53cf8 diff --git a/test/cfg2cmd/cputype-icelake-client-deprecation.conf.cmd b/test/cfg2cmd/cputype-icelake-client-deprecation.conf.cmd index 4fe10b66..d84d96b7 100644 --- a/test/cfg2cmd/cputype-icelake-client-deprecation.conf.cmd +++ b/test/cfg2cmd/cputype-icelake-client-deprecation.conf.cmd @@ -25,9 +25,4 @@ -device 'VGA,id=vga,bus=pci.0,addr=0x2' \ -device 'virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x3,free-page-reporting=on' \ -iscsi 'initiator-name=iqn.1993-08.org.debian:01:aabbccddeeff' \ - -drive 'if=none,id=drive-ide2,media=cdrom,aio=io_uring' \ - -device 'ide-cd,bus=ide.1,unit=0,drive=drive-ide2,id=ide2,bootindex=200' \ - -device 'virtio-scsi-pci,id=scsihw0,bus=pci.0,addr=0x5' \ - -drive 'file=/var/lib/vz/images/8006/base-8006-disk-0.qcow2,if=none,id=drive-scsi0,discard=on,format=qcow2,cache=none,aio=io_uring,detect-zeroes=unmap' \ - -device 'scsi-hd,bus=scsihw0.0,channel=0,scsi-id=0,lun=0,drive=drive-scsi0,id=scsi0,bootindex=100' \ - -machine 'type=pc+pve1' + -machine 'type=pc+pve0' diff --git a/test/cfg2cmd/custom-cpu-model-defaults.conf.cmd b/test/cfg2cmd/custom-cpu-model-defaults.conf.cmd index 7e023f33..2908fdc0 100644 --- a/test/cfg2cmd/custom-cpu-model-defaults.conf.cmd +++ b/test/cfg2cmd/custom-cpu-model-defaults.conf.cmd @@ -24,4 +24,4 @@ -device 'VGA,id=vga,bus=pci.0,addr=0x2' \ -device 'virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x3,free-page-reporting=on' \ -iscsi 'initiator-name=iqn.1993-08.org.debian:01:aabbccddeeff' \ - -machine 'type=pc+pve1' + -machine 'type=pc+pve0' diff --git a/test/cfg2cmd/efi-raw-template.conf.cmd b/test/cfg2cmd/efi-raw-template.conf.cmd index ee9b0683..f66cbb0d 100644 --- a/test/cfg2cmd/efi-raw-template.conf.cmd +++ b/test/cfg2cmd/efi-raw-template.conf.cmd @@ -25,5 +25,5 @@ -device 'usb-tablet,id=tablet,bus=uhci.0,port=1' \ -device 'virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x3,free-page-reporting=on' \ -iscsi 'initiator-name=iqn.1993-08.org.debian:01:aabbccddeeff' \ - -machine 'accel=tcg,type=pc+pve1' \ + -machine 'accel=tcg,type=pc+pve0' \ -snapshot diff --git a/test/cfg2cmd/efi-raw.conf b/test/cfg2cmd/efi-raw.conf index 11e6a3e6..d69cf8d6 100644 --- a/test/cfg2cmd/efi-raw.conf +++ b/test/cfg2cmd/efi-raw.conf @@ -1,4 +1,5 @@ # TEST: Test raw efidisk size parameter smbios1: uuid=7b10d7af-b932-4c66-b2c3-3996152ec465 bios: ovmf +machine: pc-i440fx-9.2+pve1 efidisk0: local:100/vm-disk-100-0.raw diff --git a/test/cfg2cmd/efi-raw.conf.cmd b/test/cfg2cmd/efi-raw.conf.cmd index 9d2c57ec..9d6f3f25 100644 --- a/test/cfg2cmd/efi-raw.conf.cmd +++ b/test/cfg2cmd/efi-raw.conf.cmd @@ -26,4 +26,4 @@ -device 'VGA,id=vga,bus=pci.0,addr=0x2' \ -device 'virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x3,free-page-reporting=on' \ -iscsi 'initiator-name=iqn.1993-08.org.debian:01:aabbccddeeff' \ - -machine 'type=pc+pve1' + -machine 'type=pc-i440fx-9.2+pve1' diff --git a/test/cfg2cmd/efi-secboot-and-tpm-q35.conf.cmd b/test/cfg2cmd/efi-secboot-and-tpm-q35.conf.cmd index 16d58fdf..4e9a7e87 100644 --- a/test/cfg2cmd/efi-secboot-and-tpm-q35.conf.cmd +++ b/test/cfg2cmd/efi-secboot-and-tpm-q35.conf.cmd @@ -27,4 +27,4 @@ -device 'VGA,id=vga,bus=pcie.0,addr=0x1' \ -device 'virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x3,free-page-reporting=on' \ -iscsi 'initiator-name=iqn.1993-08.org.debian:01:aabbccddeeff' \ - -machine 'type=q35+pve1' + -machine 'type=q35+pve0' diff --git a/test/cfg2cmd/efi-secboot-and-tpm.conf.cmd b/test/cfg2cmd/efi-secboot-and-tpm.conf.cmd index 1dd76a0a..175d9b10 100644 --- a/test/cfg2cmd/efi-secboot-and-tpm.conf.cmd +++ b/test/cfg2cmd/efi-secboot-and-tpm.conf.cmd @@ -29,4 +29,4 @@ -device 'VGA,id=vga,bus=pci.0,addr=0x2' \ -device 'virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x3,free-page-reporting=on' \ -iscsi 'initiator-name=iqn.1993-08.org.debian:01:aabbccddeeff' \ - -machine 'type=pc+pve1' + -machine 'type=pc+pve0' diff --git a/test/cfg2cmd/efidisk-on-rbd.conf.cmd b/test/cfg2cmd/efidisk-on-rbd.conf.cmd index c8cd79ac..5c55c01b 100644 --- a/test/cfg2cmd/efidisk-on-rbd.conf.cmd +++ b/test/cfg2cmd/efidisk-on-rbd.conf.cmd @@ -31,4 +31,4 @@ -iscsi 'initiator-name=iqn.1993-08.org.debian:01:aabbccddeeff' \ -netdev 'type=tap,id=net0,ifname=tap8006i0,script=/usr/libexec/qemu-server/pve-bridge,downscript=/usr/libexec/qemu-server/pve-bridgedown,vhost=on' \ -device 'virtio-net-pci,mac=2E:01:68:F9:9C:87,netdev=net0,bus=pci.0,addr=0x12,id=net0,rx_queue_size=1024,tx_queue_size=256,bootindex=300' \ - -machine 'type=pc+pve1' + -machine 'type=pc+pve0' diff --git a/test/cfg2cmd/i440fx-viommu-virtio.conf.cmd b/test/cfg2cmd/i440fx-viommu-virtio.conf.cmd index 5830ec5c..4e9f0fb8 100644 --- a/test/cfg2cmd/i440fx-viommu-virtio.conf.cmd +++ b/test/cfg2cmd/i440fx-viommu-virtio.conf.cmd @@ -24,4 +24,4 @@ -device 'virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x3,free-page-reporting=on' \ -iscsi 'initiator-name=iqn.1993-08.org.debian:01:aabbccddeeff' \ -device virtio-iommu-pci \ - -machine 'type=pc+pve1' + -machine 'type=pc+pve0' diff --git a/test/cfg2cmd/ide-blockdev.conf b/test/cfg2cmd/ide-blockdev.conf new file mode 100644 index 00000000..0c48aac8 --- /dev/null +++ b/test/cfg2cmd/ide-blockdev.conf @@ -0,0 +1,14 @@ +# TEST: Config with default machine type, Linux & four IDE CD-ROMs +bootdisk: scsi0 +cores: 2 +ide0: cifs-store:iso/zero.iso,media=cdrom,size=112M +ide1: cifs-store:iso/one.iso,media=cdrom,size=112M +ide2: cifs-store:iso/two.iso,media=cdrom,size=112M +ide3: cifs-store:iso/three.iso,media=cdrom,size=112M +memory: 512 +net0: virtio=2E:01:68:F9:9C:87,bridge=vmbr0 +ostype: l26 +scsi0: local:100/vm-100-disk-2.qcow2,size=10G +scsihw: virtio-scsi-pci +smbios1: uuid=3dd750ce-d910-44d0-9493-525c0be4e687 +vmgenid: 54d1c06c-8f5b-440f-b5b2-6eab1380e13d diff --git a/test/cfg2cmd/ide-blockdev.conf.cmd b/test/cfg2cmd/ide-blockdev.conf.cmd new file mode 100644 index 00000000..856d3f97 --- /dev/null +++ b/test/cfg2cmd/ide-blockdev.conf.cmd @@ -0,0 +1,46 @@ +/usr/bin/kvm \ + -id 8006 \ + -name 'vm8006,debug-threads=on' \ + -no-shutdown \ + -chardev 'socket,id=qmp,path=/var/run/qemu-server/8006.qmp,server=on,wait=off' \ + -mon 'chardev=qmp,mode=control' \ + -chardev 'socket,id=qmp-event,path=/var/run/qmeventd.sock,reconnect-ms=5000' \ + -mon 'chardev=qmp-event,mode=control' \ + -pidfile /var/run/qemu-server/8006.pid \ + -daemonize \ + -smbios 'type=1,uuid=3dd750ce-d910-44d0-9493-525c0be4e687' \ + -smp '2,sockets=1,cores=2,maxcpus=2' \ + -nodefaults \ + -boot 'menu=on,strict=on,reboot-timeout=1000,splash=/usr/share/qemu-server/bootsplash.jpg' \ + -vnc 'unix:/var/run/qemu-server/8006.vnc,password=on' \ + -cpu kvm64,enforce,+kvm_pv_eoi,+kvm_pv_unhalt,+lahf_lm,+sep \ + -m 512 \ + -global 'PIIX4_PM.disable_s3=1' \ + -global 'PIIX4_PM.disable_s4=1' \ + -device 'pci-bridge,id=pci.1,chassis_nr=1,bus=pci.0,addr=0x1e' \ + -device 'pci-bridge,id=pci.2,chassis_nr=2,bus=pci.0,addr=0x1f' \ + -device 'vmgenid,guid=54d1c06c-8f5b-440f-b5b2-6eab1380e13d' \ + -device 'piix3-usb-uhci,id=uhci,bus=pci.0,addr=0x1.0x2' \ + -device 'usb-tablet,id=tablet,bus=uhci.0,port=1' \ + -device 'VGA,id=vga,bus=pci.0,addr=0x2' \ + -device 'virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x3,free-page-reporting=on' \ + -iscsi 'initiator-name=iqn.1993-08.org.debian:01:aabbccddeeff' \ + -object '{"id":"throttle-drive-ide0","limits":{},"qom-type":"throttle-group"}' \ + -blockdev '{"driver":"throttle","file":{"cache":{"direct":false,"no-flush":false},"driver":"raw","file":{"aio":"threads","cache":{"direct":false,"no-flush":false},"driver":"file","filename":"/mnt/pve/cifs-store/template/iso/zero.iso","node-name":"e-OO9IkxxtCYSqog6okQom0we4S48"},"node-name":"f-OO9IkxxtCYSqog6okQom0we4S48","read-only":true},"node-name":"drive-ide0","throttle-group":"throttle-drive-ide0"}' \ + -device 'ide-cd,bus=ide.0,unit=0,id=ide0,drive=drive-ide0,bootindex=200' \ + -object '{"id":"throttle-drive-ide1","limits":{},"qom-type":"throttle-group"}' \ + -blockdev '{"driver":"throttle","file":{"cache":{"direct":false,"no-flush":false},"driver":"raw","file":{"aio":"threads","cache":{"direct":false,"no-flush":false},"driver":"file","filename":"/mnt/pve/cifs-store/template/iso/one.iso","node-name":"e-OiteZ9aAusKmw6oIO8qucwmmmUU"},"node-name":"f-OiteZ9aAusKmw6oIO8qucwmmmUU","read-only":true},"node-name":"drive-ide1","throttle-group":"throttle-drive-ide1"}' \ + -device 'ide-cd,bus=ide.0,unit=1,id=ide1,drive=drive-ide1,bootindex=201' \ + -object '{"id":"throttle-drive-ide2","limits":{},"qom-type":"throttle-group"}' \ + -blockdev '{"driver":"throttle","file":{"cache":{"direct":false,"no-flush":false},"driver":"raw","file":{"aio":"threads","cache":{"direct":false,"no-flush":false},"driver":"file","filename":"/mnt/pve/cifs-store/template/iso/two.iso","node-name":"e-1Aib1Kemp2sgocAWokMGOyIQyQY"},"node-name":"f-1Aib1Kemp2sgocAWokMGOyIQyQY","read-only":true},"node-name":"drive-ide2","throttle-group":"throttle-drive-ide2"}' \ + -device 'ide-cd,bus=ide.1,unit=0,id=ide2,drive=drive-ide2,bootindex=202' \ + -object '{"id":"throttle-drive-ide3","limits":{},"qom-type":"throttle-group"}' \ + -blockdev '{"driver":"throttle","file":{"cache":{"direct":false,"no-flush":false},"driver":"raw","file":{"aio":"threads","cache":{"direct":false,"no-flush":false},"driver":"file","filename":"/mnt/pve/cifs-store/template/iso/three.iso","node-name":"e-UKCOEDGubQ8AywsAyqqGIywCIWQ"},"node-name":"f-UKCOEDGubQ8AywsAyqqGIywCIWQ","read-only":true},"node-name":"drive-ide3","throttle-group":"throttle-drive-ide3"}' \ + -device 'ide-cd,bus=ide.1,unit=1,id=ide3,drive=drive-ide3,bootindex=203' \ + -device 'virtio-scsi-pci,id=scsihw0,bus=pci.0,addr=0x5' \ + -object '{"id":"throttle-drive-scsi0","limits":{},"qom-type":"throttle-group"}' \ + -blockdev '{"driver":"throttle","file":{"cache":{"direct":true,"no-flush":false},"driver":"qcow2","file":{"aio":"io_uring","cache":{"direct":true,"no-flush":false},"detect-zeroes":"on","discard":"ignore","driver":"file","filename":"/var/lib/vz/images/100/vm-100-disk-2.qcow2","node-name":"e-6zrMeiDDrkeISyGMGwACygKAISG"},"node-name":"f-6zrMeiDDrkeISyGMGwACygKAISG","read-only":false},"node-name":"drive-scsi0","throttle-group":"throttle-drive-scsi0"}' \ + -device 'scsi-hd,bus=scsihw0.0,channel=0,scsi-id=0,lun=0,drive=drive-scsi0,id=scsi0,bootindex=100' \ + -netdev 'type=tap,id=net0,ifname=tap8006i0,script=/usr/libexec/qemu-server/pve-bridge,downscript=/usr/libexec/qemu-server/pve-bridgedown,vhost=on' \ + -device 'virtio-net-pci,mac=2E:01:68:F9:9C:87,netdev=net0,bus=pci.0,addr=0x12,id=net0,rx_queue_size=1024,tx_queue_size=256,bootindex=300' \ + -machine 'type=pc+pve0' diff --git a/test/cfg2cmd/ide.conf b/test/cfg2cmd/ide.conf index 0c48aac8..4fd3e1b3 100644 --- a/test/cfg2cmd/ide.conf +++ b/test/cfg2cmd/ide.conf @@ -5,6 +5,7 @@ ide0: cifs-store:iso/zero.iso,media=cdrom,size=112M ide1: cifs-store:iso/one.iso,media=cdrom,size=112M ide2: cifs-store:iso/two.iso,media=cdrom,size=112M ide3: cifs-store:iso/three.iso,media=cdrom,size=112M +machine: pc-i440fx-9.2+pve1 memory: 512 net0: virtio=2E:01:68:F9:9C:87,bridge=vmbr0 ostype: l26 diff --git a/test/cfg2cmd/ide.conf.cmd b/test/cfg2cmd/ide.conf.cmd index 273b8e7d..a5ff4695 100644 --- a/test/cfg2cmd/ide.conf.cmd +++ b/test/cfg2cmd/ide.conf.cmd @@ -38,4 +38,4 @@ -device 'scsi-hd,bus=scsihw0.0,channel=0,scsi-id=0,lun=0,drive=drive-scsi0,id=scsi0,bootindex=100' \ -netdev 'type=tap,id=net0,ifname=tap8006i0,script=/usr/libexec/qemu-server/pve-bridge,downscript=/usr/libexec/qemu-server/pve-bridgedown,vhost=on' \ -device 'virtio-net-pci,mac=2E:01:68:F9:9C:87,netdev=net0,bus=pci.0,addr=0x12,id=net0,rx_queue_size=1024,tx_queue_size=256,bootindex=300' \ - -machine 'type=pc+pve1' + -machine 'type=pc-i440fx-9.2+pve1' diff --git a/test/cfg2cmd/memory-hotplug-hugepages.conf.cmd b/test/cfg2cmd/memory-hotplug-hugepages.conf.cmd index b0c9519f..e069bd6b 100644 --- a/test/cfg2cmd/memory-hotplug-hugepages.conf.cmd +++ b/test/cfg2cmd/memory-hotplug-hugepages.conf.cmd @@ -61,4 +61,4 @@ -device 'VGA,id=vga,bus=pci.0,addr=0x2' \ -device 'virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x3,free-page-reporting=on' \ -iscsi 'initiator-name=iqn.1993-08.org.debian:01:aabbccddeeff' \ - -machine 'type=pc+pve1' + -machine 'type=pc+pve0' diff --git a/test/cfg2cmd/memory-hotplug.conf.cmd b/test/cfg2cmd/memory-hotplug.conf.cmd index 9711cf45..af80917b 100644 --- a/test/cfg2cmd/memory-hotplug.conf.cmd +++ b/test/cfg2cmd/memory-hotplug.conf.cmd @@ -173,4 +173,4 @@ -device 'VGA,id=vga,bus=pci.0,addr=0x2' \ -device 'virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x3,free-page-reporting=on' \ -iscsi 'initiator-name=iqn.1993-08.org.debian:01:aabbccddeeff' \ - -machine 'type=pc+pve1' + -machine 'type=pc+pve0' diff --git a/test/cfg2cmd/memory-hugepages-1g.conf.cmd b/test/cfg2cmd/memory-hugepages-1g.conf.cmd index f476b6b9..73c3036f 100644 --- a/test/cfg2cmd/memory-hugepages-1g.conf.cmd +++ b/test/cfg2cmd/memory-hugepages-1g.conf.cmd @@ -29,4 +29,4 @@ -device 'VGA,id=vga,bus=pci.0,addr=0x2' \ -device 'virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x3,free-page-reporting=on' \ -iscsi 'initiator-name=iqn.1993-08.org.debian:01:aabbccddeeff' \ - -machine 'type=pc+pve1' + -machine 'type=pc+pve0' diff --git a/test/cfg2cmd/memory-hugepages-2m.conf.cmd b/test/cfg2cmd/memory-hugepages-2m.conf.cmd index 2756dcf6..9eb85a72 100644 --- a/test/cfg2cmd/memory-hugepages-2m.conf.cmd +++ b/test/cfg2cmd/memory-hugepages-2m.conf.cmd @@ -29,4 +29,4 @@ -device 'VGA,id=vga,bus=pci.0,addr=0x2' \ -device 'virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x3,free-page-reporting=on' \ -iscsi 'initiator-name=iqn.1993-08.org.debian:01:aabbccddeeff' \ - -machine 'type=pc+pve1' + -machine 'type=pc+pve0' diff --git a/test/cfg2cmd/minimal-defaults.conf.cmd b/test/cfg2cmd/minimal-defaults.conf.cmd index 3f958052..5a419ddf 100644 --- a/test/cfg2cmd/minimal-defaults.conf.cmd +++ b/test/cfg2cmd/minimal-defaults.conf.cmd @@ -24,4 +24,4 @@ -device 'VGA,id=vga,bus=pci.0,addr=0x2' \ -device 'virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x3,free-page-reporting=on' \ -iscsi 'initiator-name=iqn.1993-08.org.debian:01:aabbccddeeff' \ - -machine 'type=pc+pve1' + -machine 'type=pc+pve0' diff --git a/test/cfg2cmd/netdev-7.1-multiqueues.conf.cmd b/test/cfg2cmd/netdev-7.1-multiqueues.conf.cmd index 43e40742..776bab30 100644 --- a/test/cfg2cmd/netdev-7.1-multiqueues.conf.cmd +++ b/test/cfg2cmd/netdev-7.1-multiqueues.conf.cmd @@ -25,4 +25,4 @@ -iscsi 'initiator-name=iqn.1993-08.org.debian:01:aabbccddeeff' \ -netdev 'type=tap,id=net0,ifname=tap8006i0,script=/usr/libexec/qemu-server/pve-bridge,downscript=/usr/libexec/qemu-server/pve-bridgedown,vhost=on,queues=2' \ -device 'virtio-net-pci,mac=A2:C0:43:77:08:A0,netdev=net0,bus=pci.0,addr=0x12,id=net0,vectors=6,mq=on,packed=on,rx_queue_size=1024,tx_queue_size=256,bootindex=300,host_mtu=900' \ - -machine 'type=pc+pve1' + -machine 'type=pc+pve0' diff --git a/test/cfg2cmd/netdev-7.1.conf.cmd b/test/cfg2cmd/netdev-7.1.conf.cmd index 10404de4..0d6b3ad2 100644 --- a/test/cfg2cmd/netdev-7.1.conf.cmd +++ b/test/cfg2cmd/netdev-7.1.conf.cmd @@ -25,4 +25,4 @@ -iscsi 'initiator-name=iqn.1993-08.org.debian:01:aabbccddeeff' \ -netdev 'type=tap,id=net0,ifname=tap8006i0,script=/usr/libexec/qemu-server/pve-bridge,downscript=/usr/libexec/qemu-server/pve-bridgedown,vhost=on' \ -device 'virtio-net-pci,mac=A2:C0:43:77:08:A0,netdev=net0,bus=pci.0,addr=0x12,id=net0,rx_queue_size=1024,tx_queue_size=256,bootindex=300,host_mtu=900' \ - -machine 'type=pc+pve1' + -machine 'type=pc+pve0' diff --git a/test/cfg2cmd/q35-ide-blockdev.conf b/test/cfg2cmd/q35-ide-blockdev.conf new file mode 100644 index 00000000..bfef0a14 --- /dev/null +++ b/test/cfg2cmd/q35-ide-blockdev.conf @@ -0,0 +1,15 @@ +# TEST: Config with q35, Linux & four IDE CD-ROMs +bootdisk: scsi0 +cores: 2 +ide0: cifs-store:iso/zero.iso,media=cdrom,size=112M +ide1: cifs-store:iso/one.iso,media=cdrom,size=112M +ide2: cifs-store:iso/two.iso,media=cdrom,size=112M +ide3: cifs-store:iso/three.iso,media=cdrom,size=112M +machine: q35 +memory: 512 +net0: virtio=2E:01:68:F9:9C:87,bridge=vmbr0 +ostype: l26 +scsi0: local:100/vm-100-disk-2.qcow2,size=10G +scsihw: virtio-scsi-pci +smbios1: uuid=3dd750ce-d910-44d0-9493-525c0be4e687 +vmgenid: 54d1c06c-8f5b-440f-b5b2-6eab1380e13d diff --git a/test/cfg2cmd/q35-ide-blockdev.conf.cmd b/test/cfg2cmd/q35-ide-blockdev.conf.cmd new file mode 100644 index 00000000..1a4c3f81 --- /dev/null +++ b/test/cfg2cmd/q35-ide-blockdev.conf.cmd @@ -0,0 +1,45 @@ +/usr/bin/kvm \ + -id 8006 \ + -name 'vm8006,debug-threads=on' \ + -no-shutdown \ + -chardev 'socket,id=qmp,path=/var/run/qemu-server/8006.qmp,server=on,wait=off' \ + -mon 'chardev=qmp,mode=control' \ + -chardev 'socket,id=qmp-event,path=/var/run/qmeventd.sock,reconnect-ms=5000' \ + -mon 'chardev=qmp-event,mode=control' \ + -pidfile /var/run/qemu-server/8006.pid \ + -daemonize \ + -smbios 'type=1,uuid=3dd750ce-d910-44d0-9493-525c0be4e687' \ + -global 'ICH9-LPC.acpi-pci-hotplug-with-bridge-support=off' \ + -smp '2,sockets=1,cores=2,maxcpus=2' \ + -nodefaults \ + -boot 'menu=on,strict=on,reboot-timeout=1000,splash=/usr/share/qemu-server/bootsplash.jpg' \ + -vnc 'unix:/var/run/qemu-server/8006.vnc,password=on' \ + -cpu kvm64,enforce,+kvm_pv_eoi,+kvm_pv_unhalt,+lahf_lm,+sep \ + -m 512 \ + -global 'ICH9-LPC.disable_s3=1' \ + -global 'ICH9-LPC.disable_s4=1' \ + -readconfig /usr/share/qemu-server/pve-q35-4.0.cfg \ + -device 'vmgenid,guid=54d1c06c-8f5b-440f-b5b2-6eab1380e13d' \ + -device 'usb-tablet,id=tablet,bus=ehci.0,port=1' \ + -device 'VGA,id=vga,bus=pcie.0,addr=0x1' \ + -device 'virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x3,free-page-reporting=on' \ + -iscsi 'initiator-name=iqn.1993-08.org.debian:01:aabbccddeeff' \ + -object '{"id":"throttle-drive-ide0","limits":{},"qom-type":"throttle-group"}' \ + -blockdev '{"driver":"throttle","file":{"cache":{"direct":false,"no-flush":false},"driver":"raw","file":{"aio":"threads","cache":{"direct":false,"no-flush":false},"driver":"file","filename":"/mnt/pve/cifs-store/template/iso/zero.iso","node-name":"e-OO9IkxxtCYSqog6okQom0we4S48"},"node-name":"f-OO9IkxxtCYSqog6okQom0we4S48","read-only":true},"node-name":"drive-ide0","throttle-group":"throttle-drive-ide0"}' \ + -device 'ide-cd,bus=ide.0,unit=0,id=ide0,drive=drive-ide0,bootindex=200' \ + -object '{"id":"throttle-drive-ide1","limits":{},"qom-type":"throttle-group"}' \ + -blockdev '{"driver":"throttle","file":{"cache":{"direct":false,"no-flush":false},"driver":"raw","file":{"aio":"threads","cache":{"direct":false,"no-flush":false},"driver":"file","filename":"/mnt/pve/cifs-store/template/iso/one.iso","node-name":"e-OiteZ9aAusKmw6oIO8qucwmmmUU"},"node-name":"f-OiteZ9aAusKmw6oIO8qucwmmmUU","read-only":true},"node-name":"drive-ide1","throttle-group":"throttle-drive-ide1"}' \ + -device 'ide-cd,bus=ide.2,unit=0,id=ide1,drive=drive-ide1,bootindex=201' \ + -object '{"id":"throttle-drive-ide2","limits":{},"qom-type":"throttle-group"}' \ + -blockdev '{"driver":"throttle","file":{"cache":{"direct":false,"no-flush":false},"driver":"raw","file":{"aio":"threads","cache":{"direct":false,"no-flush":false},"driver":"file","filename":"/mnt/pve/cifs-store/template/iso/two.iso","node-name":"e-1Aib1Kemp2sgocAWokMGOyIQyQY"},"node-name":"f-1Aib1Kemp2sgocAWokMGOyIQyQY","read-only":true},"node-name":"drive-ide2","throttle-group":"throttle-drive-ide2"}' \ + -device 'ide-cd,bus=ide.1,unit=0,id=ide2,drive=drive-ide2,bootindex=202' \ + -object '{"id":"throttle-drive-ide3","limits":{},"qom-type":"throttle-group"}' \ + -blockdev '{"driver":"throttle","file":{"cache":{"direct":false,"no-flush":false},"driver":"raw","file":{"aio":"threads","cache":{"direct":false,"no-flush":false},"driver":"file","filename":"/mnt/pve/cifs-store/template/iso/three.iso","node-name":"e-UKCOEDGubQ8AywsAyqqGIywCIWQ"},"node-name":"f-UKCOEDGubQ8AywsAyqqGIywCIWQ","read-only":true},"node-name":"drive-ide3","throttle-group":"throttle-drive-ide3"}' \ + -device 'ide-cd,bus=ide.3,unit=0,id=ide3,drive=drive-ide3,bootindex=203' \ + -device 'virtio-scsi-pci,id=scsihw0,bus=pci.0,addr=0x5' \ + -object '{"id":"throttle-drive-scsi0","limits":{},"qom-type":"throttle-group"}' \ + -blockdev '{"driver":"throttle","file":{"cache":{"direct":true,"no-flush":false},"driver":"qcow2","file":{"aio":"io_uring","cache":{"direct":true,"no-flush":false},"detect-zeroes":"on","discard":"ignore","driver":"file","filename":"/var/lib/vz/images/100/vm-100-disk-2.qcow2","node-name":"e-6zrMeiDDrkeISyGMGwACygKAISG"},"node-name":"f-6zrMeiDDrkeISyGMGwACygKAISG","read-only":false},"node-name":"drive-scsi0","throttle-group":"throttle-drive-scsi0"}' \ + -device 'scsi-hd,bus=scsihw0.0,channel=0,scsi-id=0,lun=0,drive=drive-scsi0,id=scsi0,bootindex=100' \ + -netdev 'type=tap,id=net0,ifname=tap8006i0,script=/usr/libexec/qemu-server/pve-bridge,downscript=/usr/libexec/qemu-server/pve-bridgedown,vhost=on' \ + -device 'virtio-net-pci,mac=2E:01:68:F9:9C:87,netdev=net0,bus=pci.0,addr=0x12,id=net0,rx_queue_size=1024,tx_queue_size=256,bootindex=300' \ + -machine 'type=q35+pve0' diff --git a/test/cfg2cmd/q35-ide.conf b/test/cfg2cmd/q35-ide.conf index bfef0a14..6a091141 100644 --- a/test/cfg2cmd/q35-ide.conf +++ b/test/cfg2cmd/q35-ide.conf @@ -5,7 +5,7 @@ ide0: cifs-store:iso/zero.iso,media=cdrom,size=112M ide1: cifs-store:iso/one.iso,media=cdrom,size=112M ide2: cifs-store:iso/two.iso,media=cdrom,size=112M ide3: cifs-store:iso/three.iso,media=cdrom,size=112M -machine: q35 +machine: pc-q35-9.2+pve1 memory: 512 net0: virtio=2E:01:68:F9:9C:87,bridge=vmbr0 ostype: l26 diff --git a/test/cfg2cmd/q35-ide.conf.cmd b/test/cfg2cmd/q35-ide.conf.cmd index 4e910ff7..e88fd744 100644 --- a/test/cfg2cmd/q35-ide.conf.cmd +++ b/test/cfg2cmd/q35-ide.conf.cmd @@ -9,7 +9,6 @@ -pidfile /var/run/qemu-server/8006.pid \ -daemonize \ -smbios 'type=1,uuid=3dd750ce-d910-44d0-9493-525c0be4e687' \ - -global 'ICH9-LPC.acpi-pci-hotplug-with-bridge-support=off' \ -smp '2,sockets=1,cores=2,maxcpus=2' \ -nodefaults \ -boot 'menu=on,strict=on,reboot-timeout=1000,splash=/usr/share/qemu-server/bootsplash.jpg' \ @@ -37,4 +36,4 @@ -device 'scsi-hd,bus=scsihw0.0,channel=0,scsi-id=0,lun=0,drive=drive-scsi0,id=scsi0,bootindex=100' \ -netdev 'type=tap,id=net0,ifname=tap8006i0,script=/usr/libexec/qemu-server/pve-bridge,downscript=/usr/libexec/qemu-server/pve-bridgedown,vhost=on' \ -device 'virtio-net-pci,mac=2E:01:68:F9:9C:87,netdev=net0,bus=pci.0,addr=0x12,id=net0,rx_queue_size=1024,tx_queue_size=256,bootindex=300' \ - -machine 'type=q35+pve1' + -machine 'type=pc-q35-9.2+pve1' diff --git a/test/cfg2cmd/q35-linux-hostpci-mapping.conf.cmd b/test/cfg2cmd/q35-linux-hostpci-mapping.conf.cmd index 533e1983..2d66cb66 100644 --- a/test/cfg2cmd/q35-linux-hostpci-mapping.conf.cmd +++ b/test/cfg2cmd/q35-linux-hostpci-mapping.conf.cmd @@ -35,4 +35,4 @@ -iscsi 'initiator-name=iqn.1993-08.org.debian:01:aabbccddeeff' \ -netdev 'type=tap,id=net0,ifname=tap8006i0,script=/usr/libexec/qemu-server/pve-bridge,downscript=/usr/libexec/qemu-server/pve-bridgedown,vhost=on' \ -device 'virtio-net-pci,mac=2E:01:68:F9:9C:87,netdev=net0,bus=pci.0,addr=0x12,id=net0,rx_queue_size=1024,tx_queue_size=256,bootindex=300' \ - -machine 'type=q35+pve1' + -machine 'type=q35+pve0' diff --git a/test/cfg2cmd/q35-linux-hostpci-multifunction.conf.cmd b/test/cfg2cmd/q35-linux-hostpci-multifunction.conf.cmd index 07609745..146bf3e5 100644 --- a/test/cfg2cmd/q35-linux-hostpci-multifunction.conf.cmd +++ b/test/cfg2cmd/q35-linux-hostpci-multifunction.conf.cmd @@ -35,4 +35,4 @@ -iscsi 'initiator-name=iqn.1993-08.org.debian:01:aabbccddeeff' \ -netdev 'type=tap,id=net0,ifname=tap8006i0,script=/usr/libexec/qemu-server/pve-bridge,downscript=/usr/libexec/qemu-server/pve-bridgedown,vhost=on' \ -device 'virtio-net-pci,mac=2E:01:68:F9:9C:87,netdev=net0,bus=pci.0,addr=0x12,id=net0,rx_queue_size=1024,tx_queue_size=256,bootindex=300' \ - -machine 'type=q35+pve1' + -machine 'type=q35+pve0' diff --git a/test/cfg2cmd/q35-linux-hostpci-template.conf.cmd b/test/cfg2cmd/q35-linux-hostpci-template.conf.cmd index 1bf1feb6..fa75d393 100644 --- a/test/cfg2cmd/q35-linux-hostpci-template.conf.cmd +++ b/test/cfg2cmd/q35-linux-hostpci-template.conf.cmd @@ -26,7 +26,8 @@ -device 'virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x3,free-page-reporting=on' \ -iscsi 'initiator-name=iqn.1993-08.org.debian:01:aabbccddeeff' \ -device 'virtio-scsi-pci,id=scsihw0,bus=pci.0,addr=0x5' \ - -drive 'file=/var/lib/vz/images/100/base-100-disk-2.raw,if=none,id=drive-scsi0,format=raw,cache=none,aio=io_uring,detect-zeroes=on,readonly=on' \ + -object '{"id":"throttle-drive-scsi0","limits":{},"qom-type":"throttle-group"}' \ + -blockdev '{"driver":"throttle","file":{"cache":{"direct":true,"no-flush":false},"driver":"raw","file":{"aio":"io_uring","cache":{"direct":true,"no-flush":false},"detect-zeroes":"on","discard":"ignore","driver":"file","filename":"/var/lib/vz/images/100/base-100-disk-2.raw","node-name":"e-3nPTM162JEOAymkwqg2Ww2QUioK"},"node-name":"f-3nPTM162JEOAymkwqg2Ww2QUioK","read-only":true},"node-name":"drive-scsi0","throttle-group":"throttle-drive-scsi0"}' \ -device 'scsi-hd,bus=scsihw0.0,channel=0,scsi-id=0,lun=0,drive=drive-scsi0,id=scsi0' \ - -machine 'accel=tcg,type=pc+pve1' \ + -machine 'accel=tcg,type=pc+pve0' \ -snapshot diff --git a/test/cfg2cmd/q35-linux-hostpci-x-pci-overrides.conf.cmd b/test/cfg2cmd/q35-linux-hostpci-x-pci-overrides.conf.cmd index ca8e03b9..96f9da18 100644 --- a/test/cfg2cmd/q35-linux-hostpci-x-pci-overrides.conf.cmd +++ b/test/cfg2cmd/q35-linux-hostpci-x-pci-overrides.conf.cmd @@ -11,7 +11,7 @@ -smbios 'type=1,uuid=3dd750ce-d910-44d0-9493-525c0be4e687' \ -drive 'if=pflash,unit=0,format=raw,readonly=on,file=/usr/share/pve-edk2-firmware//OVMF_CODE.fd' \ -drive 'if=pflash,unit=1,id=drive-efidisk0,format=qcow2,file=/var/lib/vz/images/100/vm-100-disk-1.qcow2' \ - -global 'ICH9-LPC.acpi-pci-hotplug-with-bridge-support=off' \ + -global 'ICH9-LPC.acpi-pci-hotplug-with-bridge-support=off' -smp '2,sockets=2,cores=1,maxcpus=2' \ -nodefaults \ -boot 'menu=on,strict=on,reboot-timeout=1000,splash=/usr/share/qemu-server/bootsplash.jpg' \ @@ -34,4 +34,4 @@ -iscsi 'initiator-name=iqn.1993-08.org.debian:01:aabbccddeeff' \ -netdev 'type=tap,id=net0,ifname=tap8006i0,script=/usr/libexec/qemu-server/pve-bridge,downscript=/usr/libexec/qemu-server/pve-bridgedown,vhost=on' \ -device 'virtio-net-pci,mac=2E:01:68:F9:9C:87,netdev=net0,bus=pci.0,addr=0x12,id=net0,rx_queue_size=1024,tx_queue_size=256,bootindex=300' \ - -machine 'type=q35+pve1' + -machine 'type=q35+pve0' diff --git a/test/cfg2cmd/q35-linux-hostpci.conf.cmd b/test/cfg2cmd/q35-linux-hostpci.conf.cmd index 1bebae18..0abb569b 100644 --- a/test/cfg2cmd/q35-linux-hostpci.conf.cmd +++ b/test/cfg2cmd/q35-linux-hostpci.conf.cmd @@ -40,4 +40,4 @@ -iscsi 'initiator-name=iqn.1993-08.org.debian:01:aabbccddeeff' \ -netdev 'type=tap,id=net0,ifname=tap8006i0,script=/usr/libexec/qemu-server/pve-bridge,downscript=/usr/libexec/qemu-server/pve-bridgedown,vhost=on' \ -device 'virtio-net-pci,mac=2E:01:68:F9:9C:87,netdev=net0,bus=pci.0,addr=0x12,id=net0,rx_queue_size=1024,tx_queue_size=256,bootindex=300' \ - -machine 'type=q35+pve1' + -machine 'type=q35+pve0' diff --git a/test/cfg2cmd/q35-simple.conf.cmd b/test/cfg2cmd/q35-simple.conf.cmd index f42b42d5..371ea7dd 100644 --- a/test/cfg2cmd/q35-simple.conf.cmd +++ b/test/cfg2cmd/q35-simple.conf.cmd @@ -28,4 +28,4 @@ -iscsi 'initiator-name=iqn.1993-08.org.debian:01:aabbccddeeff' \ -netdev 'type=tap,id=net0,ifname=tap8006i0,script=/usr/libexec/qemu-server/pve-bridge,downscript=/usr/libexec/qemu-server/pve-bridgedown,vhost=on' \ -device 'virtio-net-pci,mac=2E:01:68:F9:9C:87,netdev=net0,bus=pci.0,addr=0x12,id=net0,rx_queue_size=1024,tx_queue_size=256,bootindex=300' \ - -machine 'type=q35+pve1' + -machine 'type=q35+pve0' diff --git a/test/cfg2cmd/q35-viommu-intel.conf.cmd b/test/cfg2cmd/q35-viommu-intel.conf.cmd index 6f71bf07..2ddc57ca 100644 --- a/test/cfg2cmd/q35-viommu-intel.conf.cmd +++ b/test/cfg2cmd/q35-viommu-intel.conf.cmd @@ -22,4 +22,4 @@ -device 'VGA,id=vga,bus=pcie.0,addr=0x1' \ -device 'virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x3,free-page-reporting=on' \ -iscsi 'initiator-name=iqn.1993-08.org.debian:01:aabbccddeeff' \ - -machine 'type=q35+pve1,kernel-irqchip=split' + -machine 'type=q35+pve0,kernel-irqchip=split' diff --git a/test/cfg2cmd/q35-viommu-virtio.conf.cmd b/test/cfg2cmd/q35-viommu-virtio.conf.cmd index bf05eff0..0ae11208 100644 --- a/test/cfg2cmd/q35-viommu-virtio.conf.cmd +++ b/test/cfg2cmd/q35-viommu-virtio.conf.cmd @@ -22,4 +22,4 @@ -device 'virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x3,free-page-reporting=on' \ -iscsi 'initiator-name=iqn.1993-08.org.debian:01:aabbccddeeff' \ -device virtio-iommu-pci \ - -machine 'type=q35+pve1' + -machine 'type=q35+pve0' diff --git a/test/cfg2cmd/seabios_serial.conf b/test/cfg2cmd/seabios_serial.conf index 7ebfa504..d2ebe57a 100644 --- a/test/cfg2cmd/seabios_serial.conf +++ b/test/cfg2cmd/seabios_serial.conf @@ -1,14 +1,10 @@ # TEST: Test for smm-related regression with SeaBIOS and serial display -bootdisk: scsi0 cores: 3 -ide2: none,media=cdrom memory: 768 name: seabiosserial net0: virtio=A2:C0:43:77:08:A0,bridge=vmbr0 numa: 0 ostype: l26 -scsi0: local:8006/vm-8006-disk-0.qcow2,discard=on,size=104858K -scsihw: virtio-scsi-pci serial0: socket smbios1: uuid=7b10d7af-b932-4c66-b2c3-3996152ec465 sockets: 1 diff --git a/test/cfg2cmd/seabios_serial.conf.cmd b/test/cfg2cmd/seabios_serial.conf.cmd index 114c6752..82b72bb8 100644 --- a/test/cfg2cmd/seabios_serial.conf.cmd +++ b/test/cfg2cmd/seabios_serial.conf.cmd @@ -25,11 +25,6 @@ -device 'isa-serial,chardev=serial0' \ -device 'virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x3,free-page-reporting=on' \ -iscsi 'initiator-name=iqn.1993-08.org.debian:01:aabbccddeeff' \ - -drive 'if=none,id=drive-ide2,media=cdrom,aio=io_uring' \ - -device 'ide-cd,bus=ide.1,unit=0,drive=drive-ide2,id=ide2,bootindex=200' \ - -device 'virtio-scsi-pci,id=scsihw0,bus=pci.0,addr=0x5' \ - -drive 'file=/var/lib/vz/images/8006/vm-8006-disk-0.qcow2,if=none,id=drive-scsi0,discard=on,format=qcow2,cache=none,aio=io_uring,detect-zeroes=unmap' \ - -device 'scsi-hd,bus=scsihw0.0,channel=0,scsi-id=0,lun=0,drive=drive-scsi0,id=scsi0,bootindex=100' \ -netdev 'type=tap,id=net0,ifname=tap8006i0,script=/usr/libexec/qemu-server/pve-bridge,downscript=/usr/libexec/qemu-server/pve-bridgedown,vhost=on' \ -device 'virtio-net-pci,mac=A2:C0:43:77:08:A0,netdev=net0,bus=pci.0,addr=0x12,id=net0,rx_queue_size=1024,tx_queue_size=256,bootindex=300' \ - -machine 'smm=off,type=pc+pve1' + -machine 'smm=off,type=pc+pve0' diff --git a/test/cfg2cmd/sev-es.conf.cmd b/test/cfg2cmd/sev-es.conf.cmd index 266b63a5..3a100306 100644 --- a/test/cfg2cmd/sev-es.conf.cmd +++ b/test/cfg2cmd/sev-es.conf.cmd @@ -27,4 +27,4 @@ -device 'virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x3,free-page-reporting=on' \ -iscsi 'initiator-name=iqn.1993-08.org.debian:01:aabbccddeeff' \ -object 'sev-guest,id=sev0,cbitpos=51,reduced-phys-bits=6,policy=0xc' \ - -machine 'type=pc+pve1,confidential-guest-support=sev0' + -machine 'type=pc+pve0,confidential-guest-support=sev0' diff --git a/test/cfg2cmd/sev-snp.conf.cmd b/test/cfg2cmd/sev-snp.conf.cmd index 858ba0d9..3308e86e 100644 --- a/test/cfg2cmd/sev-snp.conf.cmd +++ b/test/cfg2cmd/sev-snp.conf.cmd @@ -26,4 +26,4 @@ -device 'virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x3,free-page-reporting=on' \ -iscsi 'initiator-name=iqn.1993-08.org.debian:01:aabbccddeeff' \ -object 'sev-snp-guest,id=sev0,cbitpos=51,reduced-phys-bits=6,policy=0xb0000' \ - -machine 'type=pc+pve1,confidential-guest-support=sev0' + -machine 'type=pc+pve0,confidential-guest-support=sev0' diff --git a/test/cfg2cmd/sev-std.conf.cmd b/test/cfg2cmd/sev-std.conf.cmd index 76edce07..06da2ca0 100644 --- a/test/cfg2cmd/sev-std.conf.cmd +++ b/test/cfg2cmd/sev-std.conf.cmd @@ -27,4 +27,4 @@ -device 'virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x3,free-page-reporting=on' \ -iscsi 'initiator-name=iqn.1993-08.org.debian:01:aabbccddeeff' \ -object 'sev-guest,id=sev0,cbitpos=51,reduced-phys-bits=6,policy=0x8' \ - -machine 'type=pc+pve1,confidential-guest-support=sev0' + -machine 'type=pc+pve0,confidential-guest-support=sev0' diff --git a/test/cfg2cmd/simple-btrfs.conf b/test/cfg2cmd/simple-btrfs.conf index e18d1349..d9185cfd 100644 --- a/test/cfg2cmd/simple-btrfs.conf +++ b/test/cfg2cmd/simple-btrfs.conf @@ -2,6 +2,7 @@ bootdisk: scsi0 cores: 3 ide2: none,media=cdrom +machine: pc-i440fx-9.2+pve1 memory: 768 name: simple net0: virtio=A2:C0:43:77:08:A0,bridge=vmbr0 diff --git a/test/cfg2cmd/simple-btrfs.conf.cmd b/test/cfg2cmd/simple-btrfs.conf.cmd index 2d92b0f6..192e9869 100644 --- a/test/cfg2cmd/simple-btrfs.conf.cmd +++ b/test/cfg2cmd/simple-btrfs.conf.cmd @@ -32,4 +32,4 @@ -device 'scsi-hd,bus=scsihw0.0,channel=0,scsi-id=0,lun=0,drive=drive-scsi0,id=scsi0,bootindex=100' \ -netdev 'type=tap,id=net0,ifname=tap8006i0,script=/usr/libexec/qemu-server/pve-bridge,downscript=/usr/libexec/qemu-server/pve-bridgedown,vhost=on' \ -device 'virtio-net-pci,mac=A2:C0:43:77:08:A0,netdev=net0,bus=pci.0,addr=0x12,id=net0,rx_queue_size=1024,tx_queue_size=256,bootindex=300' \ - -machine 'type=pc+pve1' + -machine 'type=pc-i440fx-9.2+pve1' diff --git a/test/cfg2cmd/simple-disk-passthrough-blockdev.conf b/test/cfg2cmd/simple-disk-passthrough-blockdev.conf new file mode 100644 index 00000000..308da4ab --- /dev/null +++ b/test/cfg2cmd/simple-disk-passthrough-blockdev.conf @@ -0,0 +1,15 @@ +# TEST: Simple test for disk && cdrom passthrough +bootdisk: scsi0 +cores: 3 +ide2: cdrom,media=cdrom +memory: 768 +name: simple +net0: virtio=A2:C0:43:77:08:A0,bridge=vmbr0 +numa: 0 +ostype: l26 +scsi0: /dev/sda +scsi1: /mnt/file.raw +scsihw: virtio-scsi-pci +smbios1: uuid=7b10d7af-b932-4c66-b2c3-3996152ec465 +sockets: 1 +vmgenid: c773c261-d800-4348-9f5d-167fadd53cf8 diff --git a/test/cfg2cmd/simple-disk-passthrough-blockdev.conf.cmd b/test/cfg2cmd/simple-disk-passthrough-blockdev.conf.cmd new file mode 100644 index 00000000..eb903b9c --- /dev/null +++ b/test/cfg2cmd/simple-disk-passthrough-blockdev.conf.cmd @@ -0,0 +1,40 @@ +/usr/bin/kvm \ + -id 8006 \ + -name 'simple,debug-threads=on' \ + -no-shutdown \ + -chardev 'socket,id=qmp,path=/var/run/qemu-server/8006.qmp,server=on,wait=off' \ + -mon 'chardev=qmp,mode=control' \ + -chardev 'socket,id=qmp-event,path=/var/run/qmeventd.sock,reconnect-ms=5000' \ + -mon 'chardev=qmp-event,mode=control' \ + -pidfile /var/run/qemu-server/8006.pid \ + -daemonize \ + -smbios 'type=1,uuid=7b10d7af-b932-4c66-b2c3-3996152ec465' \ + -smp '3,sockets=1,cores=3,maxcpus=3' \ + -nodefaults \ + -boot 'menu=on,strict=on,reboot-timeout=1000,splash=/usr/share/qemu-server/bootsplash.jpg' \ + -vnc 'unix:/var/run/qemu-server/8006.vnc,password=on' \ + -cpu kvm64,enforce,+kvm_pv_eoi,+kvm_pv_unhalt,+lahf_lm,+sep \ + -m 768 \ + -global 'PIIX4_PM.disable_s3=1' \ + -global 'PIIX4_PM.disable_s4=1' \ + -device 'pci-bridge,id=pci.1,chassis_nr=1,bus=pci.0,addr=0x1e' \ + -device 'pci-bridge,id=pci.2,chassis_nr=2,bus=pci.0,addr=0x1f' \ + -device 'vmgenid,guid=c773c261-d800-4348-9f5d-167fadd53cf8' \ + -device 'piix3-usb-uhci,id=uhci,bus=pci.0,addr=0x1.0x2' \ + -device 'usb-tablet,id=tablet,bus=uhci.0,port=1' \ + -device 'VGA,id=vga,bus=pci.0,addr=0x2' \ + -device 'virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x3,free-page-reporting=on' \ + -iscsi 'initiator-name=iqn.1993-08.org.debian:01:aabbccddeeff' \ + -object '{"id":"throttle-drive-ide2","limits":{},"qom-type":"throttle-group"}' \ + -blockdev '{"driver":"throttle","file":{"cache":{"direct":false,"no-flush":false},"driver":"raw","file":{"aio":"threads","cache":{"direct":false,"no-flush":false},"driver":"host_cdrom","filename":"/dev/cdrom","node-name":"e-59mSJaWzNY8Eg6eyOAiKqyoU6Q4"},"node-name":"f-59mSJaWzNY8Eg6eyOAiKqyoU6Q4","read-only":true},"node-name":"drive-ide2","throttle-group":"throttle-drive-ide2"}' \ + -device 'ide-cd,bus=ide.1,unit=0,id=ide2,drive=drive-ide2,bootindex=200' \ + -device 'virtio-scsi-pci,id=scsihw0,bus=pci.0,addr=0x5' \ + -object '{"id":"throttle-drive-scsi0","limits":{},"qom-type":"throttle-group"}' \ + -blockdev '{"driver":"throttle","file":{"cache":{"direct":true,"no-flush":false},"driver":"raw","file":{"aio":"io_uring","cache":{"direct":true,"no-flush":false},"detect-zeroes":"on","discard":"ignore","driver":"host_device","filename":"/dev/sda","node-name":"e-4BHkNLIiz2quuiY0o0yQ2WO8SUG"},"node-name":"f-4BHkNLIiz2quuiY0o0yQ2WO8SUG","read-only":false},"node-name":"drive-scsi0","throttle-group":"throttle-drive-scsi0"}' \ + -device 'scsi-hd,bus=scsihw0.0,channel=0,scsi-id=0,lun=0,drive=drive-scsi0,id=scsi0,bootindex=100' \ + -object '{"id":"throttle-drive-scsi1","limits":{},"qom-type":"throttle-group"}' \ + -blockdev '{"driver":"throttle","file":{"cache":{"direct":true,"no-flush":false},"driver":"raw","file":{"aio":"io_uring","cache":{"direct":true,"no-flush":false},"detect-zeroes":"on","discard":"ignore","driver":"file","filename":"/mnt/file.raw","node-name":"e-4Z0R2kiQGecKCcma0k2qO0CCQ0O"},"node-name":"f-4Z0R2kiQGecKCcma0k2qO0CCQ0O","read-only":false},"node-name":"drive-scsi1","throttle-group":"throttle-drive-scsi1"}' \ + -device 'scsi-hd,bus=scsihw0.0,channel=0,scsi-id=0,lun=1,drive=drive-scsi1,id=scsi1' \ + -netdev 'type=tap,id=net0,ifname=tap8006i0,script=/usr/libexec/qemu-server/pve-bridge,downscript=/usr/libexec/qemu-server/pve-bridgedown,vhost=on' \ + -device 'virtio-net-pci,mac=A2:C0:43:77:08:A0,netdev=net0,bus=pci.0,addr=0x12,id=net0,rx_queue_size=1024,tx_queue_size=256,bootindex=300' \ + -machine 'type=pc+pve0' diff --git a/test/cfg2cmd/simple-disk-passthrough.conf b/test/cfg2cmd/simple-disk-passthrough.conf index 308da4ab..274709b9 100644 --- a/test/cfg2cmd/simple-disk-passthrough.conf +++ b/test/cfg2cmd/simple-disk-passthrough.conf @@ -2,6 +2,7 @@ bootdisk: scsi0 cores: 3 ide2: cdrom,media=cdrom +machine: pc-i440fx-9.2+pve1 memory: 768 name: simple net0: virtio=A2:C0:43:77:08:A0,bridge=vmbr0 diff --git a/test/cfg2cmd/simple-disk-passthrough.conf.cmd b/test/cfg2cmd/simple-disk-passthrough.conf.cmd index ca613a8f..add6c6e2 100644 --- a/test/cfg2cmd/simple-disk-passthrough.conf.cmd +++ b/test/cfg2cmd/simple-disk-passthrough.conf.cmd @@ -34,4 +34,4 @@ -device 'scsi-hd,bus=scsihw0.0,channel=0,scsi-id=0,lun=1,drive=drive-scsi1,id=scsi1' \ -netdev 'type=tap,id=net0,ifname=tap8006i0,script=/usr/libexec/qemu-server/pve-bridge,downscript=/usr/libexec/qemu-server/pve-bridgedown,vhost=on' \ -device 'virtio-net-pci,mac=A2:C0:43:77:08:A0,netdev=net0,bus=pci.0,addr=0x12,id=net0,rx_queue_size=1024,tx_queue_size=256,bootindex=300' \ - -machine 'type=pc+pve1' + -machine 'type=pc-i440fx-9.2+pve1' diff --git a/test/cfg2cmd/simple-rbd-blockdev.conf b/test/cfg2cmd/simple-rbd-blockdev.conf new file mode 100644 index 00000000..535491de --- /dev/null +++ b/test/cfg2cmd/simple-rbd-blockdev.conf @@ -0,0 +1,15 @@ +# TEST: Simple test for RBD && KRBD backend vm +bootdisk: scsi0 +cores: 3 +ide2: none,media=cdrom +memory: 768 +name: simple +net0: virtio=A2:C0:43:77:08:A0,bridge=vmbr0 +numa: 0 +ostype: l26 +scsi0: rbd-store:vm-8006-disk-0,discard=on,size=104858K +scsi1: krbd-store:vm-8006-disk-0,discard=on,size=104858K +scsihw: virtio-scsi-pci +smbios1: uuid=7b10d7af-b932-4c66-b2c3-3996152ec465 +sockets: 1 +vmgenid: c773c261-d800-4348-1010-1010add53cf8 diff --git a/test/cfg2cmd/simple-rbd-blockdev.conf.cmd b/test/cfg2cmd/simple-rbd-blockdev.conf.cmd new file mode 100644 index 00000000..5039639c --- /dev/null +++ b/test/cfg2cmd/simple-rbd-blockdev.conf.cmd @@ -0,0 +1,38 @@ +/usr/bin/kvm \ + -id 8006 \ + -name 'simple,debug-threads=on' \ + -no-shutdown \ + -chardev 'socket,id=qmp,path=/var/run/qemu-server/8006.qmp,server=on,wait=off' \ + -mon 'chardev=qmp,mode=control' \ + -chardev 'socket,id=qmp-event,path=/var/run/qmeventd.sock,reconnect-ms=5000' \ + -mon 'chardev=qmp-event,mode=control' \ + -pidfile /var/run/qemu-server/8006.pid \ + -daemonize \ + -smbios 'type=1,uuid=7b10d7af-b932-4c66-b2c3-3996152ec465' \ + -smp '3,sockets=1,cores=3,maxcpus=3' \ + -nodefaults \ + -boot 'menu=on,strict=on,reboot-timeout=1000,splash=/usr/share/qemu-server/bootsplash.jpg' \ + -vnc 'unix:/var/run/qemu-server/8006.vnc,password=on' \ + -cpu kvm64,enforce,+kvm_pv_eoi,+kvm_pv_unhalt,+lahf_lm,+sep \ + -m 768 \ + -global 'PIIX4_PM.disable_s3=1' \ + -global 'PIIX4_PM.disable_s4=1' \ + -device 'pci-bridge,id=pci.1,chassis_nr=1,bus=pci.0,addr=0x1e' \ + -device 'pci-bridge,id=pci.2,chassis_nr=2,bus=pci.0,addr=0x1f' \ + -device 'vmgenid,guid=c773c261-d800-4348-1010-1010add53cf8' \ + -device 'piix3-usb-uhci,id=uhci,bus=pci.0,addr=0x1.0x2' \ + -device 'usb-tablet,id=tablet,bus=uhci.0,port=1' \ + -device 'VGA,id=vga,bus=pci.0,addr=0x2' \ + -device 'virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x3,free-page-reporting=on' \ + -iscsi 'initiator-name=iqn.1993-08.org.debian:01:aabbccddeeff' \ + -device 'ide-cd,bus=ide.1,unit=0,id=ide2,bootindex=200' \ + -device 'virtio-scsi-pci,id=scsihw0,bus=pci.0,addr=0x5' \ + -object '{"id":"throttle-drive-scsi0","limits":{},"qom-type":"throttle-group"}' \ + -blockdev '{"driver":"throttle","file":{"cache":{"direct":true,"no-flush":false},"driver":"raw","file":{"auth-client-required":["none"],"cache":{"direct":true,"no-flush":false},"detect-zeroes":"unmap","discard":"unmap","driver":"rbd","image":"vm-8006-disk-0","node-name":"e-WH7PdKLViYcsYSWkcQoqQ0U40uI","pool":"cpool","server":[{"host":"127.0.0.42","port":"3300"},{"host":"127.0.0.21","port":"3300"},{"host":"::1","port":"3300"}]},"node-name":"f-WH7PdKLViYcsYSWkcQoqQ0U40uI","read-only":false},"node-name":"drive-scsi0","throttle-group":"throttle-drive-scsi0"}' \ + -device 'scsi-hd,bus=scsihw0.0,channel=0,scsi-id=0,lun=0,drive=drive-scsi0,id=scsi0,bootindex=100' \ + -object '{"id":"throttle-drive-scsi1","limits":{},"qom-type":"throttle-group"}' \ + -blockdev '{"driver":"throttle","file":{"cache":{"direct":true,"no-flush":false},"driver":"raw","file":{"aio":"io_uring","cache":{"direct":true,"no-flush":false},"detect-zeroes":"unmap","discard":"unmap","driver":"host_device","filename":"/dev/rbd-pve/fc4181a6-56eb-4f68-b452-8ba1f381ca2a/cpool/vm-8006-disk-0","node-name":"e-426qW8R920KGyGqY480ymoSywiU"},"node-name":"f-426qW8R920KGyGqY480ymoSywiU","read-only":false},"node-name":"drive-scsi1","throttle-group":"throttle-drive-scsi1"}' \ + -device 'scsi-hd,bus=scsihw0.0,channel=0,scsi-id=0,lun=1,drive=drive-scsi1,id=scsi1' + -netdev 'type=tap,id=net0,ifname=tap8006i0,script=/usr/libexec/qemu-server/pve-bridge,downscript=/usr/libexec/qemu-server/pve-bridgedown,vhost=on' \ + -device 'virtio-net-pci,mac=A2:C0:43:77:08:A0,netdev=net0,bus=pci.0,addr=0x12,id=net0,rx_queue_size=1024,tx_queue_size=256,bootindex=300' \ + -machine 'type=pc+pve0' diff --git a/test/cfg2cmd/simple-rbd.conf b/test/cfg2cmd/simple-rbd.conf index 535491de..491fe1c7 100644 --- a/test/cfg2cmd/simple-rbd.conf +++ b/test/cfg2cmd/simple-rbd.conf @@ -2,6 +2,7 @@ bootdisk: scsi0 cores: 3 ide2: none,media=cdrom +machine: pc-i440fx-9.2+pve1 memory: 768 name: simple net0: virtio=A2:C0:43:77:08:A0,bridge=vmbr0 diff --git a/test/cfg2cmd/simple-rbd.conf.cmd b/test/cfg2cmd/simple-rbd.conf.cmd index 644ff18c..2ba43bbf 100644 --- a/test/cfg2cmd/simple-rbd.conf.cmd +++ b/test/cfg2cmd/simple-rbd.conf.cmd @@ -34,4 +34,4 @@ -device 'scsi-hd,bus=scsihw0.0,channel=0,scsi-id=0,lun=1,drive=drive-scsi1,id=scsi1' -netdev 'type=tap,id=net0,ifname=tap8006i0,script=/usr/libexec/qemu-server/pve-bridge,downscript=/usr/libexec/qemu-server/pve-bridgedown,vhost=on' \ -device 'virtio-net-pci,mac=A2:C0:43:77:08:A0,netdev=net0,bus=pci.0,addr=0x12,id=net0,rx_queue_size=1024,tx_queue_size=256,bootindex=300' \ - -machine 'type=pc+pve1' + -machine 'type=pc-i440fx-9.2+pve1' diff --git a/test/cfg2cmd/simple-virtio-blk-blockdev.conf b/test/cfg2cmd/simple-virtio-blk-blockdev.conf new file mode 100644 index 00000000..d9db7580 --- /dev/null +++ b/test/cfg2cmd/simple-virtio-blk-blockdev.conf @@ -0,0 +1,13 @@ +# TEST: Test for a basic configuration with a VirtIO Block IOThread disk +bootdisk: virtio0 +cores: 3 +ide2: none,media=cdrom +memory: 768 +name: simple +net0: virtio=A2:C0:43:77:08:A0,bridge=vmbr0 +numa: 0 +ostype: l26 +smbios1: uuid=7b10d7af-b932-4c66-b2c3-3996152ec465 +sockets: 1 +virtio0: local:8006/vm-8006-disk-0.qcow2,discard=on,iothread=1,size=104858K +vmgenid: c773c261-d800-4348-9f5d-167fadd53cf8 diff --git a/test/cfg2cmd/simple-virtio-blk-blockdev.conf.cmd b/test/cfg2cmd/simple-virtio-blk-blockdev.conf.cmd new file mode 100644 index 00000000..e1aee040 --- /dev/null +++ b/test/cfg2cmd/simple-virtio-blk-blockdev.conf.cmd @@ -0,0 +1,35 @@ +/usr/bin/kvm \ + -id 8006 \ + -name 'simple,debug-threads=on' \ + -no-shutdown \ + -chardev 'socket,id=qmp,path=/var/run/qemu-server/8006.qmp,server=on,wait=off' \ + -mon 'chardev=qmp,mode=control' \ + -chardev 'socket,id=qmp-event,path=/var/run/qmeventd.sock,reconnect-ms=5000' \ + -mon 'chardev=qmp-event,mode=control' \ + -pidfile /var/run/qemu-server/8006.pid \ + -daemonize \ + -smbios 'type=1,uuid=7b10d7af-b932-4c66-b2c3-3996152ec465' \ + -smp '3,sockets=1,cores=3,maxcpus=3' \ + -nodefaults \ + -boot 'menu=on,strict=on,reboot-timeout=1000,splash=/usr/share/qemu-server/bootsplash.jpg' \ + -vnc 'unix:/var/run/qemu-server/8006.vnc,password=on' \ + -cpu kvm64,enforce,+kvm_pv_eoi,+kvm_pv_unhalt,+lahf_lm,+sep \ + -m 768 \ + -object 'iothread,id=iothread-virtio0' \ + -global 'PIIX4_PM.disable_s3=1' \ + -global 'PIIX4_PM.disable_s4=1' \ + -device 'pci-bridge,id=pci.1,chassis_nr=1,bus=pci.0,addr=0x1e' \ + -device 'pci-bridge,id=pci.2,chassis_nr=2,bus=pci.0,addr=0x1f' \ + -device 'vmgenid,guid=c773c261-d800-4348-9f5d-167fadd53cf8' \ + -device 'piix3-usb-uhci,id=uhci,bus=pci.0,addr=0x1.0x2' \ + -device 'usb-tablet,id=tablet,bus=uhci.0,port=1' \ + -device 'VGA,id=vga,bus=pci.0,addr=0x2' \ + -device 'virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x3,free-page-reporting=on' \ + -iscsi 'initiator-name=iqn.1993-08.org.debian:01:aabbccddeeff' \ + -device 'ide-cd,bus=ide.1,unit=0,id=ide2,bootindex=200' \ + -object '{"id":"throttle-drive-virtio0","limits":{},"qom-type":"throttle-group"}' \ + -blockdev '{"driver":"throttle","file":{"cache":{"direct":true,"no-flush":false},"driver":"qcow2","file":{"aio":"io_uring","cache":{"direct":true,"no-flush":false},"detect-zeroes":"unmap","discard":"unmap","driver":"file","filename":"/var/lib/vz/images/8006/vm-8006-disk-0.qcow2","node-name":"e-IQHs2Stp3mYmKYSGmUACmUu8i6u"},"node-name":"f-IQHs2Stp3mYmKYSGmUACmUu8i6u","read-only":false},"node-name":"drive-virtio0","throttle-group":"throttle-drive-virtio0"}' \ + -device 'virtio-blk-pci,drive=drive-virtio0,id=virtio0,bus=pci.0,addr=0xa,iothread=iothread-virtio0,bootindex=100' \ + -netdev 'type=tap,id=net0,ifname=tap8006i0,script=/usr/libexec/qemu-server/pve-bridge,downscript=/usr/libexec/qemu-server/pve-bridgedown,vhost=on' \ + -device 'virtio-net-pci,mac=A2:C0:43:77:08:A0,netdev=net0,bus=pci.0,addr=0x12,id=net0,rx_queue_size=1024,tx_queue_size=256,bootindex=300' \ + -machine 'type=pc+pve0' diff --git a/test/cfg2cmd/simple-virtio-blk.conf b/test/cfg2cmd/simple-virtio-blk.conf index d9db7580..0b92852a 100644 --- a/test/cfg2cmd/simple-virtio-blk.conf +++ b/test/cfg2cmd/simple-virtio-blk.conf @@ -2,6 +2,7 @@ bootdisk: virtio0 cores: 3 ide2: none,media=cdrom +machine: pc-i440fx-9.2+pve1 memory: 768 name: simple net0: virtio=A2:C0:43:77:08:A0,bridge=vmbr0 diff --git a/test/cfg2cmd/simple-virtio-blk.conf.cmd b/test/cfg2cmd/simple-virtio-blk.conf.cmd index 1680f541..092cffd1 100644 --- a/test/cfg2cmd/simple-virtio-blk.conf.cmd +++ b/test/cfg2cmd/simple-virtio-blk.conf.cmd @@ -32,4 +32,4 @@ -device 'virtio-blk-pci,drive=drive-virtio0,id=virtio0,bus=pci.0,addr=0xa,iothread=iothread-virtio0,bootindex=100' \ -netdev 'type=tap,id=net0,ifname=tap8006i0,script=/usr/libexec/qemu-server/pve-bridge,downscript=/usr/libexec/qemu-server/pve-bridgedown,vhost=on' \ -device 'virtio-net-pci,mac=A2:C0:43:77:08:A0,netdev=net0,bus=pci.0,addr=0x12,id=net0,rx_queue_size=1024,tx_queue_size=256,bootindex=300' \ - -machine 'type=pc+pve1' + -machine 'type=pc-i440fx-9.2+pve1' diff --git a/test/cfg2cmd/simple-zfs-over-iscsi-blockdev.conf b/test/cfg2cmd/simple-zfs-over-iscsi-blockdev.conf new file mode 100644 index 00000000..055c6fc4 --- /dev/null +++ b/test/cfg2cmd/simple-zfs-over-iscsi-blockdev.conf @@ -0,0 +1,14 @@ +# TEST: Simple test for zfs-over-scsi backed VM. +bootdisk: scsi0 +cores: 3 +ide2: none,media=cdrom +memory: 768 +name: simple +net0: virtio=A2:C0:43:77:08:A0,bridge=vmbr0 +numa: 0 +ostype: l26 +scsi0: zfs-over-iscsi-store:vm-8006-disk-0,discard=on,size=104858K +scsihw: virtio-scsi-pci +smbios1: uuid=7b10d7af-b932-4c66-b2c3-3996152ec465 +sockets: 1 +vmgenid: c773c261-d800-4348-1010-1010add53cf8 diff --git a/test/cfg2cmd/simple-zfs-over-iscsi-blockdev.conf.cmd b/test/cfg2cmd/simple-zfs-over-iscsi-blockdev.conf.cmd new file mode 100644 index 00000000..2e97685f --- /dev/null +++ b/test/cfg2cmd/simple-zfs-over-iscsi-blockdev.conf.cmd @@ -0,0 +1,35 @@ +/usr/bin/kvm \ + -id 8006 \ + -name 'simple,debug-threads=on' \ + -no-shutdown \ + -chardev 'socket,id=qmp,path=/var/run/qemu-server/8006.qmp,server=on,wait=off' \ + -mon 'chardev=qmp,mode=control' \ + -chardev 'socket,id=qmp-event,path=/var/run/qmeventd.sock,reconnect-ms=5000' \ + -mon 'chardev=qmp-event,mode=control' \ + -pidfile /var/run/qemu-server/8006.pid \ + -daemonize \ + -smbios 'type=1,uuid=7b10d7af-b932-4c66-b2c3-3996152ec465' \ + -smp '3,sockets=1,cores=3,maxcpus=3' \ + -nodefaults \ + -boot 'menu=on,strict=on,reboot-timeout=1000,splash=/usr/share/qemu-server/bootsplash.jpg' \ + -vnc 'unix:/var/run/qemu-server/8006.vnc,password=on' \ + -cpu kvm64,enforce,+kvm_pv_eoi,+kvm_pv_unhalt,+lahf_lm,+sep \ + -m 768 \ + -global 'PIIX4_PM.disable_s3=1' \ + -global 'PIIX4_PM.disable_s4=1' \ + -device 'pci-bridge,id=pci.1,chassis_nr=1,bus=pci.0,addr=0x1e' \ + -device 'pci-bridge,id=pci.2,chassis_nr=2,bus=pci.0,addr=0x1f' \ + -device 'vmgenid,guid=c773c261-d800-4348-1010-1010add53cf8' \ + -device 'piix3-usb-uhci,id=uhci,bus=pci.0,addr=0x1.0x2' \ + -device 'usb-tablet,id=tablet,bus=uhci.0,port=1' \ + -device 'VGA,id=vga,bus=pci.0,addr=0x2' \ + -device 'virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x3,free-page-reporting=on' \ + -iscsi 'initiator-name=iqn.1993-08.org.debian:01:aabbccddeeff' \ + -device 'ide-cd,bus=ide.1,unit=0,id=ide2,bootindex=200' \ + -device 'virtio-scsi-pci,id=scsihw0,bus=pci.0,addr=0x5' \ + -object '{"id":"throttle-drive-scsi0","limits":{},"qom-type":"throttle-group"}' \ + -blockdev '{"driver":"throttle","file":{"cache":{"direct":true,"no-flush":false},"driver":"raw","file":{"cache":{"direct":true,"no-flush":false},"detect-zeroes":"unmap","discard":"unmap","driver":"iscsi","lun":0,"node-name":"e-R6iR6TPY7y2M8YsIOasguK8KEEo","portal":"127.0.0.1","target":"iqn.2019-10.org.test:foobar","transport":"tcp"},"node-name":"f-R6iR6TPY7y2M8YsIOasguK8KEEo","read-only":false},"node-name":"drive-scsi0","throttle-group":"throttle-drive-scsi0"}' \ + -device 'scsi-hd,bus=scsihw0.0,channel=0,scsi-id=0,lun=0,drive=drive-scsi0,id=scsi0,bootindex=100' \ + -netdev 'type=tap,id=net0,ifname=tap8006i0,script=/usr/libexec/qemu-server/pve-bridge,downscript=/usr/libexec/qemu-server/pve-bridgedown,vhost=on' \ + -device 'virtio-net-pci,mac=A2:C0:43:77:08:A0,netdev=net0,bus=pci.0,addr=0x12,id=net0,rx_queue_size=1024,tx_queue_size=256,bootindex=300' \ + -machine 'type=pc+pve0' diff --git a/test/cfg2cmd/simple-zfs-over-iscsi.conf b/test/cfg2cmd/simple-zfs-over-iscsi.conf index 055c6fc4..5d77d4e8 100644 --- a/test/cfg2cmd/simple-zfs-over-iscsi.conf +++ b/test/cfg2cmd/simple-zfs-over-iscsi.conf @@ -2,6 +2,7 @@ bootdisk: scsi0 cores: 3 ide2: none,media=cdrom +machine: pc-i440fx-9.2+pve1 memory: 768 name: simple net0: virtio=A2:C0:43:77:08:A0,bridge=vmbr0 diff --git a/test/cfg2cmd/simple-zfs-over-iscsi.conf.cmd b/test/cfg2cmd/simple-zfs-over-iscsi.conf.cmd index 196d74d4..fc0626ae 100644 --- a/test/cfg2cmd/simple-zfs-over-iscsi.conf.cmd +++ b/test/cfg2cmd/simple-zfs-over-iscsi.conf.cmd @@ -32,4 +32,4 @@ -device 'scsi-hd,bus=scsihw0.0,channel=0,scsi-id=0,lun=0,drive=drive-scsi0,id=scsi0,bootindex=100' \ -netdev 'type=tap,id=net0,ifname=tap8006i0,script=/usr/libexec/qemu-server/pve-bridge,downscript=/usr/libexec/qemu-server/pve-bridgedown,vhost=on' \ -device 'virtio-net-pci,mac=A2:C0:43:77:08:A0,netdev=net0,bus=pci.0,addr=0x12,id=net0,rx_queue_size=1024,tx_queue_size=256,bootindex=300' \ - -machine 'type=pc+pve1' + -machine 'type=pc-i440fx-9.2+pve1' diff --git a/test/cfg2cmd/simple1-blockdev.conf b/test/cfg2cmd/simple1-blockdev.conf new file mode 100644 index 00000000..9feb9d26 --- /dev/null +++ b/test/cfg2cmd/simple1-blockdev.conf @@ -0,0 +1,14 @@ +# TEST: Simple test for a basic configuration with no special things +bootdisk: scsi0 +cores: 3 +ide2: none,media=cdrom +memory: 768 +name: simple +net0: virtio=A2:C0:43:77:08:A0,bridge=vmbr0 +numa: 0 +ostype: l26 +scsi0: local:8006/vm-8006-disk-0.qcow2,discard=on,size=104858K +scsihw: virtio-scsi-pci +smbios1: uuid=7b10d7af-b932-4c66-b2c3-3996152ec465 +sockets: 1 +vmgenid: c773c261-d800-4348-9f5d-167fadd53cf8 diff --git a/test/cfg2cmd/simple1-blockdev.conf.cmd b/test/cfg2cmd/simple1-blockdev.conf.cmd new file mode 100644 index 00000000..6d960396 --- /dev/null +++ b/test/cfg2cmd/simple1-blockdev.conf.cmd @@ -0,0 +1,35 @@ +/usr/bin/kvm \ + -id 8006 \ + -name 'simple,debug-threads=on' \ + -no-shutdown \ + -chardev 'socket,id=qmp,path=/var/run/qemu-server/8006.qmp,server=on,wait=off' \ + -mon 'chardev=qmp,mode=control' \ + -chardev 'socket,id=qmp-event,path=/var/run/qmeventd.sock,reconnect-ms=5000' \ + -mon 'chardev=qmp-event,mode=control' \ + -pidfile /var/run/qemu-server/8006.pid \ + -daemonize \ + -smbios 'type=1,uuid=7b10d7af-b932-4c66-b2c3-3996152ec465' \ + -smp '3,sockets=1,cores=3,maxcpus=3' \ + -nodefaults \ + -boot 'menu=on,strict=on,reboot-timeout=1000,splash=/usr/share/qemu-server/bootsplash.jpg' \ + -vnc 'unix:/var/run/qemu-server/8006.vnc,password=on' \ + -cpu kvm64,enforce,+kvm_pv_eoi,+kvm_pv_unhalt,+lahf_lm,+sep \ + -m 768 \ + -global 'PIIX4_PM.disable_s3=1' \ + -global 'PIIX4_PM.disable_s4=1' \ + -device 'pci-bridge,id=pci.1,chassis_nr=1,bus=pci.0,addr=0x1e' \ + -device 'pci-bridge,id=pci.2,chassis_nr=2,bus=pci.0,addr=0x1f' \ + -device 'vmgenid,guid=c773c261-d800-4348-9f5d-167fadd53cf8' \ + -device 'piix3-usb-uhci,id=uhci,bus=pci.0,addr=0x1.0x2' \ + -device 'usb-tablet,id=tablet,bus=uhci.0,port=1' \ + -device 'VGA,id=vga,bus=pci.0,addr=0x2' \ + -device 'virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x3,free-page-reporting=on' \ + -iscsi 'initiator-name=iqn.1993-08.org.debian:01:aabbccddeeff' \ + -device 'ide-cd,bus=ide.1,unit=0,id=ide2,bootindex=200' \ + -device 'virtio-scsi-pci,id=scsihw0,bus=pci.0,addr=0x5' \ + -object '{"id":"throttle-drive-scsi0","limits":{},"qom-type":"throttle-group"}' \ + -blockdev '{"driver":"throttle","file":{"cache":{"direct":true,"no-flush":false},"driver":"qcow2","file":{"aio":"io_uring","cache":{"direct":true,"no-flush":false},"detect-zeroes":"unmap","discard":"unmap","driver":"file","filename":"/var/lib/vz/images/8006/vm-8006-disk-0.qcow2","node-name":"e-IQHs2Stp3mYmKYSGmUACmUu8i6u"},"node-name":"f-IQHs2Stp3mYmKYSGmUACmUu8i6u","read-only":false},"node-name":"drive-scsi0","throttle-group":"throttle-drive-scsi0"}' \ + -device 'scsi-hd,bus=scsihw0.0,channel=0,scsi-id=0,lun=0,drive=drive-scsi0,id=scsi0,bootindex=100' \ + -netdev 'type=tap,id=net0,ifname=tap8006i0,script=/usr/libexec/qemu-server/pve-bridge,downscript=/usr/libexec/qemu-server/pve-bridgedown,vhost=on' \ + -device 'virtio-net-pci,mac=A2:C0:43:77:08:A0,netdev=net0,bus=pci.0,addr=0x12,id=net0,rx_queue_size=1024,tx_queue_size=256,bootindex=300' \ + -machine 'type=pc+pve0' diff --git a/test/cfg2cmd/simple1-template.conf.cmd b/test/cfg2cmd/simple1-template.conf.cmd index 1de512e8..28be21c4 100644 --- a/test/cfg2cmd/simple1-template.conf.cmd +++ b/test/cfg2cmd/simple1-template.conf.cmd @@ -23,13 +23,14 @@ -device 'usb-tablet,id=tablet,bus=uhci.0,port=1' \ -device 'virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x3,free-page-reporting=on' \ -iscsi 'initiator-name=iqn.1993-08.org.debian:01:aabbccddeeff' \ - -drive 'if=none,id=drive-ide2,media=cdrom,aio=io_uring' \ - -device 'ide-cd,bus=ide.1,unit=0,drive=drive-ide2,id=ide2,bootindex=200' \ + -device 'ide-cd,bus=ide.1,unit=0,id=ide2,bootindex=200' \ -device 'virtio-scsi-pci,id=scsihw0,bus=pci.0,addr=0x5' \ - -drive 'file=/var/lib/vz/images/8006/base-8006-disk-1.qcow2,if=none,id=drive-scsi0,discard=on,format=qcow2,cache=none,aio=io_uring,detect-zeroes=unmap,readonly=on' \ + -object '{"id":"throttle-drive-scsi0","limits":{},"qom-type":"throttle-group"}' \ + -blockdev '{"driver":"throttle","file":{"cache":{"direct":true,"no-flush":false},"driver":"qcow2","file":{"aio":"io_uring","cache":{"direct":true,"no-flush":false},"detect-zeroes":"unmap","discard":"unmap","driver":"file","filename":"/var/lib/vz/images/8006/base-8006-disk-1.qcow2","node-name":"e-ZRitpbHqRyeSoKUmIwwMc4Uq0oQ"},"node-name":"f-ZRitpbHqRyeSoKUmIwwMc4Uq0oQ","read-only":true},"node-name":"drive-scsi0","throttle-group":"throttle-drive-scsi0"}' \ -device 'scsi-hd,bus=scsihw0.0,channel=0,scsi-id=0,lun=0,drive=drive-scsi0,id=scsi0' \ -device 'ahci,id=ahci0,multifunction=on,bus=pci.0,addr=0x7' \ - -drive 'file=/var/lib/vz/images/8006/base-8006-disk-0.qcow2,if=none,id=drive-sata0,discard=on,format=qcow2,cache=none,aio=io_uring,detect-zeroes=unmap' \ - -device 'ide-hd,bus=ahci0.0,drive=drive-sata0,id=sata0' \ - -machine 'accel=tcg,smm=off,type=pc+pve1' \ + -object '{"id":"throttle-drive-sata0","limits":{},"qom-type":"throttle-group"}' \ + -blockdev '{"driver":"throttle","file":{"cache":{"direct":true,"no-flush":false},"driver":"qcow2","file":{"aio":"io_uring","cache":{"direct":true,"no-flush":false},"detect-zeroes":"unmap","discard":"unmap","driver":"file","filename":"/var/lib/vz/images/8006/base-8006-disk-0.qcow2","node-name":"e-Nc8rhHZ7kcE2uuU2M8keyicwm0w"},"node-name":"f-Nc8rhHZ7kcE2uuU2M8keyicwm0w","read-only":false},"node-name":"drive-sata0","throttle-group":"throttle-drive-sata0"}' \ + -device 'ide-hd,bus=ahci0.0,id=sata0,drive=drive-sata0' \ + -machine 'accel=tcg,smm=off,type=pc+pve0' \ -snapshot diff --git a/test/cfg2cmd/simple1.conf b/test/cfg2cmd/simple1.conf index 9feb9d26..2fdd30bc 100644 --- a/test/cfg2cmd/simple1.conf +++ b/test/cfg2cmd/simple1.conf @@ -2,6 +2,7 @@ bootdisk: scsi0 cores: 3 ide2: none,media=cdrom +machine: pc-i440fx-9.2+pve1 memory: 768 name: simple net0: virtio=A2:C0:43:77:08:A0,bridge=vmbr0 diff --git a/test/cfg2cmd/simple1.conf.cmd b/test/cfg2cmd/simple1.conf.cmd index c7fa1e0a..aab53fdc 100644 --- a/test/cfg2cmd/simple1.conf.cmd +++ b/test/cfg2cmd/simple1.conf.cmd @@ -32,4 +32,4 @@ -device 'scsi-hd,bus=scsihw0.0,channel=0,scsi-id=0,lun=0,drive=drive-scsi0,id=scsi0,bootindex=100' \ -netdev 'type=tap,id=net0,ifname=tap8006i0,script=/usr/libexec/qemu-server/pve-bridge,downscript=/usr/libexec/qemu-server/pve-bridgedown,vhost=on' \ -device 'virtio-net-pci,mac=A2:C0:43:77:08:A0,netdev=net0,bus=pci.0,addr=0x12,id=net0,rx_queue_size=1024,tx_queue_size=256,bootindex=300' \ - -machine 'type=pc+pve1' + -machine 'type=pc-i440fx-9.2+pve1' diff --git a/test/cfg2cmd/vnc-clipboard-spice.conf.cmd b/test/cfg2cmd/vnc-clipboard-spice.conf.cmd index 883251cf..8915bcf4 100644 --- a/test/cfg2cmd/vnc-clipboard-spice.conf.cmd +++ b/test/cfg2cmd/vnc-clipboard-spice.conf.cmd @@ -26,4 +26,4 @@ -spice 'tls-port=61000,addr=127.0.0.1,tls-ciphers=HIGH,seamless-migration=on' \ -device 'virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x3,free-page-reporting=on' \ -iscsi 'initiator-name=iqn.1993-08.org.debian:01:aabbccddeeff' \ - -machine 'type=pc+pve1' + -machine 'type=pc+pve0' diff --git a/test/cfg2cmd/vnc-clipboard-std.conf.cmd b/test/cfg2cmd/vnc-clipboard-std.conf.cmd index ce0e4be4..26341d3d 100644 --- a/test/cfg2cmd/vnc-clipboard-std.conf.cmd +++ b/test/cfg2cmd/vnc-clipboard-std.conf.cmd @@ -26,4 +26,4 @@ -device 'virtserialport,chardev=vdagent,name=com.redhat.spice.0' \ -device 'virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x3,free-page-reporting=on' \ -iscsi 'initiator-name=iqn.1993-08.org.debian:01:aabbccddeeff' \ - -machine 'type=pc+pve1' + -machine 'type=pc+pve0' diff --git a/test/run_config2command_tests.pl b/test/run_config2command_tests.pl index f94d9c02..d689fc5b 100755 --- a/test/run_config2command_tests.pl +++ b/test/run_config2command_tests.pl @@ -247,6 +247,25 @@ $qemu_server_module->mock( }, ); +my $storage_plugin_module = Test::MockModule->new("PVE::Storage::Plugin"); +$storage_plugin_module->mock( + qemu_blockdev_options => sub { + my ($class, $scfg, $storeid, $volname, $options) = @_; + + my ($path) = $class->filesystem_path($scfg, $volname, $options->{'snapshot-name'}); + + my $blockdev = {}; + if ($path =~ m/^\/dev/) { + $blockdev = { driver => 'host_device', filename => $path}; + } elsif ($path =~ m/^\//) { + $blockdev = { driver => 'file', filename => $path}; + } else { + die "storage plugin doesn't implement qemu_blockdev_options() method\n"; + } + return $blockdev; + }, +); + my $zfsplugin_module = Test::MockModule->new("PVE::Storage::ZFSPlugin"); $zfsplugin_module->mock( zfs_get_lu_name => sub { @@ -469,6 +488,13 @@ $pci_module->mock( } ); +my $storage_module = Test::MockModule->new("PVE::Storage"); +$storage_module->mock( + activate_volumes => sub { + return; + } +); + sub diff($$) { my ($a, $b) = @_; return if $a eq $b; -- 2.39.5 --===============7484685111218873872== Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ pve-devel mailing list pve-devel@lists.proxmox.com https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel --===============7484685111218873872==--