On June 12, 2025 4:02 pm, Fiona Ebner wrote: > With the 'blockdev' command line option, the cache options are split > up. While cache.direct and cache.no-flush can be set in the -blockdev > options, cache.writeback is a front-end property and was intentionally > removed from the 'blockdev' options by QEMU commit aaa436f998 ("block: > Remove cache.writeback from blockdev-add"). It needs to be configured > as the 'write-cache' property for the ide-hd/scsi-hd/virtio-blk > device. > > Table from 'man kvm': > > ┌─────────────┬─────────────────┬──────────────┬────────────────┐ > │ │ cache.writeback │ cache.direct │ cache.no-flush │ > ├─────────────┼─────────────────┼──────────────┼────────────────┤ > │writeback │ on │ off │ off │ > ├─────────────┼─────────────────┼──────────────┼────────────────┤ > │none │ on │ on │ off │ > ├─────────────┼─────────────────┼──────────────┼────────────────┤ > │writethrough │ off │ off │ off │ > ├─────────────┼─────────────────┼──────────────┼────────────────┤ > │directsync │ off │ on │ off │ > ├─────────────┼─────────────────┼──────────────┼────────────────┤ > │unsafe │ on │ off │ on │ > └─────────────┴─────────────────┴──────────────┴────────────────┘ > > Suggested-by: Alexandre Derumier <alexandre.derum...@groupe-cyllene.com> > Signed-off-by: Fiona Ebner <f.eb...@proxmox.com> > --- > PVE/QemuServer.pm | 12 +++++++++++- > 1 file changed, 11 insertions(+), 1 deletion(-) > > diff --git a/PVE/QemuServer.pm b/PVE/QemuServer.pm > index 82304096..f9e1b3f9 100644 > --- a/PVE/QemuServer.pm > +++ b/PVE/QemuServer.pm > @@ -1317,6 +1317,8 @@ sub print_drivedevice_full { > my $device = ''; > my $maxdev = 0; > > + my $machine_version = extract_version($machine_type, kvm_user_version()); > + > my $drive_id = PVE::QemuServer::Drive::get_drive_id($drive); > if ($drive->{interface} eq 'virtio') { > my $pciaddr = print_pci_addr("$drive_id", $bridges, $arch, > $machine_type); > @@ -1327,7 +1329,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); > > @@ -1403,6 +1404,15 @@ sub print_drivedevice_full { > $device .= ",serial=$serial"; > } > > + if (min_version($machine_version, 10, 0)) {
should we add a comment here (and for similar conditionals in following patches) that this is for the switch to blockdev? obvious now, might be lass obvious down the line ;) > + if (!drive_is_cdrom($drive)) { > + my $write_cache = 'on'; > + if (my $cache = $drive->{cache}) { > + $write_cache = 'off' if $cache eq 'writethrough' || $cache eq > 'directsync'; > + } > + $device .= ",write-cache=$write_cache"; > + } > + } > > return $device; > } > -- > 2.39.5 > > > > _______________________________________________ > pve-devel mailing list > pve-devel@lists.proxmox.com > https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel > _______________________________________________ pve-devel mailing list pve-devel@lists.proxmox.com https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel