Skip to content

Commit

Permalink
zfs: Add a patch to fix discard data corruption
Browse files Browse the repository at this point in the history
  • Loading branch information
wkennington committed Sep 18, 2015
1 parent bbfd7f2 commit 4a672c8
Show file tree
Hide file tree
Showing 3 changed files with 36 additions and 2 deletions.
28 changes: 28 additions & 0 deletions pkgs/os-specific/linux/zfs/0.6.5-fix-corruption.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
From 96165264ad0afe7a5d440ef49f9712a188486266 Mon Sep 17 00:00:00 2001
From: Richard Yao <ryao@gentoo.org>
Date: Fri, 18 Sep 2015 08:32:52 -0400
Subject: [PATCH] Discard on zvols should not exceed the length of a block

37f9dac592bf5889c3efb305c48ac39b4c7dd140 replaced the end-start
calculation with a cached value, but neglected to update it on discard
operations. This can cause us to discard data not requested, causing
data loss on zvols.

Reported-by: Richard Connon <richard.connon@zynstra.com>
Signed-off-by: Richard Yao <ryao@gentoo.org>
---
module/zfs/zvol.c | 1 +
1 file changed, 1 insertion(+)

diff --git a/module/zfs/zvol.c b/module/zfs/zvol.c
index 492f8ff..c5a8071 100644
--- a/module/zfs/zvol.c
+++ b/module/zfs/zvol.c
@@ -661,6 +661,7 @@ zvol_discard(struct bio *bio)
if (!(bio->bi_rw & REQ_SECURE)) {
start = P2ROUNDUP(start, zv->zv_volblocksize);
end = P2ALIGN(end, zv->zv_volblocksize);
+ size = end - start;
}
#endif

5 changes: 4 additions & 1 deletion pkgs/os-specific/linux/zfs/default.nix
Original file line number Diff line number Diff line change
Expand Up @@ -10,5 +10,8 @@ callPackage ./generic.nix (args // rec {
sha256 = "1jqm2a9mldp4km5m454zszsw6p8hrqd7xrbf52pgp82kf5w3d6wz";
};

patches = [ ./nix-build.patch ];
patches = [
./nix-build.patch
./0.6.5-fix-corruption.patch
];
})
5 changes: 4 additions & 1 deletion pkgs/os-specific/linux/zfs/git.nix
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,10 @@ callPackage ./generic.nix (args // rec {
sha256 = "1jqm2a9mldp4km5m454zszsw6p8hrqd7xrbf52pgp82kf5w3d6wz";
};

patches = [ ./nix-build.patch ];
patches = [
./nix-build.patch
./0.6.5-fix-corruption.patch
];

spl = spl_git;
})

0 comments on commit 4a672c8

Please sign in to comment.