Unverified Commit ee7dc395 authored by Adam C. Stephens's avatar Adam C. Stephens Committed by GitHub
Browse files

Merge pull request #270445 from adamcstephens/backport-270275-to-release-23.11

[Backport release-23.11] zfs: default disable zfs_dmu_offset_next_sync to avoid data corruption
parents d21337e1 9f2dc974
Loading
Loading
Loading
Loading
+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
+4 −1
Original line number Diff line number Diff line
@@ -3,7 +3,6 @@
, stdenv
, linuxKernel
, removeLinuxDRM ? false
, fetchpatch
, ...
} @ args:

@@ -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=";
}
+4 −0
Original line number Diff line number Diff line
@@ -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
  ];
}