Skip to content

Commit

Permalink
Merge pull request #270445 from adamcstephens/backport-270275-to-rele…
Browse files Browse the repository at this point in the history
…ase-23.11

[Backport release-23.11] zfs: default disable zfs_dmu_offset_next_sync to avoid data corruption
  • Loading branch information
adamcstephens authored Nov 27, 2023
2 parents d21337e + 9f2dc97 commit ee7dc39
Show file tree
Hide file tree
Showing 3 changed files with 52 additions and 1 deletion.
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
From 3ba4ff328ab001d88d7714087d8a89687bc68312 Mon Sep 17 00:00:00 2001
From: Andrew Marshall <[email protected]>
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

5 changes: 4 additions & 1 deletion pkgs/os-specific/linux/zfs/stable.nix
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
, stdenv
, linuxKernel
, removeLinuxDRM ? false
, fetchpatch
, ...
} @ args:

Expand All @@ -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 changes: 4 additions & 0 deletions pkgs/os-specific/linux/zfs/unstable.nix
Original file line number Diff line number Diff line change
Expand Up @@ -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
];
}

0 comments on commit ee7dc39

Please sign in to comment.