public inbox for pve-devel@lists.proxmox.com
 help / color / mirror / Atom feed
* Re: [pve-devel] [PATCH qemu-server] don't default to O_DIRECT on btrfs without nocow
@ 2021-06-24 15:03 Wolfgang Bumiller
  0 siblings, 0 replies; 2+ messages in thread
From: Wolfgang Bumiller @ 2021-06-24 15:03 UTC (permalink / raw)
  To: Proxmox VE development discussion


> On 06/24/2021 4:58 PM Wolfgang Bumiller <w.bumiller@proxmox.com> wrote:
> 
>  
> otherwise it'll produce a whole lot of checksum errors

Just a quick note that this can be more refined.

For one: it would be nice to have a `volume_has_feature` for this, but
for instance the directory storage plugin might not be able to determine
this properly at all, so I'm not sure how to really deal with this.
OTOH, for btrfs this really depends on whether the NOCOW flag was active
during the *creation* of the disk, so in the case of btrfs, the storage
can make a *better* decision there...

Thoughts?




^ permalink raw reply	[flat|nested] 2+ messages in thread
* [pve-devel] [PATCH qemu-server] don't default to O_DIRECT on btrfs without nocow
@ 2021-06-24 14:58 Wolfgang Bumiller
  0 siblings, 0 replies; 2+ messages in thread
From: Wolfgang Bumiller @ 2021-06-24 14:58 UTC (permalink / raw)
  To: pve-devel

otherwise it'll produce a whole lot of checksum errors

and while this would be nice as a storage feature check,
it's hard to be 100% accurate there anyway since a directory
storage can point anywhere, like for instance a btrfs
directory, causing the same issue...

Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
---
 PVE/QemuServer.pm | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/PVE/QemuServer.pm b/PVE/QemuServer.pm
index 25282b7..8af4176 100644
--- a/PVE/QemuServer.pm
+++ b/PVE/QemuServer.pm
@@ -1530,14 +1530,15 @@ sub print_drive_commandline_full {
     my $format = $drive->{format};
     my $drive_id = get_drive_id($drive);
 
+    my ($storeid, $volname) = PVE::Storage::parse_volume_id($volid, 1);
+    my $scfg = $storeid ? PVE::Storage::storage_config($storecfg, $storeid) : undef;
+
     if (drive_is_cdrom($drive)) {
 	$path = get_iso_path($storecfg, $vmid, $volid);
         die "$drive_id: cannot back cdrom drive with PBS snapshot\n" if $pbs_name;
     } else {
-	my ($storeid, $volname) = PVE::Storage::parse_volume_id($volid, 1);
 	if ($storeid) {
 	    $path = PVE::Storage::path($storecfg, $volid);
-	    my $scfg = PVE::Storage::storage_config($storecfg, $storeid);
 	    $format //= qemu_img_format($scfg, $volname);
 	} else {
 	    $path = $volid;
@@ -1594,7 +1595,7 @@ sub print_drive_commandline_full {
 
     if (my $cache = $drive->{cache}) {
 	$cache_direct = $cache =~ /^(?:off|none|directsync)$/;
-    } elsif (!drive_is_cdrom($drive)) {
+    } elsif (!drive_is_cdrom($drive) && !($scfg && $scfg->{type} eq 'btrfs' && !$scfg->{nocow})) {
 	$opts .= ",cache=none";
 	$cache_direct = 1;
     }
-- 
2.30.2





^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2021-06-24 15:04 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-06-24 15:03 [pve-devel] [PATCH qemu-server] don't default to O_DIRECT on btrfs without nocow Wolfgang Bumiller
  -- strict thread matches above, loose matches on Subject: below --
2021-06-24 14:58 Wolfgang Bumiller

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal