Skip to content

Commit

Permalink
Merge pull request #270275 from amarshall/zfs-disable-dmu-offset-by-d…
Browse files Browse the repository at this point in the history
…efault

zfs: default disable zfs_dmu_offset_next_sync to avoid data corruption
  • Loading branch information
adamcstephens committed Nov 27, 2023
2 parents 0fa0d86 + 9670ddc commit c9b87a5
Show file tree
Hide file tree
Showing 3 changed files with 52 additions and 0 deletions.
@@ -0,0 +1,44 @@
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 changes: 4 additions & 0 deletions pkgs/os-specific/linux/zfs/stable.nix
Expand Up @@ -28,6 +28,10 @@ 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
];

tests = [
nixosTests.zfs.installer
nixosTests.zfs.stable
Expand Down
4 changes: 4 additions & 0 deletions pkgs/os-specific/linux/zfs/unstable.nix
Expand Up @@ -35,4 +35,8 @@ callPackage ./generic.nix args {
tests = [
nixosTests.zfs.unstable
];

extraPatches = [
./patches/disable-zfs-dmu-offset-next-sync-by-default-v2-2.patch
];
}

0 comments on commit c9b87a5

Please sign in to comment.