The throttle block driver does not support issuing ioctls. While the driver could be patched in QEMU to pass along ioctls to the child, that seems like a hack, because with scsi-block, throttle limits already do not apply. This was already the case with '-drive' in Proxmox VE 8.
Note that live mirroring would require special handling to make the target be below a throttle node with the correct node name, but it already is not supported for such disks: > # qm disk move 103 scsi1 lvm > unable to parse volume ID '/dev/sdg' Signed-off-by: Fiona Ebner <f.eb...@proxmox.com> --- src/PVE/QemuServer/Blockdev.pm | 8 ++++++++ src/test/cfg2cmd/scsiblk.conf | 5 +++++ src/test/cfg2cmd/scsiblk.conf.cmd | 32 +++++++++++++++++++++++++++++++ 3 files changed, 45 insertions(+) create mode 100644 src/test/cfg2cmd/scsiblk.conf create mode 100644 src/test/cfg2cmd/scsiblk.conf.cmd diff --git a/src/PVE/QemuServer/Blockdev.pm b/src/PVE/QemuServer/Blockdev.pm index f5798cbf..d4062148 100644 --- a/src/PVE/QemuServer/Blockdev.pm +++ b/src/PVE/QemuServer/Blockdev.pm @@ -478,6 +478,14 @@ sub generate_drive_blockdev { }; } + if ($drive->{scsiblock}) { + # When using scsi-block for the front-end device, throttling would not work in any case, and + # the throttle block driver doesn't allow doing the necessary ioctls(), so don't attach a + # throttle filter. Implementing live mirroring for such disks would require special care! + $child->{'node-name'} = top_node_name($drive_id); + return $child; + } + # for fleecing and TPM backup, this is already the top node return $child if $options->{fleecing} || $options->{'tpm-backup'} || $options->{'no-throttle'}; diff --git a/src/test/cfg2cmd/scsiblk.conf b/src/test/cfg2cmd/scsiblk.conf new file mode 100644 index 00000000..c767cef6 --- /dev/null +++ b/src/test/cfg2cmd/scsiblk.conf @@ -0,0 +1,5 @@ +boot: order=scsi0 +meta: creation-qemu=10.0.2,ctime=1755189639 +scsi0: /dev/sdg,scsiblock=1,size=32G +smbios1: uuid=d47e2d5c-7068-46d4-9733-ff94083e28f6 +vmgenid: 0a212e2f-0d9a-4006-971e-17be9fcf3efe diff --git a/src/test/cfg2cmd/scsiblk.conf.cmd b/src/test/cfg2cmd/scsiblk.conf.cmd new file mode 100644 index 00000000..3f99b405 --- /dev/null +++ b/src/test/cfg2cmd/scsiblk.conf.cmd @@ -0,0 +1,32 @@ +/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=d47e2d5c-7068-46d4-9733-ff94083e28f6' \ + -smp '1,sockets=1,cores=1,maxcpus=1' \ + -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 \ + -object '{"id":"throttle-drive-scsi0","limits":{},"qom-type":"throttle-group"}' \ + -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=0a212e2f-0d9a-4006-971e-17be9fcf3efe' \ + -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 'lsi,id=scsihw0,bus=pci.0,addr=0x5' \ + -blockdev '{"cache":{"direct":true,"no-flush":false},"detect-zeroes":"on","discard":"ignore","driver":"raw","file":{"aio":"io_uring","cache":{"direct":true,"no-flush":false},"detect-zeroes":"on","discard":"ignore","driver":"host_device","filename":"/dev/sdg","node-name":"e8c91179e47ae3eb292a03618be5cf4","read-only":false},"node-name":"drive-scsi0","read-only":false}' \ + -device 'scsi-hd,bus=scsihw0.0,scsi-id=0,drive=drive-scsi0,id=scsi0,device_id=drive-scsi0,bootindex=100,write-cache=on' \ + -machine 'type=pc+pve0' -- 2.47.2 _______________________________________________ pve-devel mailing list pve-devel@lists.proxmox.com https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel