Loading pkgs/os-specific/linux/zfs/patches/disable-zfs-dmu-offset-next-sync-by-default-v2-2.patch 0 → 100644 +44 −0 Original line number Diff line number Diff line From 3ba4ff328ab001d88d7714087d8a89687bc68312 Mon Sep 17 00:00:00 2001 From: Andrew Marshall <andrew@johnandrewmarshall.com> Date: Sun, 26 Nov 2023 12:46:18 -0500 Subject: [PATCH] Disable zfs_dmu_offset_next_sync tunable by default This helps mitigate a data corruption bug. This was previously defaulted to zero, so doing so seems safe. See https://github.com/openzfs/zfs/issues/11900 See https://github.com/openzfs/zfs/issues/15526 --- man/man4/zfs.4 | 2 +- module/zfs/dmu.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/man/man4/zfs.4 b/man/man4/zfs.4 index 4ec52a2fb..2a69a8f54 100644 --- a/man/man4/zfs.4 +++ b/man/man4/zfs.4 @@ -1660,7 +1660,7 @@ Allow no-operation writes. The occurrence of nopwrites will further depend on other pool properties .Pq i.a. the checksumming and compression algorithms . . -.It Sy zfs_dmu_offset_next_sync Ns = Ns Sy 1 Ns | Ns 0 Pq int +.It Sy zfs_dmu_offset_next_sync Ns = Ns Sy 0 Ns | Ns 1 Pq int Enable forcing TXG sync to find holes. When enabled forces ZFS to sync data when .Sy SEEK_HOLE No or Sy SEEK_DATA diff --git a/module/zfs/dmu.c b/module/zfs/dmu.c index ddb29020b..5d37b6f92 100644 --- a/module/zfs/dmu.c +++ b/module/zfs/dmu.c @@ -82,7 +82,7 @@ static uint_t zfs_per_txg_dirty_frees_percent = 30; * Disabling this option will result in holes never being reported in dirty * files which is always safe. */ -static int zfs_dmu_offset_next_sync = 1; +static int zfs_dmu_offset_next_sync = 0; /* * Limit the amount we can prefetch with one call to this amount. This -- 2.42.0 pkgs/os-specific/linux/zfs/stable.nix +4 −1 Original line number Diff line number Diff line Loading @@ -3,7 +3,6 @@ , stdenv , linuxKernel , removeLinuxDRM ? false , fetchpatch , ... } @ args: Loading @@ -24,5 +23,9 @@ callPackage ./generic.nix args { # this package should point to the latest release. version = "2.2.1"; extraPatches = [ ./patches/disable-zfs-dmu-offset-next-sync-by-default-v2-2.patch ]; sha256 = "sha256-2Q/Nhp3YKgMCLPNRNBq5r9U4GeuYlWMWAsjsQy3vFW4="; } pkgs/os-specific/linux/zfs/unstable.nix +4 −0 Original line number Diff line number Diff line Loading @@ -28,4 +28,8 @@ callPackage ./generic.nix args { sha256 = "sha256-2Q/Nhp3YKgMCLPNRNBq5r9U4GeuYlWMWAsjsQy3vFW4="; isUnstable = true; extraPatches = [ ./patches/disable-zfs-dmu-offset-next-sync-by-default-v2-2.patch ]; } Loading
pkgs/os-specific/linux/zfs/patches/disable-zfs-dmu-offset-next-sync-by-default-v2-2.patch 0 → 100644 +44 −0 Original line number Diff line number Diff line From 3ba4ff328ab001d88d7714087d8a89687bc68312 Mon Sep 17 00:00:00 2001 From: Andrew Marshall <andrew@johnandrewmarshall.com> Date: Sun, 26 Nov 2023 12:46:18 -0500 Subject: [PATCH] Disable zfs_dmu_offset_next_sync tunable by default This helps mitigate a data corruption bug. This was previously defaulted to zero, so doing so seems safe. See https://github.com/openzfs/zfs/issues/11900 See https://github.com/openzfs/zfs/issues/15526 --- man/man4/zfs.4 | 2 +- module/zfs/dmu.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/man/man4/zfs.4 b/man/man4/zfs.4 index 4ec52a2fb..2a69a8f54 100644 --- a/man/man4/zfs.4 +++ b/man/man4/zfs.4 @@ -1660,7 +1660,7 @@ Allow no-operation writes. The occurrence of nopwrites will further depend on other pool properties .Pq i.a. the checksumming and compression algorithms . . -.It Sy zfs_dmu_offset_next_sync Ns = Ns Sy 1 Ns | Ns 0 Pq int +.It Sy zfs_dmu_offset_next_sync Ns = Ns Sy 0 Ns | Ns 1 Pq int Enable forcing TXG sync to find holes. When enabled forces ZFS to sync data when .Sy SEEK_HOLE No or Sy SEEK_DATA diff --git a/module/zfs/dmu.c b/module/zfs/dmu.c index ddb29020b..5d37b6f92 100644 --- a/module/zfs/dmu.c +++ b/module/zfs/dmu.c @@ -82,7 +82,7 @@ static uint_t zfs_per_txg_dirty_frees_percent = 30; * Disabling this option will result in holes never being reported in dirty * files which is always safe. */ -static int zfs_dmu_offset_next_sync = 1; +static int zfs_dmu_offset_next_sync = 0; /* * Limit the amount we can prefetch with one call to this amount. This -- 2.42.0
pkgs/os-specific/linux/zfs/stable.nix +4 −1 Original line number Diff line number Diff line Loading @@ -3,7 +3,6 @@ , stdenv , linuxKernel , removeLinuxDRM ? false , fetchpatch , ... } @ args: Loading @@ -24,5 +23,9 @@ callPackage ./generic.nix args { # this package should point to the latest release. version = "2.2.1"; extraPatches = [ ./patches/disable-zfs-dmu-offset-next-sync-by-default-v2-2.patch ]; sha256 = "sha256-2Q/Nhp3YKgMCLPNRNBq5r9U4GeuYlWMWAsjsQy3vFW4="; }
pkgs/os-specific/linux/zfs/unstable.nix +4 −0 Original line number Diff line number Diff line Loading @@ -28,4 +28,8 @@ callPackage ./generic.nix args { sha256 = "sha256-2Q/Nhp3YKgMCLPNRNBq5r9U4GeuYlWMWAsjsQy3vFW4="; isUnstable = true; extraPatches = [ ./patches/disable-zfs-dmu-offset-next-sync-by-default-v2-2.patch ]; }