]> git.proxmox.com Git - pve-storage.git/commitdiff
btrfs: make NOCOW optional
authorWolfgang Bumiller <w.bumiller@proxmox.com>
Tue, 22 Jun 2021 12:18:23 +0000 (14:18 +0200)
committerThomas Lamprecht <t.lamprecht@proxmox.com>
Wed, 23 Jun 2021 18:20:31 +0000 (20:20 +0200)
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
PVE/Storage/BTRFSPlugin.pm

index 072dfe0554d4a18f2ed2f054dae7b0098eaa01fa..1fe5db085b7ef5d4625b2cba3ae4f2e5e693a7b1 100644 (file)
@@ -46,6 +46,19 @@ sub plugindata {
     };
 }
 
+sub properties {
+    return {
+       nocow => {
+           description => "Set the NOCOW flag on files."
+               . " Disables data checksumming and causes data errors to be unrecoverable from"
+               . " while allowing direct I/O. Only use this if data does not need to be any more"
+               . " safe than on a single ext4 formatted disk with no underlying raid system.",
+           type => 'boolean',
+           default => 0,
+       },
+    };
+}
+
 sub options {
     return {
        path => { fixed => 1 },
@@ -56,6 +69,7 @@ sub options {
        content => { optional => 1 },
        format => { optional => 1 },
        is_mountpoint => { optional => 1 },
+       nocow => { optional => 1 },
        # TODO: The new variant of mkdir with  `populate` vs `create`...
     };
 }
@@ -311,7 +325,7 @@ sub alloc_image {
        } elsif ($fmt eq 'raw') {
            sysopen my $fh, $path, O_WRONLY | O_CREAT | O_EXCL
                or die "failed to create raw file '$path' - $!\n";
-           chattr($fh, ~FS_NOCOW_FL, FS_NOCOW_FL);
+           chattr($fh, ~FS_NOCOW_FL, FS_NOCOW_FL) if $scfg->{nocow};
            truncate($fh, $size * 1024)
                or die "failed to set file size for '$path' - $!\n";
            close($fh);