[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#986618: marked as done (unblock: zfs-linux/2.0.3-6)



Your message dated Thu, 15 Apr 2021 15:02:46 +0200
with message-id <0c521007-4e49-5c01-3ad9-05100092fe10@debian.org>
and subject line Re: Bug#986618: unblock: zfs-linux/2.0.3-6
has caused the Debian Bug report #986618,
regarding unblock: zfs-linux/2.0.3-6
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact owner@bugs.debian.org
immediately.)


-- 
986618: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=986618
Debian Bug Tracking System
Contact owner@bugs.debian.org with problems
--- Begin Message ---
Package: release.debian.org
Severity: normal
User: release.debian.org@packages.debian.org
Usertags: unblock

Please unblock the latest revision of package zfs-linux
from migration. Recall that we previously have applied
unblock for zfs-linux 2.0.3-2:
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=985590
where the 3rd point of change had been reverted in the
last minute, resulting in ensuing user complains as the
non-configurable behavior breaks the user's expectation
(see closed bugs in the debdiff:dch for detail).

Different from our initial solution to use debconf as
a registry for the cron job scripts (see 985590), our
latest scripts for the configurable behavior in 2.0.3-6
leverages zfs dataset property, which has been peer-revised
and tested for several rounds, see
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=986185
And the usage has been documented in README.Debian as well.

I and Aron (zfs package maintainers) believe that this should
enter the stable release.

[ Reason ]
Fix cron job script behavior and make it configurable on a
per-zpool basis. This closely relates to ZFS performance on
the user side, and can really close a couple of bugs.

[ Impact ]
Unsuccessful unblock may affect ZFS performance and make the
cron job scripts not flexible to use.

[ Tests ]
The changes have gone through peer-revision and test.

[ Risks ]
Hard to say. I think the risk level is negligible as the script
quality has in fact became better.

[ Checklist ]
  [x] all changes are documented in the d/changelog
  [x] I reviewed all changes and I approve them
  [x] attach debdiff against the package in testing


[ Other info ]
After the aforementioned last-minute code revert for 2.0.3-2,
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=985590
it seemed that the changes looks good to pebs. So for the
release teams' convenience, I also attached the changes
from 2.0.3-2 to 2.0.3-6.

Detail on the changes from 2.0.3-2 to 2.0.3-6:
1. README.Debian: documented the usage of updated
   auto-{scrub,trim} scripts in README.Debian.
2. d/rules: fix a bug that README.Debian is not installed
   in all binary packages (this problem is terrible)
3. d/test/control: fix i386 autopkgtest failure due to
   missing kernel header dependency
4. d/tree/.../{scrub,trim}: fix bashism; use zfs dataset
   property to configure the auto-{scrub,trim} behavior.
   This solution does not involve using debconf database,
   nor touching any conffile.
5. d/zfs-zed.postrm: fixed syntax error (could be an RC)

I hope 2.0.3-6 is the last revision for bullseye.
Thanks for consideration!

unblock zfs-linux/2.0.3-6
Thank you for using reportbug

diff -Nru zfs-linux-2.0.3/debian/changelog zfs-linux-2.0.3/debian/changelog
--- zfs-linux-2.0.3/debian/changelog	2021-02-12 16:30:01.000000000 +0800
+++ zfs-linux-2.0.3/debian/changelog	2021-04-05 10:35:25.000000000 +0800
@@ -1,3 +1,61 @@
+zfs-linux (2.0.3-6) unstable; urgency=medium
+
+  [ наб ]
+  * Fix broken purge detection in zfs-zed.postrm. (Closes: #986374)
+  * /u/l/z-l/{scrub, trim}: enhancements including proper handling for pools
+    with spaces in name. (Closes: #986380)
+
+  [ Mo Zhou ]
+  * Really install README.Debian into every binary package.
+
+ -- Mo Zhou <lumin@debian.org>  Mon, 05 Apr 2021 10:35:25 +0800
+
+zfs-linux (2.0.3-5) unstable; urgency=medium
+
+  [ наб ]
+  * Fix d/rules that README.Debian is installed for libnvpair3linux only.
+    (Closes: #986299)
+
+ -- Mo Zhou <lumin@debian.org>  Sat, 03 Apr 2021 17:55:51 +0800
+
+zfs-linux (2.0.3-4) unstable; urgency=medium
+
+  * Revise the auto-{scrub,trim} scripts and describe usage in README.Debian.
+    (See #986185 and thanks for наб)
+
+ -- Mo Zhou <lumin@debian.org>  Fri, 02 Apr 2021 21:35:32 +0800
+
+zfs-linux (2.0.3-3) unstable; urgency=medium
+
+  * Use zfs property for periodical-{scrub,trim} cron jobs.
+    This fixes the exclusive "nvme-only" behavior of the auto-trim script.
+    P.S. In this way, we will not have to store configs in /etc/default/zfs,
+    or use debconf database as a registry. Plus, this also allows us to
+    configure the cron job behavior per zpool.
+    (Closes: #986185)
+  * Fix i386 autopkgtest failure due to missing dependency.
+
+ -- Mo Zhou <lumin@debian.org>  Fri, 02 Apr 2021 14:34:15 +0800
+
+zfs-linux (2.0.3-2) unstable; urgency=medium
+
+  [ Aron Xu ]
+  * cherry pick of upstream post-2.0.3 fixes
+  * debconf: update the term ZFS to OpenZFS
+  * debconf: run debconf-updatepo
+
+  [ Antonio Russo ]
+  * Adjust zed.d symlink-preservation (Closes: #983401)
+  * Remove /etc/zfs/zed.d on purge
+
+  [ Mo Zhou ]
+  * Only automatically TRIM NVMe SSD pools. (Closes: #983086, #982505)
+
+  [ наб ]
+  * Fix a misleading comment in the scrub cronjob script. (Closes: #985349)
+
+ -- Aron Xu <aron@debian.org>  Tue, 30 Mar 2021 14:47:05 +0800
+
 zfs-linux (2.0.3-1) unstable; urgency=medium
 
   * New upstream version 2.0.3
diff -Nru zfs-linux-2.0.3/debian/patches/0010-Fix-report_mount_progress-never-calling-set_progress.patch zfs-linux-2.0.3/debian/patches/0010-Fix-report_mount_progress-never-calling-set_progress.patch
--- zfs-linux-2.0.3/debian/patches/0010-Fix-report_mount_progress-never-calling-set_progress.patch	1970-01-01 08:00:00.000000000 +0800
+++ zfs-linux-2.0.3/debian/patches/0010-Fix-report_mount_progress-never-calling-set_progress.patch	2021-03-20 20:40:16.000000000 +0800
@@ -0,0 +1,40 @@
+From 778869fa139ab72ed557e7455e4f1126684f2625 Mon Sep 17 00:00:00 2001
+From: Andriy Gapon <avg@FreeBSD.org>
+Date: Thu, 18 Feb 2021 23:53:05 +0200
+Subject: [PATCH 10/38] Fix report_mount_progress never calling
+ set_progress_header
+
+That happens because of an off-by-one mistake.
+share_mount_one_cb() calls report_mount_progress(current=sm_done) after
+having incremented sm_done by one.  Then report_mount_progress()
+increments the parameter again.  It appears that that logic became
+obsolete after commit a10d50f999511, parallel zfs mount.
+
+On FreeBSD I observe that zfs mount -a -v prints, for example,
+    (null): (201/248)
+That happens because set_progress_header() is never called.
+
+With this change the output becomes correct:
+    Mounting ZFS filesystems: (209/248)
+
+Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
+Signed-off-by: Andriy Gapon <avg@FreeBSD.org>
+Closes #11607
+---
+ cmd/zfs/zfs_main.c | 3 ---
+ 1 file changed, 3 deletions(-)
+
+Index: zfs/cmd/zfs/zfs_main.c
+===================================================================
+--- zfs.orig/cmd/zfs/zfs_main.c
++++ zfs/cmd/zfs/zfs_main.c
+@@ -6790,9 +6790,6 @@ report_mount_progress(int current, int t
+ 	time_t now = time(NULL);
+ 	char info[32];
+ 
+-	/* report 1..n instead of 0..n-1 */
+-	++current;
+-
+ 	/* display header if we're here for the first time */
+ 	if (current == 1) {
+ 		set_progress_header(gettext("Mounting ZFS filesystems"));
diff -Nru zfs-linux-2.0.3/debian/patches/0014-libzpool-set_global_var-fix-endianness-handling-fixe.patch zfs-linux-2.0.3/debian/patches/0014-libzpool-set_global_var-fix-endianness-handling-fixe.patch
--- zfs-linux-2.0.3/debian/patches/0014-libzpool-set_global_var-fix-endianness-handling-fixe.patch	1970-01-01 08:00:00.000000000 +0800
+++ zfs-linux-2.0.3/debian/patches/0014-libzpool-set_global_var-fix-endianness-handling-fixe.patch	2021-03-20 20:40:16.000000000 +0800
@@ -0,0 +1,37 @@
+From b5fffa1d294f5e17e8e4fdf34a4fec99c374c586 Mon Sep 17 00:00:00 2001
+From: Christian Schwarz <me@cschwarz.com>
+Date: Mon, 15 Feb 2021 13:02:32 +0100
+Subject: [PATCH 14/38] libzpool: set_global_var: fix endianness handling
+ (fixes zdb -o )
+
+Without this patch I get the error
+
+  Setting global variables is only supported on little-endian systems
+
+when using `zdb -o` on my amd64 machine.
+
+Reviewed-by: Matthew Ahrens <mahrens@delphix.com>
+Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
+Reviewed-by: Pavel Zakharov <pavel.zakharov@delphix.com>
+Signed-off-by: Christian Schwarz <me@cschwarz.com>
+Closes #11602
+---
+ lib/libzpool/util.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/lib/libzpool/util.c b/lib/libzpool/util.c
+index ebfaa9b41..13d585299 100644
+--- a/lib/libzpool/util.c
++++ b/lib/libzpool/util.c
+@@ -159,7 +159,7 @@ set_global_var(char *arg)
+ 	char *varname = arg, *varval;
+ 	u_longlong_t val;
+ 
+-#ifndef _LITTLE_ENDIAN
++#ifndef _ZFS_LITTLE_ENDIAN
+ 	/*
+ 	 * On big endian systems changing a 64-bit variable would set the high
+ 	 * 32 bits instead of the low 32 bits, which could cause unexpected
+-- 
+2.30.1
+
diff -Nru zfs-linux-2.0.3/debian/patches/0019-Better-zfs_get_enclosure_sysfs_path-enclosure-suppor.patch zfs-linux-2.0.3/debian/patches/0019-Better-zfs_get_enclosure_sysfs_path-enclosure-suppor.patch
--- zfs-linux-2.0.3/debian/patches/0019-Better-zfs_get_enclosure_sysfs_path-enclosure-suppor.patch	1970-01-01 08:00:00.000000000 +0800
+++ zfs-linux-2.0.3/debian/patches/0019-Better-zfs_get_enclosure_sysfs_path-enclosure-suppor.patch	2021-03-20 20:40:16.000000000 +0800
@@ -0,0 +1,332 @@
+From 7e56b05058c8d2af2b5bc8b0b1475d9fdd6cd7dc Mon Sep 17 00:00:00 2001
+From: Tony Hutter <hutter2@llnl.gov>
+Date: Sat, 20 Feb 2021 20:17:45 -0800
+Subject: [PATCH 19/38] Better zfs_get_enclosure_sysfs_path() enclosure support
+
+A multpathed disk will have several 'underlying' paths to the disk.  For
+example, multipath disk 'dm-0' may be made up of paths:
+/dev/{sda,sdb,sdc,sdd}.  On many enclosures those underlying sysfs
+paths will have a symlink back to their enclosure device entry
+(like 'enclosure_device0/slot1').  This is used by the
+statechange-led.sh script to set/clear the fault LED for a disk, and
+by 'zpool status -c'.
+
+However, on some enclosures, those underlying paths may not all have
+symlinks back to the enclosure device.  Maybe only two out of four
+of them might.
+
+This patch updates zfs_get_enclosure_sysfs_path() to favor returning
+paths that have symlinks back to their enclosure devices, rather
+than just returning the first path.
+
+Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
+Signed-off-by: Tony Hutter <hutter2@llnl.gov>
+Closes #11617
+---
+ lib/libzutil/os/linux/zutil_device_path_os.c | 252 +++++++++++--------
+ 1 file changed, 142 insertions(+), 110 deletions(-)
+
+diff --git a/lib/libzutil/os/linux/zutil_device_path_os.c b/lib/libzutil/os/linux/zutil_device_path_os.c
+index 36331fd72..1f767bb7a 100644
+--- a/lib/libzutil/os/linux/zutil_device_path_os.c
++++ b/lib/libzutil/os/linux/zutil_device_path_os.c
+@@ -154,15 +154,124 @@ zfs_strip_path(char *path)
+ 	return (strrchr(path, '/') + 1);
+ }
+ 
++/*
++ * Given a dev name like "sda", return the full enclosure sysfs path to
++ * the disk.  You can also pass in the name with "/dev" prepended
++ * to it (like /dev/sda).
++ *
++ * For example, disk "sda" in enclosure slot 1:
++ *     dev:            "sda"
++ *     returns:        "/sys/class/enclosure/1:0:3:0/Slot 1"
++ *
++ * 'dev' must be a non-devicemapper device.
++ *
++ * Returned string must be freed.
++ */
++char *
++zfs_get_enclosure_sysfs_path(const char *dev_name)
++{
++	DIR *dp = NULL;
++	struct dirent *ep;
++	char buf[MAXPATHLEN];
++	char *tmp1 = NULL;
++	char *tmp2 = NULL;
++	char *tmp3 = NULL;
++	char *path = NULL;
++	size_t size;
++	int tmpsize;
++
++	if (dev_name == NULL)
++		return (NULL);
++
++	/* If they preface 'dev' with a path (like "/dev") then strip it off */
++	tmp1 = strrchr(dev_name, '/');
++	if (tmp1 != NULL)
++		dev_name = tmp1 + 1;    /* +1 since we want the chr after '/' */
++
++	tmpsize = asprintf(&tmp1, "/sys/block/%s/device", dev_name);
++	if (tmpsize == -1 || tmp1 == NULL) {
++		tmp1 = NULL;
++		goto end;
++	}
++
++	dp = opendir(tmp1);
++	if (dp == NULL) {
++		tmp1 = NULL;	/* To make free() at the end a NOP */
++		goto end;
++	}
++
++	/*
++	 * Look though all sysfs entries in /sys/block/<dev>/device for
++	 * the enclosure symlink.
++	 */
++	while ((ep = readdir(dp))) {
++		/* Ignore everything that's not our enclosure_device link */
++		if (strstr(ep->d_name, "enclosure_device") == NULL)
++			continue;
++
++		if (asprintf(&tmp2, "%s/%s", tmp1, ep->d_name) == -1 ||
++		    tmp2 == NULL)
++			break;
++
++		size = readlink(tmp2, buf, sizeof (buf));
++
++		/* Did readlink fail or crop the link name? */
++		if (size == -1 || size >= sizeof (buf)) {
++			free(tmp2);
++			tmp2 = NULL;	/* To make free() at the end a NOP */
++			break;
++		}
++
++		/*
++		 * We got a valid link.  readlink() doesn't terminate strings
++		 * so we have to do it.
++		 */
++		buf[size] = '\0';
++
++		/*
++		 * Our link will look like:
++		 *
++		 * "../../../../port-11:1:2/..STUFF../enclosure/1:0:3:0/SLOT 1"
++		 *
++		 * We want to grab the "enclosure/1:0:3:0/SLOT 1" part
++		 */
++		tmp3 = strstr(buf, "enclosure");
++		if (tmp3 == NULL)
++			break;
++
++		if (asprintf(&path, "/sys/class/%s", tmp3) == -1) {
++			/* If asprintf() fails, 'path' is undefined */
++			path = NULL;
++			break;
++		}
++
++		if (path == NULL)
++			break;
++	}
++
++end:
++	free(tmp2);
++	free(tmp1);
++
++	if (dp != NULL)
++		closedir(dp);
++
++	return (path);
++}
++
+ /*
+  * Allocate and return the underlying device name for a device mapper device.
+- * If a device mapper device maps to multiple devices, return the first device.
+  *
+  * For example, dm_name = "/dev/dm-0" could return "/dev/sda". Symlinks to a
+  * DM device (like /dev/disk/by-vdev/A0) are also allowed.
+  *
+- * Returns device name, or NULL on error or no match.  If dm_name is not a DM
+- * device then return NULL.
++ * If the DM device has multiple underlying devices (like with multipath
++ * DM devices), then favor underlying devices that have a symlink back to their
++ * back to their enclosure device in sysfs.  This will be useful for the
++ * zedlet scripts that toggle the fault LED.
++ *
++ * Returns an underlying device name, or NULL on error or no match.  If dm_name
++ * is not a DM device then return NULL.
+  *
+  * NOTE: The returned name string must be *freed*.
+  */
+@@ -176,6 +285,8 @@ dm_get_underlying_path(const char *dm_name)
+ 	char *path = NULL;
+ 	char *dev_str;
+ 	int size;
++	char *first_path = NULL;
++	char *enclosure_path;
+ 
+ 	if (dm_name == NULL)
+ 		return (NULL);
+@@ -204,13 +315,27 @@ dm_get_underlying_path(const char *dm_name)
+ 		goto end;
+ 
+ 	/*
+-	 * Return first entry (that isn't itself a directory) in the
+-	 * directory containing device-mapper dependent (underlying)
+-	 * devices.
++	 * A device-mapper device can have multiple paths to it (multipath).
++	 * Favor paths that have a symlink back to their enclosure device.
++	 * We have to do this since some enclosures may only provide a symlink
++	 * back for one underlying path to a disk and not the other.
++	 *
++	 * If no paths have links back to their enclosure, then just return the
++	 * first path.
+ 	 */
+ 	while ((ep = readdir(dp))) {
+ 		if (ep->d_type != DT_DIR) {	/* skip "." and ".." dirs */
++			if (!first_path)
++				first_path = strdup(ep->d_name);
++
++			enclosure_path =
++			    zfs_get_enclosure_sysfs_path(ep->d_name);
++
++			if (!enclosure_path)
++				continue;
++
+ 			size = asprintf(&path, "/dev/%s", ep->d_name);
++			free(enclosure_path);
+ 			break;
+ 		}
+ 	}
+@@ -220,6 +345,17 @@ end:
+ 		closedir(dp);
+ 	free(tmp);
+ 	free(realp);
++
++	if (!path) {
++		/*
++		 * None of the underlying paths had a link back to their
++		 * enclosure devices.  Throw up out hands and return the first
++		 * underlying path.
++		 */
++		size = asprintf(&path, "/dev/%s", first_path);
++	}
++
++	free(first_path);
+ 	return (path);
+ }
+ 
+@@ -331,110 +467,6 @@ zfs_get_underlying_path(const char *dev_name)
+ 	return (name);
+ }
+ 
+-/*
+- * Given a dev name like "sda", return the full enclosure sysfs path to
+- * the disk.  You can also pass in the name with "/dev" prepended
+- * to it (like /dev/sda).
+- *
+- * For example, disk "sda" in enclosure slot 1:
+- *     dev:            "sda"
+- *     returns:        "/sys/class/enclosure/1:0:3:0/Slot 1"
+- *
+- * 'dev' must be a non-devicemapper device.
+- *
+- * Returned string must be freed.
+- */
+-char *
+-zfs_get_enclosure_sysfs_path(const char *dev_name)
+-{
+-	DIR *dp = NULL;
+-	struct dirent *ep;
+-	char buf[MAXPATHLEN];
+-	char *tmp1 = NULL;
+-	char *tmp2 = NULL;
+-	char *tmp3 = NULL;
+-	char *path = NULL;
+-	size_t size;
+-	int tmpsize;
+-
+-	if (dev_name == NULL)
+-		return (NULL);
+-
+-	/* If they preface 'dev' with a path (like "/dev") then strip it off */
+-	tmp1 = strrchr(dev_name, '/');
+-	if (tmp1 != NULL)
+-		dev_name = tmp1 + 1;    /* +1 since we want the chr after '/' */
+-
+-	tmpsize = asprintf(&tmp1, "/sys/block/%s/device", dev_name);
+-	if (tmpsize == -1 || tmp1 == NULL) {
+-		tmp1 = NULL;
+-		goto end;
+-	}
+-
+-	dp = opendir(tmp1);
+-	if (dp == NULL) {
+-		tmp1 = NULL;	/* To make free() at the end a NOP */
+-		goto end;
+-	}
+-
+-	/*
+-	 * Look though all sysfs entries in /sys/block/<dev>/device for
+-	 * the enclosure symlink.
+-	 */
+-	while ((ep = readdir(dp))) {
+-		/* Ignore everything that's not our enclosure_device link */
+-		if (strstr(ep->d_name, "enclosure_device") == NULL)
+-			continue;
+-
+-		if (asprintf(&tmp2, "%s/%s", tmp1, ep->d_name) == -1 ||
+-		    tmp2 == NULL)
+-			break;
+-
+-		size = readlink(tmp2, buf, sizeof (buf));
+-
+-		/* Did readlink fail or crop the link name? */
+-		if (size == -1 || size >= sizeof (buf)) {
+-			free(tmp2);
+-			tmp2 = NULL;	/* To make free() at the end a NOP */
+-			break;
+-		}
+-
+-		/*
+-		 * We got a valid link.  readlink() doesn't terminate strings
+-		 * so we have to do it.
+-		 */
+-		buf[size] = '\0';
+-
+-		/*
+-		 * Our link will look like:
+-		 *
+-		 * "../../../../port-11:1:2/..STUFF../enclosure/1:0:3:0/SLOT 1"
+-		 *
+-		 * We want to grab the "enclosure/1:0:3:0/SLOT 1" part
+-		 */
+-		tmp3 = strstr(buf, "enclosure");
+-		if (tmp3 == NULL)
+-			break;
+-
+-		if (asprintf(&path, "/sys/class/%s", tmp3) == -1) {
+-			/* If asprintf() fails, 'path' is undefined */
+-			path = NULL;
+-			break;
+-		}
+-
+-		if (path == NULL)
+-			break;
+-	}
+-
+-end:
+-	free(tmp2);
+-	free(tmp1);
+-
+-	if (dp != NULL)
+-		closedir(dp);
+-
+-	return (path);
+-}
+ 
+ #ifdef HAVE_LIBUDEV
+ 
+-- 
+2.30.1
+
diff -Nru zfs-linux-2.0.3/debian/patches/0020-vdev_ops-don-t-try-to-call-vdev_op_hold-or-vdev_op_r.patch zfs-linux-2.0.3/debian/patches/0020-vdev_ops-don-t-try-to-call-vdev_op_hold-or-vdev_op_r.patch
--- zfs-linux-2.0.3/debian/patches/0020-vdev_ops-don-t-try-to-call-vdev_op_hold-or-vdev_op_r.patch	1970-01-01 08:00:00.000000000 +0800
+++ zfs-linux-2.0.3/debian/patches/0020-vdev_ops-don-t-try-to-call-vdev_op_hold-or-vdev_op_r.patch	2021-03-20 20:40:16.000000000 +0800
@@ -0,0 +1,50 @@
+From 11f2e9a491baa2ae3fc00f6b8b892fa91a852ca1 Mon Sep 17 00:00:00 2001
+From: fbynite <52733326+fbynite@users.noreply.github.com>
+Date: Sat, 20 Feb 2021 19:19:20 -0900
+Subject: [PATCH 20/38] vdev_ops: don't try to call vdev_op_hold or
+ vdev_op_rele when NULL
+
+This prevents a panic after a SLOG add/removal on the root pool followed
+by a zpool scrub.
+
+When a SLOG is removed, a hole takes its place - the vdev_ops for a hole
+is vdev_hole_ops, which defines the handler functions of vdev_op_hold
+and vdev_op_rele as NULL.
+
+This bug has been reported in illumos and FreeBSD, a different trigger
+in the FreeBSD report though.
+
+Credit for this patch goes to Patrick Mooney <pmooney@pfmooney.com>
+
+Obtained from: illumos-gate commit: c65bd18728f34725
+External-issue: https://www.illumos.org/issues/12981
+External-issue: https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=252396
+Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
+Signed-off-by: Rob Wing <rob.fx907@gmail.com>
+Closes #11623
+---
+ module/zfs/vdev.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+Index: zfs/module/zfs/vdev.c
+===================================================================
+--- zfs.orig/module/zfs/vdev.c
++++ zfs/module/zfs/vdev.c
+@@ -2317,7 +2317,7 @@ vdev_hold(vdev_t *vd)
+ 	for (int c = 0; c < vd->vdev_children; c++)
+ 		vdev_hold(vd->vdev_child[c]);
+ 
+-	if (vd->vdev_ops->vdev_op_leaf)
++	if (vd->vdev_ops->vdev_op_leaf && vd->vdev_ops->vdev_op_hold != NULL)
+ 		vd->vdev_ops->vdev_op_hold(vd);
+ }
+ 
+@@ -2328,7 +2328,7 @@ vdev_rele(vdev_t *vd)
+ 	for (int c = 0; c < vd->vdev_children; c++)
+ 		vdev_rele(vd->vdev_child[c]);
+ 
+-	if (vd->vdev_ops->vdev_op_leaf)
++	if (vd->vdev_ops->vdev_op_leaf && vd->vdev_ops->vdev_op_rele != NULL)
+ 		vd->vdev_ops->vdev_op_rele(vd);
+ }
+ 
diff -Nru zfs-linux-2.0.3/debian/patches/0026-Linux-increase-max-nvlist_src-size.patch zfs-linux-2.0.3/debian/patches/0026-Linux-increase-max-nvlist_src-size.patch
--- zfs-linux-2.0.3/debian/patches/0026-Linux-increase-max-nvlist_src-size.patch	1970-01-01 08:00:00.000000000 +0800
+++ zfs-linux-2.0.3/debian/patches/0026-Linux-increase-max-nvlist_src-size.patch	2021-03-20 20:40:16.000000000 +0800
@@ -0,0 +1,46 @@
+From 1dfc82a14ed538992f5c37a152995e93ede10469 Mon Sep 17 00:00:00 2001
+From: Brian Behlendorf <behlendorf1@llnl.gov>
+Date: Wed, 24 Feb 2021 09:57:18 -0800
+Subject: [PATCH 26/38] Linux: increase max nvlist_src size
+
+On Linux increase the maximum allowed size of the src nvlist which
+can be passed to the /dev/zfs ioctl.  Originally, this was set
+to a maximum of KMALLOC_MAX_SIZE (4M) because it was kmalloc'd.
+Since that time it's been converted to a vmalloc so that's no
+longer a hard limit, and it's desirable for `zfs send/recv` to
+allow larger nvlists so more snapshots can be sent at once.
+
+Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
+Closes #6572
+Closes #11638
+---
+ man/man5/zfs-module-parameters.5   | 2 +-
+ module/os/linux/zfs/zfs_ioctl_os.c | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+Index: zfs/man/man5/zfs-module-parameters.5
+===================================================================
+--- zfs.orig/man/man5/zfs-module-parameters.5
++++ zfs/man/man5/zfs-module-parameters.5
+@@ -1186,7 +1186,7 @@ amount of memory. When the limit is exce
+ description of the error is sent to the zfs-dbgmsg log. This parameter should
+ not need to be touched under normal circumstances. On FreeBSD, the default is
+ based on the system limit on user wired memory. On Linux, the default is
+-\fBKMALLOC_MAX_SIZE\fR .
++\fB128MB\fR.
+ .sp
+ Default value: \fB0\fR (kernel decides)
+ .RE
+Index: zfs/module/os/linux/zfs/zfs_ioctl_os.c
+===================================================================
+--- zfs.orig/module/os/linux/zfs/zfs_ioctl_os.c
++++ zfs/module/os/linux/zfs/zfs_ioctl_os.c
+@@ -209,7 +209,7 @@ zfs_max_nvlist_src_size_os(void)
+ 	if (zfs_max_nvlist_src_size != 0)
+ 		return (zfs_max_nvlist_src_size);
+ 
+-	return (KMALLOC_MAX_SIZE);
++	return (MIN(ptob(zfs_totalram_pages) / 4, 128 * 1024 * 1024));
+ }
+ 
+ void
diff -Nru zfs-linux-2.0.3/debian/patches/0027-vdev_id-Fix-partition-regular-expression.patch zfs-linux-2.0.3/debian/patches/0027-vdev_id-Fix-partition-regular-expression.patch
--- zfs-linux-2.0.3/debian/patches/0027-vdev_id-Fix-partition-regular-expression.patch	1970-01-01 08:00:00.000000000 +0800
+++ zfs-linux-2.0.3/debian/patches/0027-vdev_id-Fix-partition-regular-expression.patch	2021-03-20 20:40:16.000000000 +0800
@@ -0,0 +1,63 @@
+From 3ee4e6d8b7925d3b83dd7745e873d27983f9e995 Mon Sep 17 00:00:00 2001
+From: Tony Hutter <hutter2@llnl.gov>
+Date: Wed, 24 Feb 2021 09:58:46 -0800
+Subject: [PATCH 27/38] vdev_id: Fix partition regular expression
+
+Given a DM device name, the old vdev_id script would extract any text
+after a 'p' as the partition number.  It then appends "-part" + the
+partition number to the name, giving a by-vdev name like "L0-part5".
+
+This works fine if the DM name is like 'dm-2p5', but doesn't work if
+the DM name is a multipath name like "mpatha".  In those cases it
+incorrectly matches the 'p' in "mpatha", giving by-vdev names like
+"L0-partatha".
+
+This patch fixes the issue by making the partition regex match stricter.
+
+Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
+Signed-off-by: Tony Hutter <hutter2@llnl.gov>
+Closes #11637
+---
+ cmd/vdev_id/vdev_id | 12 +++++++++---
+ 1 file changed, 9 insertions(+), 3 deletions(-)
+
+diff --git a/cmd/vdev_id/vdev_id b/cmd/vdev_id/vdev_id
+index 95a4e483b..8a379a726 100755
+--- a/cmd/vdev_id/vdev_id
++++ b/cmd/vdev_id/vdev_id
+@@ -285,7 +285,9 @@ sas_handler() {
+ 		# we have to append the -part suffix directly in the
+ 		# helper.
+ 		if [ "$DEVTYPE" != "partition" ] ; then
+-			PART=$(echo "$DM_NAME" | awk -Fp '/p/{print "-part"$2}')
++			# Match p[number], remove the 'p' and prepend "-part"
++			PART=$(echo "$DM_NAME" |
++				awk 'match($0,/p[0-9]+$/) {print "-part"substr($0,RSTART+1,RLENGTH-1)}')
+ 		fi
+ 
+ 		# Strip off partition information.
+@@ -499,7 +501,9 @@ scsi_handler() {
+ 		# we have to append the -part suffix directly in the
+ 		# helper.
+ 		if [ "$DEVTYPE" != "partition" ] ; then
+-			PART=$(echo "$DM_NAME" | awk -Fp '/p/{print "-part"$2}')
++			# Match p[number], remove the 'p' and prepend "-part"
++			PART=$(echo "$DM_NAME" |
++			    awk 'match($0,/p[0-9]+$/) {print "-part"substr($0,RSTART+1,RLENGTH-1)}')
+ 		fi
+ 
+ 		# Strip off partition information.
+@@ -648,7 +652,9 @@ alias_handler () {
+ 	DM_PART=
+ 	if echo "$DM_NAME" | grep -q -E 'p[0-9][0-9]*$' ; then
+ 		if [ "$DEVTYPE" != "partition" ] ; then
+-			DM_PART=$(echo "$DM_NAME" | awk -Fp '/p/{print "-part"$2}')
++			# Match p[number], remove the 'p' and prepend "-part"
++			DM_PART=$(echo "$DM_NAME" |
++			    awk 'match($0,/p[0-9]+$/) {print "-part"substr($0,RSTART+1,RLENGTH-1)}')
+ 		fi
+ 	fi
+ 
+-- 
+2.30.1
+
diff -Nru zfs-linux-2.0.3/debian/patches/0028-Fix-overly-broad-locking-in-spa_vdev_config_exit.patch zfs-linux-2.0.3/debian/patches/0028-Fix-overly-broad-locking-in-spa_vdev_config_exit.patch
--- zfs-linux-2.0.3/debian/patches/0028-Fix-overly-broad-locking-in-spa_vdev_config_exit.patch	1970-01-01 08:00:00.000000000 +0800
+++ zfs-linux-2.0.3/debian/patches/0028-Fix-overly-broad-locking-in-spa_vdev_config_exit.patch	2021-03-20 20:40:16.000000000 +0800
@@ -0,0 +1,36 @@
+From 75a089ed34befb8d11df9be92a4438cc49554bf6 Mon Sep 17 00:00:00 2001
+From: Brian Behlendorf <behlendorf1@llnl.gov>
+Date: Wed, 24 Feb 2021 10:00:21 -0800
+Subject: [PATCH 28/38] Fix overly broad locking in spa_vdev_config_exit()
+
+Calling vdev_free() only requires the we acquire the spa config
+SCL_STATE_ALL locks, not the SCL_ALL locks.  In particular, we need
+need to avoid taking the SCL_CONFIG lock (included in SCL_ALL) as a
+writer since this can lead to a deadlock.  The txg_sync_thread() may
+block in spa_txg_history_init_io() when taking the SCL_CONFIG lock
+as a reading when it detects there's a pending writer.
+
+Reviewed-by: Igor Kozhukhov <igor@dilos.org>
+Reviewed-by: Mark Maybee <mark.maybee@delphix.com>
+Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
+Closes #11585
+---
+ module/zfs/spa_misc.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+Index: zfs/module/zfs/spa_misc.c
+===================================================================
+--- zfs.orig/module/zfs/spa_misc.c
++++ zfs/module/zfs/spa_misc.c
+@@ -1274,9 +1274,9 @@ spa_vdev_config_exit(spa_t *spa, vdev_t
+ 		 */
+ 		vdev_autotrim_stop_wait(vd);
+ 
+-		spa_config_enter(spa, SCL_ALL, spa, RW_WRITER);
++		spa_config_enter(spa, SCL_STATE_ALL, spa, RW_WRITER);
+ 		vdev_free(vd);
+-		spa_config_exit(spa, SCL_ALL, spa);
++		spa_config_exit(spa, SCL_STATE_ALL, spa);
+ 	}
+ 
+ 	/*
diff -Nru zfs-linux-2.0.3/debian/patches/0035-Cancel-TRIM-initialize-on-FAULTED-non-writeable-vdev.patch zfs-linux-2.0.3/debian/patches/0035-Cancel-TRIM-initialize-on-FAULTED-non-writeable-vdev.patch
--- zfs-linux-2.0.3/debian/patches/0035-Cancel-TRIM-initialize-on-FAULTED-non-writeable-vdev.patch	1970-01-01 08:00:00.000000000 +0800
+++ zfs-linux-2.0.3/debian/patches/0035-Cancel-TRIM-initialize-on-FAULTED-non-writeable-vdev.patch	2021-03-20 20:40:16.000000000 +0800
@@ -0,0 +1,258 @@
+From bedbc13daa6dfe9e0221bfadb8d8db2378deaacc Mon Sep 17 00:00:00 2001
+From: nssrikanth <75025422+nssrikanth@users.noreply.github.com>
+Date: Tue, 2 Mar 2021 23:57:27 +0530
+Subject: [PATCH 35/38] Cancel TRIM / initialize on FAULTED non-writeable vdevs
+
+When a device which is actively trimming or initializing becomes
+FAULTED, and therefore no longer writable, cancel the active
+TRIM or initialization.  When the device is merely taken offline
+with `zpool offline` then stop the operation but do not cancel it.
+When the device is brought back online the operation will be
+resumed if possible.
+
+Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
+Co-authored-by: Brian Behlendorf <behlendorf1@llnl.gov>
+Co-authored-by: Vipin Kumar Verma <vipin.verma@hpe.com>
+Signed-off-by: Srikanth N S <srikanth.nagasubbaraoseetharaman@hpe.com>
+Closes #11588
+---
+ module/zfs/vdev_initialize.c                  | 10 ++-
+ module/zfs/vdev_trim.c                        | 15 +++--
+ tests/runfiles/common.run                     |  2 +
+ .../cli_root/zpool_initialize/Makefile.am     |  1 +
+ ..._initialize_fault_export_import_online.ksh | 59 ++++++++++++++++++
+ .../cli_root/zpool_trim/Makefile.am           |  1 +
+ .../zpool_trim_fault_export_import_online.ksh | 62 +++++++++++++++++++
+ 7 files changed, 144 insertions(+), 6 deletions(-)
+ create mode 100755 tests/zfs-tests/tests/functional/cli_root/zpool_initialize/zpool_initialize_fault_export_import_online.ksh
+ create mode 100755 tests/zfs-tests/tests/functional/cli_root/zpool_trim/zpool_trim_fault_export_import_online.ksh
+
+Index: zfs/module/zfs/vdev_initialize.c
+===================================================================
+--- zfs.orig/module/zfs/vdev_initialize.c
++++ zfs/module/zfs/vdev_initialize.c
+@@ -536,8 +536,14 @@ vdev_initialize_thread(void *arg)
+ 	vd->vdev_initialize_tree = NULL;
+ 
+ 	mutex_enter(&vd->vdev_initialize_lock);
+-	if (!vd->vdev_initialize_exit_wanted && vdev_writeable(vd)) {
+-		vdev_initialize_change_state(vd, VDEV_INITIALIZE_COMPLETE);
++	if (!vd->vdev_initialize_exit_wanted) {
++		if (vdev_writeable(vd)) {
++			vdev_initialize_change_state(vd,
++			    VDEV_INITIALIZE_COMPLETE);
++		} else if (vd->vdev_faulted) {
++			vdev_initialize_change_state(vd,
++			    VDEV_INITIALIZE_CANCELED);
++		}
+ 	}
+ 	ASSERT(vd->vdev_initialize_thread != NULL ||
+ 	    vd->vdev_initialize_inflight == 0);
+Index: zfs/module/zfs/vdev_trim.c
+===================================================================
+--- zfs.orig/module/zfs/vdev_trim.c
++++ zfs/module/zfs/vdev_trim.c
+@@ -22,6 +22,7 @@
+ /*
+  * Copyright (c) 2016 by Delphix. All rights reserved.
+  * Copyright (c) 2019 by Lawrence Livermore National Security, LLC.
++ * Copyright (c) 2021 Hewlett Packard Enterprise Development LP
+  */
+ 
+ #include <sys/spa.h>
+@@ -911,10 +912,16 @@ vdev_trim_thread(void *arg)
+ 	range_tree_destroy(ta.trim_tree);
+ 
+ 	mutex_enter(&vd->vdev_trim_lock);
+-	if (!vd->vdev_trim_exit_wanted && vdev_writeable(vd)) {
+-		vdev_trim_change_state(vd, VDEV_TRIM_COMPLETE,
+-		    vd->vdev_trim_rate, vd->vdev_trim_partial,
+-		    vd->vdev_trim_secure);
++	if (!vd->vdev_trim_exit_wanted) {
++		if (vdev_writeable(vd)) {
++			vdev_trim_change_state(vd, VDEV_TRIM_COMPLETE,
++			    vd->vdev_trim_rate, vd->vdev_trim_partial,
++			    vd->vdev_trim_secure);
++		} else if (vd->vdev_faulted) {
++			vdev_trim_change_state(vd, VDEV_TRIM_CANCELED,
++			    vd->vdev_trim_rate, vd->vdev_trim_partial,
++			    vd->vdev_trim_secure);
++		}
+ 	}
+ 	ASSERT(vd->vdev_trim_thread != NULL || vd->vdev_trim_inflight[0] == 0);
+ 
+Index: zfs/tests/runfiles/common.run
+===================================================================
+--- zfs.orig/tests/runfiles/common.run
++++ zfs/tests/runfiles/common.run
+@@ -410,6 +410,7 @@ tags = ['functional', 'cli_root', 'zpool
+ 
+ [tests/functional/cli_root/zpool_initialize]
+ tests = ['zpool_initialize_attach_detach_add_remove',
++    'zpool_initialize_fault_export_import_online',
+     'zpool_initialize_import_export',
+     'zpool_initialize_offline_export_import_online',
+     'zpool_initialize_online_offline',
+@@ -474,6 +475,7 @@ tags = ['functional', 'cli_root', 'zpool
+ 
+ [tests/functional/cli_root/zpool_trim]
+ tests = ['zpool_trim_attach_detach_add_remove',
++    'zpool_trim_fault_export_import_online',
+     'zpool_trim_import_export', 'zpool_trim_multiple', 'zpool_trim_neg',
+     'zpool_trim_offline_export_import_online', 'zpool_trim_online_offline',
+     'zpool_trim_partial', 'zpool_trim_rate', 'zpool_trim_rate_neg',
+Index: zfs/tests/zfs-tests/tests/functional/cli_root/zpool_initialize/Makefile.am
+===================================================================
+--- zfs.orig/tests/zfs-tests/tests/functional/cli_root/zpool_initialize/Makefile.am
++++ zfs/tests/zfs-tests/tests/functional/cli_root/zpool_initialize/Makefile.am
+@@ -2,6 +2,7 @@ pkgdatadir = $(datadir)/@PACKAGE@/zfs-te
+ dist_pkgdata_SCRIPTS = \
+ 	cleanup.ksh \
+ 	zpool_initialize_attach_detach_add_remove.ksh \
++	zpool_initialize_fault_export_import_online.ksh \
+ 	zpool_initialize_import_export.ksh \
+ 	zpool_initialize_offline_export_import_online.ksh \
+ 	zpool_initialize_online_offline.ksh \
+Index: zfs/tests/zfs-tests/tests/functional/cli_root/zpool_initialize/zpool_initialize_fault_export_import_online.ksh
+===================================================================
+--- /dev/null
++++ zfs/tests/zfs-tests/tests/functional/cli_root/zpool_initialize/zpool_initialize_fault_export_import_online.ksh
+@@ -0,0 +1,59 @@
++#!/bin/ksh -p
++#
++# CDDL HEADER START
++#
++# This file and its contents are supplied under the terms of the
++# Common Development and Distribution License ("CDDL"), version 1.0.
++# You may only use this file in accordance with the terms of version
++# 1.0 of the CDDL.
++#
++# A full copy of the text of the CDDL should have accompanied this
++# source.  A copy of the CDDL is also available via the Internet at
++# http://www.illumos.org/license/CDDL.
++#
++# CDDL HEADER END
++#
++
++#
++# Copyright (c) 2021 Lawrence Livermore National Security, LLC.
++#
++
++. $STF_SUITE/include/libtest.shlib
++. $STF_SUITE/tests/functional/cli_root/zpool_initialize/zpool_initialize.kshlib
++
++#
++# DESCRIPTION:
++# Miscellaneous complex sequences of operations function as expected.
++#
++# STRATEGY:
++# 1. Create a pool with a two-way mirror.
++# 2. Start initializing, fault, export, import, online and verify along
++#    the way that the initializing was cancelled and not restarted.
++#
++
++DISK1="$(echo $DISKS | cut -d' ' -f1)"
++DISK2="$(echo $DISKS | cut -d' ' -f2)"
++
++log_must zpool create -f $TESTPOOL mirror $DISK1 $DISK2
++
++log_must zpool initialize $TESTPOOL $DISK1
++progress="$(initialize_progress $TESTPOOL $DISK1)"
++[[ -z "$progress" ]] && log_fail "Initializing did not start"
++
++log_must zpool offline -f $TESTPOOL $DISK1
++log_must check_vdev_state $TESTPOOL $DISK1 "FAULTED"
++log_must eval "zpool status -i $TESTPOOL | grep $DISK1 | grep uninitialized"
++
++log_must zpool export $TESTPOOL
++log_must zpool import $TESTPOOL
++
++log_must check_vdev_state $TESTPOOL $DISK1 "FAULTED"
++log_must eval "zpool status -i $TESTPOOL | grep $DISK1 | grep uninitialized"
++
++log_must zpool online $TESTPOOL $DISK1
++log_must zpool clear $TESTPOOL $DISK1
++log_must check_vdev_state $TESTPOOL $DISK1 "ONLINE"
++log_must eval "zpool status -i $TESTPOOL | grep $DISK1 | grep uninitialized"
++
++log_pass "Initializing behaves as expected at each step of:" \
++    "initialize + fault + export + import + online"
+Index: zfs/tests/zfs-tests/tests/functional/cli_root/zpool_trim/Makefile.am
+===================================================================
+--- zfs.orig/tests/zfs-tests/tests/functional/cli_root/zpool_trim/Makefile.am
++++ zfs/tests/zfs-tests/tests/functional/cli_root/zpool_trim/Makefile.am
+@@ -3,6 +3,7 @@ dist_pkgdata_SCRIPTS = \
+ 	setup.ksh \
+ 	cleanup.ksh \
+ 	zpool_trim_attach_detach_add_remove.ksh \
++	zpool_trim_fault_export_import_online.ksh \
+ 	zpool_trim_import_export.ksh \
+ 	zpool_trim_multiple.ksh \
+ 	zpool_trim_neg.ksh \
+Index: zfs/tests/zfs-tests/tests/functional/cli_root/zpool_trim/zpool_trim_fault_export_import_online.ksh
+===================================================================
+--- /dev/null
++++ zfs/tests/zfs-tests/tests/functional/cli_root/zpool_trim/zpool_trim_fault_export_import_online.ksh
+@@ -0,0 +1,62 @@
++#!/bin/ksh -p
++#
++# CDDL HEADER START
++#
++# This file and its contents are supplied under the terms of the
++# Common Development and Distribution License ("CDDL"), version 1.0.
++# You may only use this file in accordance with the terms of version
++# 1.0 of the CDDL.
++#
++# A full copy of the text of the CDDL should have accompanied this
++# source.  A copy of the CDDL is also available via the Internet at
++# http://www.illumos.org/license/CDDL.
++#
++# CDDL HEADER END
++#
++
++#
++# Copyright (c) 2019 by Tim Chase. All rights reserved.
++# Copyright (c) 2021 Lawrence Livermore National Security, LLC.
++#
++
++. $STF_SUITE/include/libtest.shlib
++. $STF_SUITE/tests/functional/cli_root/zpool_trim/zpool_trim.kshlib
++
++#
++# DESCRIPTION:
++# Miscellaneous complex sequences of operations function as expected.
++#
++# STRATEGY:
++# 1. Create a pool with a two-way mirror.
++# 2. Start trimming, fault, export, import, online and verify along
++#    the way that the trim was cancelled and not restarted.
++#
++
++DISK1="$(echo $DISKS | cut -d' ' -f1)"
++DISK2="$(echo $DISKS | cut -d' ' -f2)"
++
++log_must zpool create -f $TESTPOOL mirror $DISK1 $DISK2
++
++log_must zpool trim -r 128M $TESTPOOL $DISK1
++progress="$(trim_progress $TESTPOOL $DISK1)"
++[[ -z "$progress" ]] && log_fail "Trimming did not start"
++
++log_must zpool offline -f $TESTPOOL $DISK1
++log_must check_vdev_state $TESTPOOL $DISK1 "FAULTED"
++log_must eval "zpool status -t $TESTPOOL | grep $DISK1 | grep untrimmed"
++
++log_must zpool export $TESTPOOL
++log_must zpool import $TESTPOOL
++
++# Note: the expected state here is unsupported since the faulted device
++# cannot be checked to determine if it supports TRIM.
++log_must check_vdev_state $TESTPOOL $DISK1 "FAULTED"
++log_must eval "zpool status -t $TESTPOOL | grep $DISK1 | grep unsupported"
++
++log_must zpool online $TESTPOOL $DISK1
++log_must zpool clear $TESTPOOL $DISK1
++log_must check_vdev_state $TESTPOOL $DISK1 "ONLINE"
++log_must eval "zpool status -t $TESTPOOL | grep $DISK1 | grep untrimmed"
++
++log_pass "Trimming behaves as expected at each step of:" \
++    "trim + fault + export + import + online"
diff -Nru zfs-linux-2.0.3/debian/patches/0037-linux-zvol-avoid-heap-allocation-for-zvol_request_sy.patch zfs-linux-2.0.3/debian/patches/0037-linux-zvol-avoid-heap-allocation-for-zvol_request_sy.patch
--- zfs-linux-2.0.3/debian/patches/0037-linux-zvol-avoid-heap-allocation-for-zvol_request_sy.patch	1970-01-01 08:00:00.000000000 +0800
+++ zfs-linux-2.0.3/debian/patches/0037-linux-zvol-avoid-heap-allocation-for-zvol_request_sy.patch	2021-03-20 20:40:16.000000000 +0800
@@ -0,0 +1,220 @@
+From e439ee83c1316b58d480148c9c851f42c1458305 Mon Sep 17 00:00:00 2001
+From: Christian Schwarz <me@cschwarz.com>
+Date: Wed, 3 Mar 2021 17:15:28 +0100
+Subject: [PATCH 37/38] linux: zvol: avoid heap allocation for
+ zvol_request_sync=1
+
+The spl_kmem_alloc showed up in some flamegraphs in a single-threaded
+4k sync write workload at 85k IOPS on an
+Intel(R) Xeon(R) Silver 4215 CPU @ 2.50GHz.
+Certainly not a huge win but I believe the change is clean and
+easy to maintain down the road.
+
+Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
+Reviewed-by: Matthew Ahrens <mahrens@delphix.com>
+Signed-off-by: Christian Schwarz <me@cschwarz.com>
+Closes #11666
+---
+ module/os/linux/zfs/zvol_os.c | 93 ++++++++++++++++++++++++-----------
+ 1 file changed, 64 insertions(+), 29 deletions(-)
+
+Index: zfs/module/os/linux/zfs/zvol_os.c
+===================================================================
+--- zfs.orig/module/os/linux/zfs/zvol_os.c
++++ zfs/module/os/linux/zfs/zvol_os.c
+@@ -56,12 +56,32 @@ struct zvol_state_os {
+ taskq_t *zvol_taskq;
+ static struct ida zvol_ida;
+ 
+-typedef struct zv_request {
++typedef struct zv_request_stack {
+ 	zvol_state_t	*zv;
+ 	struct bio	*bio;
+-	taskq_ent_t	ent;
+ } zv_request_t;
+ 
++typedef struct zv_request_task {
++	zv_request_t zvr;
++	taskq_ent_t	ent;
++} zv_request_task_t;
++
++static zv_request_task_t *
++zv_request_task_create(zv_request_t zvr)
++{
++	zv_request_task_t *task;
++	task = kmem_alloc(sizeof (zv_request_task_t), KM_SLEEP);
++	taskq_init_ent(&task->ent);
++	task->zvr = zvr;
++	return (task);
++}
++
++static void
++zv_request_task_free(zv_request_task_t *task)
++{
++	kmem_free(task, sizeof (*task));
++}
++
+ /*
+  * Given a path, return TRUE if path is a ZVOL.
+  */
+@@ -80,9 +100,8 @@ zvol_is_zvol_impl(const char *path)
+ }
+ 
+ static void
+-zvol_write(void *arg)
++zvol_write(zv_request_t *zvr)
+ {
+-	zv_request_t *zvr = arg;
+ 	struct bio *bio = zvr->bio;
+ 	int error = 0;
+ 	uio_t uio;
+@@ -102,7 +121,6 @@ zvol_write(void *arg)
+ 	if (uio.uio_resid == 0) {
+ 		rw_exit(&zv->zv_suspend_lock);
+ 		BIO_END_IO(bio, 0);
+-		kmem_free(zvr, sizeof (zv_request_t));
+ 		return;
+ 	}
+ 
+@@ -162,13 +180,19 @@ zvol_write(void *arg)
+ 		blk_generic_end_io_acct(q, disk, WRITE, bio, start_time);
+ 
+ 	BIO_END_IO(bio, -error);
+-	kmem_free(zvr, sizeof (zv_request_t));
+ }
+ 
+ static void
+-zvol_discard(void *arg)
++zvol_write_task(void *arg)
++{
++	zv_request_task_t *task = arg;
++	zvol_write(&task->zvr);
++	zv_request_task_free(task);
++}
++
++static void
++zvol_discard(zv_request_t *zvr)
+ {
+-	zv_request_t *zvr = arg;
+ 	struct bio *bio = zvr->bio;
+ 	zvol_state_t *zv = zvr->zv;
+ 	uint64_t start = BIO_BI_SECTOR(bio) << 9;
+@@ -238,13 +262,19 @@ unlock:
+ 		blk_generic_end_io_acct(q, disk, WRITE, bio, start_time);
+ 
+ 	BIO_END_IO(bio, -error);
+-	kmem_free(zvr, sizeof (zv_request_t));
+ }
+ 
+ static void
+-zvol_read(void *arg)
++zvol_discard_task(void *arg)
++{
++	zv_request_task_t *task = arg;
++	zvol_discard(&task->zvr);
++	zv_request_task_free(task);
++}
++
++static void
++zvol_read(zv_request_t *zvr)
+ {
+-	zv_request_t *zvr = arg;
+ 	struct bio *bio = zvr->bio;
+ 	int error = 0;
+ 	uio_t uio;
+@@ -295,7 +325,14 @@ zvol_read(void *arg)
+ 		blk_generic_end_io_acct(q, disk, READ, bio, start_time);
+ 
+ 	BIO_END_IO(bio, -error);
+-	kmem_free(zvr, sizeof (zv_request_t));
++}
++
++static void
++zvol_read_task(void *arg)
++{
++	zv_request_task_t *task = arg;
++	zvol_read(&task->zvr);
++	zv_request_task_free(task);
+ }
+ 
+ #ifdef HAVE_SUBMIT_BIO_IN_BLOCK_DEVICE_OPERATIONS
+@@ -314,7 +351,6 @@ zvol_request(struct request_queue *q, st
+ 	uint64_t offset = BIO_BI_SECTOR(bio) << 9;
+ 	uint64_t size = BIO_BI_SIZE(bio);
+ 	int rw = bio_data_dir(bio);
+-	zv_request_t *zvr;
+ 
+ 	if (bio_has_data(bio) && offset + size > zv->zv_volsize) {
+ 		printk(KERN_INFO
+@@ -327,6 +363,12 @@ zvol_request(struct request_queue *q, st
+ 		goto out;
+ 	}
+ 
++	zv_request_t zvr = {
++		.zv = zv,
++		.bio = bio,
++	};
++	zv_request_task_t *task;
++
+ 	if (rw == WRITE) {
+ 		if (unlikely(zv->zv_flags & ZVOL_RDONLY)) {
+ 			BIO_END_IO(bio, -SET_ERROR(EROFS));
+@@ -357,11 +399,6 @@ zvol_request(struct request_queue *q, st
+ 			rw_downgrade(&zv->zv_suspend_lock);
+ 		}
+ 
+-		zvr = kmem_alloc(sizeof (zv_request_t), KM_SLEEP);
+-		zvr->zv = zv;
+-		zvr->bio = bio;
+-		taskq_init_ent(&zvr->ent);
+-
+ 		/*
+ 		 * We don't want this thread to be blocked waiting for i/o to
+ 		 * complete, so we instead wait from a taskq callback. The
+@@ -394,17 +431,19 @@ zvol_request(struct request_queue *q, st
+ 		 */
+ 		if (bio_is_discard(bio) || bio_is_secure_erase(bio)) {
+ 			if (zvol_request_sync) {
+-				zvol_discard(zvr);
++				zvol_discard(&zvr);
+ 			} else {
++				task = zv_request_task_create(zvr);
+ 				taskq_dispatch_ent(zvol_taskq,
+-				    zvol_discard, zvr, 0, &zvr->ent);
++				    zvol_discard_task, task, 0, &task->ent);
+ 			}
+ 		} else {
+ 			if (zvol_request_sync) {
+-				zvol_write(zvr);
++				zvol_write(&zvr);
+ 			} else {
++				task = zv_request_task_create(zvr);
+ 				taskq_dispatch_ent(zvol_taskq,
+-				    zvol_write, zvr, 0, &zvr->ent);
++				    zvol_write_task, task, 0, &task->ent);
+ 			}
+ 		}
+ 	} else {
+@@ -418,19 +457,15 @@ zvol_request(struct request_queue *q, st
+ 			goto out;
+ 		}
+ 
+-		zvr = kmem_alloc(sizeof (zv_request_t), KM_SLEEP);
+-		zvr->zv = zv;
+-		zvr->bio = bio;
+-		taskq_init_ent(&zvr->ent);
+-
+ 		rw_enter(&zv->zv_suspend_lock, RW_READER);
+ 
+ 		/* See comment in WRITE case above. */
+ 		if (zvol_request_sync) {
+-			zvol_read(zvr);
++			zvol_read(&zvr);
+ 		} else {
++			task = zv_request_task_create(zvr);
+ 			taskq_dispatch_ent(zvol_taskq,
+-			    zvol_read, zvr, 0, &zvr->ent);
++			    zvol_read_task, task, 0, &task->ent);
+ 		}
+ 	}
+ 
diff -Nru zfs-linux-2.0.3/debian/patches/0038-Don-t-bomb-out-when-using-keylocation-file.patch zfs-linux-2.0.3/debian/patches/0038-Don-t-bomb-out-when-using-keylocation-file.patch
--- zfs-linux-2.0.3/debian/patches/0038-Don-t-bomb-out-when-using-keylocation-file.patch	1970-01-01 08:00:00.000000000 +0800
+++ zfs-linux-2.0.3/debian/patches/0038-Don-t-bomb-out-when-using-keylocation-file.patch	2021-03-20 20:40:16.000000000 +0800
@@ -0,0 +1,46 @@
+From 92fb29b9f95522d1083f4467e9aab9f8f1e7d0ba Mon Sep 17 00:00:00 2001
+From: James Wah <james@laird-wah.net>
+Date: Thu, 4 Mar 2021 03:28:49 +1100
+Subject: [PATCH 38/38] Don't bomb out when using keylocation=file://
+
+Avoid following the error path when the operation in fact succeeded.
+
+Reviewed-by: Ryan Moeller <ryan@iXsystems.com>
+Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
+Signed-off-by: James Wah <james@laird-wah.net>
+Closes #11651
+---
+ lib/libzfs/libzfs_crypto.c | 10 +++++++---
+ 1 file changed, 7 insertions(+), 3 deletions(-)
+
+diff --git a/lib/libzfs/libzfs_crypto.c b/lib/libzfs/libzfs_crypto.c
+index 1a2ee638a..fe3a0f283 100644
+--- a/lib/libzfs/libzfs_crypto.c
++++ b/lib/libzfs/libzfs_crypto.c
+@@ -532,6 +532,8 @@ get_key_material(libzfs_handle_t *hdl, boolean_t do_verify, boolean_t newkey,
+ 
+ 		break;
+ 	case ZFS_KEYLOCATION_URI:
++		ret = ENOTSUP;
++
+ 		for (handler = uri_handlers; handler->zuh_scheme != NULL;
+ 		    handler++) {
+ 			if (strcmp(handler->zuh_scheme, uri_scheme) != 0)
+@@ -544,9 +546,11 @@ get_key_material(libzfs_handle_t *hdl, boolean_t do_verify, boolean_t newkey,
+ 			break;
+ 		}
+ 
+-		ret = ENOTSUP;
+-		zfs_error_aux(hdl, dgettext(TEXT_DOMAIN,
+-		    "URI scheme is not supported"));
++		if (ret == ENOTSUP) {
++			zfs_error_aux(hdl, dgettext(TEXT_DOMAIN,
++			    "URI scheme is not supported"));
++			goto error;
++		}
+ 
+ 		break;
+ 	default:
+-- 
+2.30.1
+
diff -Nru zfs-linux-2.0.3/debian/patches/series zfs-linux-2.0.3/debian/patches/series
--- zfs-linux-2.0.3/debian/patches/series	2021-02-12 16:30:01.000000000 +0800
+++ zfs-linux-2.0.3/debian/patches/series	2021-04-02 14:08:30.000000000 +0800
@@ -16,3 +16,12 @@
 4620-zfs-vol-wait-fix-locked-encrypted-vols.patch
 move-arcstat-1-to-8.patch
 #ubuntu/4701-enable-ARC-FILL-LOCKED-flag.patch
+0010-Fix-report_mount_progress-never-calling-set_progress.patch
+0014-libzpool-set_global_var-fix-endianness-handling-fixe.patch
+0019-Better-zfs_get_enclosure_sysfs_path-enclosure-suppor.patch
+0020-vdev_ops-don-t-try-to-call-vdev_op_hold-or-vdev_op_r.patch
+0026-Linux-increase-max-nvlist_src-size.patch
+0028-Fix-overly-broad-locking-in-spa_vdev_config_exit.patch
+0035-Cancel-TRIM-initialize-on-FAULTED-non-writeable-vdev.patch
+0037-linux-zvol-avoid-heap-allocation-for-zvol_request_sy.patch
+0038-Don-t-bomb-out-when-using-keylocation-file.patch
diff -Nru zfs-linux-2.0.3/debian/po/cs.po zfs-linux-2.0.3/debian/po/cs.po
--- zfs-linux-2.0.3/debian/po/cs.po	2021-01-08 14:43:30.000000000 +0800
+++ zfs-linux-2.0.3/debian/po/cs.po	2021-03-31 19:46:36.000000000 +0800
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: zfs-linux 0.6.1-1\n"
 "Report-Msgid-Bugs-To: zfs-linux@packages.debian.org\n"
-"POT-Creation-Date: 2015-11-01 14:11+0800\n"
+"POT-Creation-Date: 2021-03-30 14:43+0800\n"
 "PO-Revision-Date: 2013-07-21 09:57+0200\n"
 "Last-Translator: Michal Simunek <michal.simunek@gmail.com>\n"
 "Language-Team: Czech <debian-l10n-czech@lists.debian.org>\n"
@@ -19,14 +19,14 @@
 #. Type: boolean
 #. Description
 #: ../zfs-dkms.templates:1001
-msgid "Abort building ZFS on a 32-bit kernel?"
-msgstr "Přerušit sestavování ZFS na 32 bitovém kernelu?"
+msgid "Abort building OpenZFS on a 32-bit kernel?"
+msgstr "Přerušit sestavování OpenZFS na 32 bitovém kernelu?"
 
 #. Type: boolean
 #. Description
 #: ../zfs-dkms.templates:1001
-msgid "You are attempting to build ZFS against a 32-bit running kernel."
-msgstr "Pokoušíte se sestavit ZFS oproti běžícímu 32 bitovému kernelu."
+msgid "You are attempting to build OpenZFS against a 32-bit running kernel."
+msgstr "Pokoušíte se sestavit OpenZFS oproti běžícímu 32 bitovému kernelu."
 
 #. Type: boolean
 #. Description
@@ -37,43 +37,44 @@
 "Although possible, building in a 32-bit environment is unsupported and "
 "likely to cause instability leading to possible data corruption. You are "
 "strongly advised to use a 64-bit kernel; if you do decide to proceed with "
-"using ZFS on this kernel then keep in mind that it is at your own risk."
+"using OpenZFS on this kernel then keep in mind that it is at your own risk."
 msgstr ""
 "Přestože je to možné, sestavování ve 32 bitovém prostředí není podporováno a "
 "může způsobit nestabilitu vedoucí k možnému poškození dat. Důrazně vám "
 "doporučujeme používat 64 bitový kernel; rozhodnete-li se pokračovat s "
-"používáním ZFS na tomto kernelu, pak mějte na paměti, že je to na vaše "
+"používáním OpenZFS na tomto kernelu, pak mějte na paměti, že je to na vaše "
 "vlastní nebezpečí."
 
 #. Type: boolean
 #. Description
 #: ../zfs-dkms.templates:2001
-msgid "Abort building ZFS on an unknown kernel?"
-msgstr "Přerušit sestavování ZFS na neznámém kernelu?"
+msgid "Abort building OpenZFS on an unknown kernel?"
+msgstr "Přerušit sestavování OpenZFS na neznámém kernelu?"
 
 #. Type: boolean
 #. Description
 #: ../zfs-dkms.templates:2001
 msgid ""
-"You are attempting to build ZFS against a running kernel that could not be "
-"identified as 32-bit or 64-bit. If you are not completely sure that the "
+"You are attempting to build OpenZFS against a running kernel that could not "
+"be identified as 32-bit or 64-bit. If you are not completely sure that the "
 "running kernel is a 64-bit one, you should probably stop the build."
 msgstr ""
-"Pokoušíte se sestavit ZFS oproti běžícímu kernelu, u kterého se nepodařilo "
-"rozpoznat, zda-li je 32 bitový nebo 64 bitový. Pokud si nejste zcela jisti, "
-"že je běžící kernel 64 bitový, měli byste nejspíš sestavování ukončit."
+"Pokoušíte se sestavit OpenZFS oproti běžícímu kernelu, u kterého se "
+"nepodařilo rozpoznat, zda-li je 32 bitový nebo 64 bitový. Pokud si nejste "
+"zcela jisti, že je běžící kernel 64 bitový, měli byste nejspíš sestavování "
+"ukončit."
 
 #. Type: note
 #. Description
 #: ../zfs-dkms.templates:3001
-msgid "Licenses of ZFS and Linux are incompatible"
+msgid "Licenses of OpenZFS and Linux are incompatible"
 msgstr ""
 
 #. Type: note
 #. Description
 #: ../zfs-dkms.templates:3001
 msgid ""
-"ZFS is licensed under the Common Development and Distribution License "
+"OpenZFS is licensed under the Common Development and Distribution License "
 "(CDDL), and the Linux kernel is licensed under the GNU General Public "
 "License Version 2 (GPL-2). While both are free open source licenses they are "
 "restrictive licenses. The combination of them causes problems because it "
@@ -85,8 +86,8 @@
 #. Description
 #: ../zfs-dkms.templates:3001
 msgid ""
-"You are going to build ZFS using DKMS in such a way that they are not going to "
-"be built into one monolithic binary. Please be aware that distributing both of "
-"the binaries in the same media (disk images, virtual appliances, etc) may "
-"lead to infringing."
+"You are going to build OpenZFS using DKMS in such a way that they are not "
+"going to be built into one monolithic binary. Please be aware that "
+"distributing both of the binaries in the same media (disk images, virtual "
+"appliances, etc) may lead to infringing."
 msgstr ""
diff -Nru zfs-linux-2.0.3/debian/po/da.po zfs-linux-2.0.3/debian/po/da.po
--- zfs-linux-2.0.3/debian/po/da.po	2021-01-08 14:43:30.000000000 +0800
+++ zfs-linux-2.0.3/debian/po/da.po	2021-03-31 19:46:36.000000000 +0800
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: zfs-linux\n"
 "Report-Msgid-Bugs-To: zfs-linux@packages.debian.org\n"
-"POT-Creation-Date: 2015-11-01 14:11+0800\n"
+"POT-Creation-Date: 2021-03-30 14:43+0800\n"
 "PO-Revision-Date: 2016-07-09 06:57+0100\n"
 "Last-Translator: Joe Hansen <joedalton2@yahoo.dk>\n"
 "Language-Team: Danish <debian-l10n-danish@lists.debian.org>\n"
@@ -19,14 +19,14 @@
 #. Type: boolean
 #. Description
 #: ../zfs-dkms.templates:1001
-msgid "Abort building ZFS on a 32-bit kernel?"
-msgstr "Afbryd bygning af ZFS på en 32-bit kerne?"
+msgid "Abort building OpenZFS on a 32-bit kernel?"
+msgstr "Afbryd bygning af OpenZFS på en 32-bit kerne?"
 
 #. Type: boolean
 #. Description
 #: ../zfs-dkms.templates:1001
-msgid "You are attempting to build ZFS against a 32-bit running kernel."
-msgstr "Du forsøger at bygge ZFS mod en 32-bit kørende kerne."
+msgid "You are attempting to build OpenZFS against a 32-bit running kernel."
+msgstr "Du forsøger at bygge OpenZFS mod en 32-bit kørende kerne."
 
 #. Type: boolean
 #. Description
@@ -37,66 +37,66 @@
 "Although possible, building in a 32-bit environment is unsupported and "
 "likely to cause instability leading to possible data corruption. You are "
 "strongly advised to use a 64-bit kernel; if you do decide to proceed with "
-"using ZFS on this kernel then keep in mind that it is at your own risk."
+"using OpenZFS on this kernel then keep in mind that it is at your own risk."
 msgstr ""
 "Selvom det er muligt, så er bygning af et 32-bit miljø ikke understøttet og "
 "vil sandsynligvis medføre ustabilitet, der kan føre til dataødelæggelse. Du "
 "rådes på det kraftigste til at bruge en 64-bit kerne; hvis du vælger at "
-"fortsætte med at bruge ZFS på denne kerne så husk, at det er på egen risiko."
+"fortsætte med at bruge OpenZFS på denne kerne så husk, at det er på egen "
+"risiko."
 
 #. Type: boolean
 #. Description
 #: ../zfs-dkms.templates:2001
-msgid "Abort building ZFS on an unknown kernel?"
-msgstr "Afbryd bygning af ZFS på en ukendt kerne?"
+msgid "Abort building OpenZFS on an unknown kernel?"
+msgstr "Afbryd bygning af OpenZFS på en ukendt kerne?"
 
 #. Type: boolean
 #. Description
 #: ../zfs-dkms.templates:2001
 msgid ""
-"You are attempting to build ZFS against a running kernel that could not be "
-"identified as 32-bit or 64-bit. If you are not completely sure that the "
+"You are attempting to build OpenZFS against a running kernel that could not "
+"be identified as 32-bit or 64-bit. If you are not completely sure that the "
 "running kernel is a 64-bit one, you should probably stop the build."
 msgstr ""
-"Du forsøger at bygge ZFS mod en kørende kerne, som ikke kan identificeres "
-"som enten 32-bit eller 64-bit. Hvis du ikke er fuldstændig sikker på, at den "
-"kørende kerne er en 64-bit, så bør du stoppe bygningen."
+"Du forsøger at bygge OpenZFS mod en kørende kerne, som ikke kan "
+"identificeres som enten 32-bit eller 64-bit. Hvis du ikke er fuldstændig "
+"sikker på, at den kørende kerne er en 64-bit, så bør du stoppe bygningen."
 
 #. Type: note
 #. Description
 #: ../zfs-dkms.templates:3001
-msgid "Licenses of ZFS and Linux are incompatible"
-msgstr "Licenserne for ZFS og Linux er ikke kompatible"
+msgid "Licenses of OpenZFS and Linux are incompatible"
+msgstr "Licenserne for OpenZFS og Linux er ikke kompatible"
 
 #. Type: note
 #. Description
 #: ../zfs-dkms.templates:3001
 msgid ""
-"ZFS is licensed under the Common Development and Distribution License "
+"OpenZFS is licensed under the Common Development and Distribution License "
 "(CDDL), and the Linux kernel is licensed under the GNU General Public "
 "License Version 2 (GPL-2). While both are free open source licenses they are "
 "restrictive licenses. The combination of them causes problems because it "
 "prevents using pieces of code exclusively available under one license with "
 "pieces of code exclusively available under the other in the same binary."
 msgstr ""
-"ZFS er udgivet under licensen Common Development and Distribution License "
-"(CDDL), og Linuxkernen er udgivet under GNU General Public License Version "
-"2 (GPL-2). Selv om begge er frie åben licenser er de restriktive "
-"licenser. Kombinationen af dem medfører problemer da de forhindrer brug "
-"af kodestumper eksklusivt tilgængelig under en licens med stykker af kode "
+"OpenZFS er udgivet under licensen Common Development and Distribution "
+"License (CDDL), og Linuxkernen er udgivet under GNU General Public License "
+"Version 2 (GPL-2). Selv om begge er frie åben licenser er de restriktive "
+"licenser. Kombinationen af dem medfører problemer da de forhindrer brug af "
+"kodestumper eksklusivt tilgængelig under en licens med stykker af kode "
 "eksklusivt tilgængelig under den anden i den samme binære."
 
 #. Type: note
 #. Description
 #: ../zfs-dkms.templates:3001
 msgid ""
-"You are going to build ZFS using DKMS in such a way that they are not going to "
-"be built into one monolithic binary. Please be aware that distributing both of "
-"the binaries in the same media (disk images, virtual appliances, etc) may "
-"lead to infringing."
+"You are going to build OpenZFS using DKMS in such a way that they are not "
+"going to be built into one monolithic binary. Please be aware that "
+"distributing both of the binaries in the same media (disk images, virtual "
+"appliances, etc) may lead to infringing."
 msgstr ""
-"Du er ved at bygge ZFS via DKMS, hvorved de ikke bliver bygget ind til en "
-"monolitisk binær. Vær opmærksom på at distribution af begge de binære filer "
-"på det samme medie (diskaftryk, virtuelle enheder etc.) kan føre til "
+"Du er ved at bygge OpenZFS via DKMS, hvorved de ikke bliver bygget ind til "
+"en monolitisk binær. Vær opmærksom på at distribution af begge de binære "
+"filer på det samme medie (diskaftryk, virtuelle enheder etc.) kan føre til "
 "en overtrædelse af licenserne."
-
diff -Nru zfs-linux-2.0.3/debian/po/de.po zfs-linux-2.0.3/debian/po/de.po
--- zfs-linux-2.0.3/debian/po/de.po	2021-01-08 14:43:30.000000000 +0800
+++ zfs-linux-2.0.3/debian/po/de.po	2021-03-31 19:46:36.000000000 +0800
@@ -1,13 +1,13 @@
 # Translation of zfs-linux debconf templates to German
-# Copyright (C) Helge Kreutzmann <debian@helgefjell.de>, 2013, 2017.
+# Copyright (C) Helge Kreutzmann <debian@helgefjell.de>, 2013, 2017, 2021.
 # This file is distributed under the same license as the zfs-linux package.
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: zfs-linux 0.6.5.9-2\n"
+"Project-Id-Version: zfs-linux 2.0.3-2\n"
 "Report-Msgid-Bugs-To: zfs-linux@packages.debian.org\n"
-"POT-Creation-Date: 2015-11-01 14:11+0800\n"
-"PO-Revision-Date: 2017-03-12 07:37+0100\n"
+"POT-Creation-Date: 2021-03-30 14:43+0800\n"
+"PO-Revision-Date: 2021-03-07 20:51+0100\n"
 "Last-Translator: Helge Kreutzmann <debian@helgefjell.de>\n"
 "Language-Team: de <debian-l10n-german@lists.debian.org>\n"
 "Language: de\n"
@@ -18,14 +18,14 @@
 #. Type: boolean
 #. Description
 #: ../zfs-dkms.templates:1001
-msgid "Abort building ZFS on a 32-bit kernel?"
-msgstr "Bau von ZFS auf einem 32-Bit-Kernel abbrechen?"
+msgid "Abort building OpenZFS on a 32-bit kernel?"
+msgstr "Bau von OpenZFS auf einem 32-Bit-Kernel abbrechen?"
 
 #. Type: boolean
 #. Description
 #: ../zfs-dkms.templates:1001
-msgid "You are attempting to build ZFS against a 32-bit running kernel."
-msgstr "Sie versuchen, ZFS mit einem laufenden 32-Bit-Kernel zu bauen."
+msgid "You are attempting to build OpenZFS against a 32-bit running kernel."
+msgstr "Sie versuchen, OpenZFS mit einem laufenden 32-Bit-Kernel zu bauen."
 
 #. Type: boolean
 #. Description
@@ -36,68 +36,115 @@
 "Although possible, building in a 32-bit environment is unsupported and "
 "likely to cause instability leading to possible data corruption. You are "
 "strongly advised to use a 64-bit kernel; if you do decide to proceed with "
-"using ZFS on this kernel then keep in mind that it is at your own risk."
+"using OpenZFS on this kernel then keep in mind that it is at your own risk."
 msgstr ""
 "Dies ist zwar möglich, allerdings wird der Bau in einer 32-Bit-Umgebung "
 "nicht unterstützt und wahrscheinlich Instabilitäten verursachen, die "
 "möglicherweise Daten beschädigen. Es wird Ihnen nachdrücklich empfohlen, "
 "einen 64-Bit-Kernel zu verwenden; falls Sie sich entscheiden, mit der "
-"Verwendung von ZFS unter diesem Kernel fortzufahren, denken Sie daran, dass "
-"dies auf eigenes Risiko passiert."
+"Verwendung von OpenZFS unter diesem Kernel fortzufahren, denken Sie daran, "
+"dass dies auf eigenes Risiko passiert."
 
 #. Type: boolean
 #. Description
 #: ../zfs-dkms.templates:2001
-msgid "Abort building ZFS on an unknown kernel?"
-msgstr "Bau von ZFS auf einem unbekannten Kernel abbrechen?"
+msgid "Abort building OpenZFS on an unknown kernel?"
+msgstr "Bau von OpenZFS auf einem unbekannten Kernel abbrechen?"
 
 #. Type: boolean
 #. Description
 #: ../zfs-dkms.templates:2001
 msgid ""
-"You are attempting to build ZFS against a running kernel that could not be "
-"identified as 32-bit or 64-bit. If you are not completely sure that the "
+"You are attempting to build OpenZFS against a running kernel that could not "
+"be identified as 32-bit or 64-bit. If you are not completely sure that the "
 "running kernel is a 64-bit one, you should probably stop the build."
 msgstr ""
-"Sie versuchen, ZFS mit einem Kernel zu bauen, der weder als 32-Bit noch als "
-"64-Bit identifiziert werden konnte. Falls Sie sich nicht absolut sicher "
-"sind, dass der laufende Kernel 64-bittig ist, sollten Sie eventuell den "
-"Bau abbrechen."
+"Sie versuchen, OpenZFS mit einem Kernel zu bauen, der weder als 32-Bit noch "
+"als 64-Bit identifiziert werden konnte. Falls Sie sich nicht absolut sicher "
+"sind, dass es sich beim laufende Kernel um einen 64-Bit-Kernel handelt, "
+"sollten Sie eventuell den Bau abbrechen."
 
 #. Type: note
 #. Description
 #: ../zfs-dkms.templates:3001
-msgid "Licenses of ZFS and Linux are incompatible"
-msgstr "Lizenzen von ZFS und Linux sind inkompatibel"
+msgid "Licenses of OpenZFS and Linux are incompatible"
+msgstr "Lizenzen von OpenZFS und Linux sind inkompatibel"
 
 #. Type: note
 #. Description
 #: ../zfs-dkms.templates:3001
 msgid ""
-"ZFS is licensed under the Common Development and Distribution License "
+"OpenZFS is licensed under the Common Development and Distribution License "
 "(CDDL), and the Linux kernel is licensed under the GNU General Public "
 "License Version 2 (GPL-2). While both are free open source licenses they are "
 "restrictive licenses. The combination of them causes problems because it "
 "prevents using pieces of code exclusively available under one license with "
 "pieces of code exclusively available under the other in the same binary."
 msgstr ""
-"ZFS ist unter der »Common Development and Distribution License (CDDL), der "
-"Kernel unter der GNU General Public License Version 2 (GPL-2) lizenziert. "
-"Obwohl beide freie Open-Source-Lizenzen sind, sind sie restriktiv. Die "
-"Kombination beider führt zu Problemen, da sie verhindern, das Programmcode, "
-"der exklusiv unter einer Lizenz steht, mit Code im gleichen Programm zusammen "
-"verwandt wird, der exklusiv unter der anderen Lizenz steht."
+"OpenZFS ist unter der »Common Development and Distribution License (CDDL), "
+"der Kernel unter der GNU General Public License Version 2 (GPL-2) "
+"lizenziert. Obwohl beide freie Open-Source-Lizenzen sind, sind sie "
+"restriktiv. Die Kombination beider führt zu Problemen, da sie verhindern, "
+"das Programmcode, der exklusiv unter einer Lizenz steht, mit Code im "
+"gleichen Programm zusammen verwandt wird, der exklusiv unter der anderen "
+"Lizenz steht."
 
 #. Type: note
 #. Description
 #: ../zfs-dkms.templates:3001
 msgid ""
-"You are going to build ZFS using DKMS in such a way that they are not going to "
-"be built into one monolithic binary. Please be aware that distributing both of "
-"the binaries in the same media (disk images, virtual appliances, etc) may "
-"lead to infringing."
+"You are going to build OpenZFS using DKMS in such a way that they are not "
+"going to be built into one monolithic binary. Please be aware that "
+"distributing both of the binaries in the same media (disk images, virtual "
+"appliances, etc) may lead to infringing."
 msgstr ""
-"Sie werden ZFS mittels DKMS derart bauen, dass sie nicht zusammen in ein "
+"Sie werden OpenZFS mittels DKMS derart bauen, dass sie nicht zusammen in ein "
 "monolithisches Programm gebaut werden. Bitte berücksichtigen Sie, dass der "
 "Vertrieb beider Programme auf dem gleichen Medium (Plattenabbild, virtuelles "
 "Gerät usw.) zu Urheberrechtsverletzungen führen kann."
+
+#~ msgid "Scrub OpenZFS pools periodically?"
+#~ msgstr "Periodisch „scrub“ bei OpenZFS-Pools durchführen?"
+
+#~ msgid ""
+#~ "Scrubbing storage pool data is a routine maintenance operation that check "
+#~ "all data against known checksums, and fix early problems like bit rots. "
+#~ "This operation is scheduled with low priority in the background, and "
+#~ "usually does not have big impact on performance when the pool is not "
+#~ "heavily utilized."
+#~ msgstr ""
+#~ "Die Durchführung von „scrub“ bei Speicherpool-Daten ist eine Routine-"
+#~ "Verwaltungsaktion, die alle Daten mit bekannten Prüfsummen vergleicht und "
+#~ "frühzeitig Probleme, wie die Degeneration von Speichermedien, erkennt. "
+#~ "Diese Aktion wird mit niedriger Priorität im Hintergrund eingeplant und "
+#~ "hat normalerweise keine große Auswirkung auf die Leistung des Systems, "
+#~ "wenn der Pool nicht intensiv verwandt wird."
+
+#~ msgid ""
+#~ "Would you like to scrub all pools periodically? By default scrub jobs are "
+#~ "scheduled on every first Sunday of month."
+#~ msgstr ""
+#~ "Möchten Sie, dass periodisch „scrub“ auf allen Pools ausgeführt wird? "
+#~ "Standardmäßig werden die Scrub-Aufträge an jedem ersten Sonntag im Monat "
+#~ "eingeplant."
+
+#~ msgid "TRIM SSD devices in OpenZFS pools periodically?"
+#~ msgstr "Periodisch TRIM bei SSD-Geräten in OpenZFS-Pools durchführen?"
+
+#~ msgid ""
+#~ "Some SSD devices require proper scheduling of TRIM commands to maintain "
+#~ "best performance. Would you like to TRIM SSD devices periodically?"
+#~ msgstr ""
+#~ "Bei einigen SSD-Geräten ist es notwendig, dass TRIM-Befehle geeignet "
+#~ "eingeplant werden, um die beste Leistung zu erhalten. Möchten Sie, dass "
+#~ "TRIM für SSD-Geräte periodisch durchgeführt wird?"
+
+#~ msgid ""
+#~ "TRIM jobs are scheduled on every first Sunday of month to NVMe devices in "
+#~ "pools by default. You can choose to enable TRIM for all SSD or disable it "
+#~ "completely. If no suitable SSD device is found, nothing will be done."
+#~ msgstr ""
+#~ "TRIM-Aufträge werden auf NVMe-Geräten in Pools standardmäßig an jedem "
+#~ "ersten Sonntag im Monat eingeplant. Sie können auswählen, ob TRIM für "
+#~ "alls SSD aktiviert wird oder es komplett deaktivieren. Falls kein "
+#~ "geeignetes SSD-Geräte gefunden wird, passiert nichts."
diff -Nru zfs-linux-2.0.3/debian/po/fr.po zfs-linux-2.0.3/debian/po/fr.po
--- zfs-linux-2.0.3/debian/po/fr.po	2021-02-12 16:30:01.000000000 +0800
+++ zfs-linux-2.0.3/debian/po/fr.po	2021-03-31 19:46:36.000000000 +0800
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: zfs-linux\n"
 "Report-Msgid-Bugs-To: zfs-linux@packages.debian.org\n"
-"POT-Creation-Date: 2015-11-01 14:11+0800\n"
+"POT-Creation-Date: 2021-03-30 14:43+0800\n"
 "PO-Revision-Date: 2019-08-02 14:56+0200\n"
 "Last-Translator: Julien Patriarca <leatherface@debian.org>\n"
 "Language-Team: FRENCH <debian-l10n-french@lists.debian.org>\n"
@@ -20,14 +20,14 @@
 #. Type: boolean
 #. Description
 #: ../zfs-dkms.templates:1001
-msgid "Abort building ZFS on a 32-bit kernel?"
-msgstr "Abandonner la compilation de ZFS sur un noyau 32 bits ?"
+msgid "Abort building OpenZFS on a 32-bit kernel?"
+msgstr "Abandonner la compilation de OpenZFS sur un noyau 32 bits ?"
 
 #. Type: boolean
 #. Description
 #: ../zfs-dkms.templates:1001
-msgid "You are attempting to build ZFS against a 32-bit running kernel."
-msgstr "Vous êtes en train d'essayer de compiler ZFS sur un noyau 32 bits."
+msgid "You are attempting to build OpenZFS against a 32-bit running kernel."
+msgstr "Vous êtes en train d'essayer de compiler OpenZFS sur un noyau 32 bits."
 
 #. Type: boolean
 #. Description
@@ -38,50 +38,50 @@
 "Although possible, building in a 32-bit environment is unsupported and "
 "likely to cause instability leading to possible data corruption. You are "
 "strongly advised to use a 64-bit kernel; if you do decide to proceed with "
-"using ZFS on this kernel then keep in mind that it is at your own risk."
+"using OpenZFS on this kernel then keep in mind that it is at your own risk."
 msgstr ""
 "Même si c'est en théorie possible, compiler au sein d'un environnement "
 "32 bits n'est pas géré et peut entraîner une instabilité du système pouvant "
 "aboutir à une corruption des données. Il vous est fortement recommandé "
-"d'utiliser un noyau 64 bits ; si vous décidez d'utiliser ZFS sur ce noyau, "
-"gardez à l'esprit que c'est à vos propres risques."
+"d'utiliser un noyau 64 bits ; si vous décidez d'utiliser OpenZFS sur ce "
+"noyau, gardez à l'esprit que c'est à vos propres risques."
 
 #. Type: boolean
 #. Description
 #: ../zfs-dkms.templates:2001
-msgid "Abort building ZFS on an unknown kernel?"
-msgstr "Abandonner la compilation de ZFS sur un noyau inconnu ?"
+msgid "Abort building OpenZFS on an unknown kernel?"
+msgstr "Abandonner la compilation de OpenZFS sur un noyau inconnu ?"
 
 #. Type: boolean
 #. Description
 #: ../zfs-dkms.templates:2001
 msgid ""
-"You are attempting to build ZFS against a running kernel that could not be "
-"identified as 32-bit or 64-bit. If you are not completely sure that the "
+"You are attempting to build OpenZFS against a running kernel that could not "
+"be identified as 32-bit or 64-bit. If you are not completely sure that the "
 "running kernel is a 64-bit one, you should probably stop the build."
 msgstr ""
-"Vous êtes en train d'essayer de compiler ZFS sur un noyau qui n'a pu être "
-"identifié comme 32 bits ou 64 bits. Si vous n'êtes pas certain que le noyau "
-"actuel est un 64 bits, vous devriez arrêter la compilation."
+"Vous êtes en train d'essayer de compiler OpenZFS sur un noyau qui n'a pu "
+"être identifié comme 32 bits ou 64 bits. Si vous n'êtes pas certain que le "
+"noyau actuel est un 64 bits, vous devriez arrêter la compilation."
 
 #. Type: note
 #. Description
 #: ../zfs-dkms.templates:3001
-msgid "Licenses of ZFS and Linux are incompatible"
-msgstr "Les licences de ZFS et de Linux ne sont pas compatibles"
+msgid "Licenses of OpenZFS and Linux are incompatible"
+msgstr "Les licences de OpenZFS et de Linux ne sont pas compatibles"
 
 #. Type: note
 #. Description
 #: ../zfs-dkms.templates:3001
 msgid ""
-"ZFS is licensed under the Common Development and Distribution License "
+"OpenZFS is licensed under the Common Development and Distribution License "
 "(CDDL), and the Linux kernel is licensed under the GNU General Public "
 "License Version 2 (GPL-2). While both are free open source licenses they are "
 "restrictive licenses. The combination of them causes problems because it "
 "prevents using pieces of code exclusively available under one license with "
 "pieces of code exclusively available under the other in the same binary."
 msgstr ""
-"ZFS dispose d'une licence « Common Development and Distribution "
+"OpenZFS dispose d'une licence « Common Development and Distribution "
 "License » (CDDL), et le noyau Linux d'une licence GNU « General Public "
 "License » Version 2 (GPL-2). Bien qu'elles soient toutes les deux des "
 "licences libres pour logiciels ouverts, elles restent restrictives. La "
@@ -93,13 +93,13 @@
 #. Description
 #: ../zfs-dkms.templates:3001
 msgid ""
-"You are going to build ZFS using DKMS in such a way that they are not going "
-"to be built into one monolithic binary. Please be aware that distributing "
-"both of the binaries in the same media (disk images, virtual appliances, "
-"etc) may lead to infringing."
+"You are going to build OpenZFS using DKMS in such a way that they are not "
+"going to be built into one monolithic binary. Please be aware that "
+"distributing both of the binaries in the same media (disk images, virtual "
+"appliances, etc) may lead to infringing."
 msgstr ""
-"Vous êtes sur le point de construire ZFS en utilisant DKMS d'une manière qui "
-"fera qu'ils ne seront pas intégrés dans un binaire unique. Veuillez prendre "
-"en considération que la distribution de ces deux binaires au sein d'un même "
-"média (images de disque, machines virtuelles, etc) peut mener à une "
-"infraction."
+"Vous êtes sur le point de construire OpenZFS en utilisant DKMS d'une manière "
+"qui fera qu'ils ne seront pas intégrés dans un binaire unique. Veuillez "
+"prendre en considération que la distribution de ces deux binaires au sein "
+"d'un même média (images de disque, machines virtuelles, etc) peut mener à "
+"une infraction."
diff -Nru zfs-linux-2.0.3/debian/po/gl.po zfs-linux-2.0.3/debian/po/gl.po
--- zfs-linux-2.0.3/debian/po/gl.po	1970-01-01 08:00:00.000000000 +0800
+++ zfs-linux-2.0.3/debian/po/gl.po	2021-03-31 19:46:36.000000000 +0800
@@ -0,0 +1,151 @@
+# Galician Translation of OpenZFS
+# Copyright (C) 2021
+# This file is distributed under the same license as the zfs-linux package.
+# Pablo <parodper@gmail.com>, 2021.
+# 
+msgid ""
+msgstr ""
+"Project-Id-Version: zfs-linux\n"
+"Report-Msgid-Bugs-To: zfs-linux@packages.debian.org\n"
+"POT-Creation-Date: 2021-03-30 14:43+0800\n"
+"PO-Revision-Date: 2021-03-04 21:21+0100\n"
+"Last-Translator: Pablo <parodper@gmail.com>\n"
+"Language-Team: Galician <debian-l10n-galician-request@lists.debian.org>\n"
+"Language: gl\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Poedit 2.2.1\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#. Type: boolean
+#. Description
+#: ../zfs-dkms.templates:1001
+msgid "Abort building OpenZFS on a 32-bit kernel?"
+msgstr "Abortar a compilación de OpenZFS nun núcleo de 32 bits?"
+
+#. Type: boolean
+#. Description
+#: ../zfs-dkms.templates:1001
+msgid "You are attempting to build OpenZFS against a 32-bit running kernel."
+msgstr "Estas intentando compilar OpenZFS cun núcleo de 32 bits en execución."
+
+#. Type: boolean
+#. Description
+#. Type: boolean
+#. Description
+#: ../zfs-dkms.templates:1001 ../zfs-dkms.templates:2001
+msgid ""
+"Although possible, building in a 32-bit environment is unsupported and "
+"likely to cause instability leading to possible data corruption. You are "
+"strongly advised to use a 64-bit kernel; if you do decide to proceed with "
+"using OpenZFS on this kernel then keep in mind that it is at your own risk."
+msgstr ""
+"Inda que é posíbel, non damos soporte técnico á compilación nun ambiente de "
+"32 bits; por que é probable que non sexa estable e se corrompan os datos. "
+"Aconsellámosche con énfase que uses un núcleo de 64 bits; se estas seguro "
+"que queres usar OpenZFS neste núcleo date conta de que non che imos poder "
+"axudar."
+
+#. Type: boolean
+#. Description
+#: ../zfs-dkms.templates:2001
+msgid "Abort building OpenZFS on an unknown kernel?"
+msgstr "Abortar a compilación de OpenZFS nun núcleo descoñecido?"
+
+#. Type: boolean
+#. Description
+#: ../zfs-dkms.templates:2001
+msgid ""
+"You are attempting to build OpenZFS against a running kernel that could not "
+"be identified as 32-bit or 64-bit. If you are not completely sure that the "
+"running kernel is a 64-bit one, you should probably stop the build."
+msgstr ""
+"Estas intentando compilar OpenZFS cun núcleo en execución ao que non lle "
+"puidemos descubrir se é de 32 ou 64 bits. Se non estás completamente seguro "
+"de que teu núcleo é de 64 bits, deberías parar a compilación."
+
+#. Type: note
+#. Description
+#: ../zfs-dkms.templates:3001
+msgid "Licenses of OpenZFS and Linux are incompatible"
+msgstr "As licenzas de OpenZFS e Linux son incompatíbles"
+
+#. Type: note
+#. Description
+#: ../zfs-dkms.templates:3001
+msgid ""
+"OpenZFS is licensed under the Common Development and Distribution License "
+"(CDDL), and the Linux kernel is licensed under the GNU General Public "
+"License Version 2 (GPL-2). While both are free open source licenses they are "
+"restrictive licenses. The combination of them causes problems because it "
+"prevents using pieces of code exclusively available under one license with "
+"pieces of code exclusively available under the other in the same binary."
+msgstr ""
+"A licenza de OpenZFS é a Licencia Común de Desenvolvemento e Distribución, "
+"Common Development and Distribution License en inglés (CDDL), e o núcleo "
+"Linux está baixo a Licenza Pública Xeral GNU versión 2 (GPL-2). Inda que as "
+"dúas son licenzas de código aberto son licenzas con restricións. Combinalas "
+"causa problemas por que non permiten usar anacos de código baixo só unha das "
+"licenza con outros anacos de código baixo a outra licenza no mesmo binario."
+
+#. Type: note
+#. Description
+#: ../zfs-dkms.templates:3001
+msgid ""
+"You are going to build OpenZFS using DKMS in such a way that they are not "
+"going to be built into one monolithic binary. Please be aware that "
+"distributing both of the binaries in the same media (disk images, virtual "
+"appliances, etc) may lead to infringing."
+msgstr ""
+"Estas a piques de compilar OpenZFS usando DKMS dunha forma coa cal non se "
+"van compilar nun mesmo binario monolítico. Por favor ten en conta que "
+"distribuír os dous binarios dende o mesmo dispositivo (imaxes de disco, "
+"electrodomésticos virtuais, etc) pode infrinxir algunha licenza."
+
+#~ msgid "Scrub OpenZFS pools periodically?"
+#~ msgstr "Limpar as piscinas (pools) de OpenZFS de forma periódica?"
+
+#~ msgid ""
+#~ "Scrubbing storage pool data is a routine maintenance operation that check "
+#~ "all data against known checksums, and fix early problems like bit rots. "
+#~ "This operation is scheduled with low priority in the background, and "
+#~ "usually does not have big impact on performance when the pool is not "
+#~ "heavily utilized."
+#~ msgstr ""
+#~ "Limpar os datos de gardado nas piscinas (pools) é un mantemento rutineiro "
+#~ "que comproba todos os datos coas sumas de confirmación coñecidas, e "
+#~ "arranxa problemas precoces como a corrupción de bits. Esta operación de "
+#~ "baixa prioridade está programada para traballar de fondo, e non soe ter "
+#~ "un gran impacto non sistema cando as piscinas non se usan moito."
+
+#~ msgid ""
+#~ "Would you like to scrub all pools periodically? By default scrub jobs are "
+#~ "scheduled on every first Sunday of month."
+#~ msgstr ""
+#~ "Gustaríache que se limpasen todas as piscinas de forma periódica? Por "
+#~ "defecto as tarefas de limpado están programadas para o primeiro domingo "
+#~ "do mes."
+
+#~ msgid "TRIM SSD devices in OpenZFS pools periodically?"
+#~ msgstr ""
+#~ "Queres recortar (TRIM) de forma periódica os dispositivos SSD nas "
+#~ "piscinas do OpenZFS?"
+
+#~ msgid ""
+#~ "Some SSD devices require proper scheduling of TRIM commands to maintain "
+#~ "best performance. Would you like to TRIM SSD devices periodically?"
+#~ msgstr ""
+#~ "Algúns dispositivos SSD requiren unha programación correcta dos comandos "
+#~ "de recorte (TRIM) para manter un rendemento óptimo. Gustaríache que se "
+#~ "recortasen de forma regular os dispositivos SSD?"
+
+#~ msgid ""
+#~ "TRIM jobs are scheduled on every first Sunday of month to NVMe devices in "
+#~ "pools by default. You can choose to enable TRIM for all SSD or disable it "
+#~ "completely. If no suitable SSD device is found, nothing will be done."
+#~ msgstr ""
+#~ "Por defecto os traballos de recorte nos dispositivos NVMe nas piscinas "
+#~ "están programados para o primeiro domingo do mes. Se queres podes activar "
+#~ "o recorte para todos os discos SSD ou desactivalo por completo. Se non se "
+#~ "atopan dispositivos SSD adecuados non se fará nada."
diff -Nru zfs-linux-2.0.3/debian/po/it.po zfs-linux-2.0.3/debian/po/it.po
--- zfs-linux-2.0.3/debian/po/it.po	2021-01-08 14:43:30.000000000 +0800
+++ zfs-linux-2.0.3/debian/po/it.po	2021-03-31 19:46:36.000000000 +0800
@@ -6,7 +6,7 @@
 msgstr ""
 "Project-Id-Version: zfs-linux\n"
 "Report-Msgid-Bugs-To: zfs-linux@packages.debian.org\n"
-"POT-Creation-Date: 2015-11-01 14:11+0800\n"
+"POT-Creation-Date: 2021-03-30 14:43+0800\n"
 "PO-Revision-Date: 2016-10-01 14:42+0200\n"
 "Last-Translator: Beatrice Torracca <beatricet@libero.it>\n"
 "Language-Team: Italian <debian-l10n-italian@lists.debian.org>\n"
@@ -20,14 +20,15 @@
 #. Type: boolean
 #. Description
 #: ../zfs-dkms.templates:1001
-msgid "Abort building ZFS on a 32-bit kernel?"
-msgstr "Annullare la compilazione di ZFS su un kernel a 32 bit?"
+msgid "Abort building OpenZFS on a 32-bit kernel?"
+msgstr "Annullare la compilazione di OpenZFS su un kernel a 32 bit?"
 
 #. Type: boolean
 #. Description
 #: ../zfs-dkms.templates:1001
-msgid "You are attempting to build ZFS against a 32-bit running kernel."
-msgstr "Si sta cercando di compilare ZFS con in esecuzione un kernel a 32 bit."
+msgid "You are attempting to build OpenZFS against a 32-bit running kernel."
+msgstr ""
+"Si sta cercando di compilare OpenZFS con in esecuzione un kernel a 32 bit."
 
 #. Type: boolean
 #. Description
@@ -38,54 +39,54 @@
 "Although possible, building in a 32-bit environment is unsupported and "
 "likely to cause instability leading to possible data corruption. You are "
 "strongly advised to use a 64-bit kernel; if you do decide to proceed with "
-"using ZFS on this kernel then keep in mind that it is at your own risk."
+"using OpenZFS on this kernel then keep in mind that it is at your own risk."
 msgstr ""
 "Sebbene ciò sia possibile, la compilazione in un ambiente a 32 bit è senza "
 "supporto e probabilmente causerà problemi di instabilità che possono portare "
 "alla corruzione di dati. È caldamente raccomandato l'uso di un kernel a 64 "
-"bit; se si decide comunque di usare ZFS con questo kernel lo si fa a proprio "
-"rischio e pericolo."
+"bit; se si decide comunque di usare OpenZFS con questo kernel lo si fa a "
+"proprio rischio e pericolo."
 
 #. Type: boolean
 #. Description
 #: ../zfs-dkms.templates:2001
-msgid "Abort building ZFS on an unknown kernel?"
-msgstr "Annullare la compilazione di ZFS su un kernel sconosciuto?"
+msgid "Abort building OpenZFS on an unknown kernel?"
+msgstr "Annullare la compilazione di OpenZFS su un kernel sconosciuto?"
 
 #. Type: boolean
 #. Description
 #: ../zfs-dkms.templates:2001
 msgid ""
-"You are attempting to build ZFS against a running kernel that could not be "
-"identified as 32-bit or 64-bit. If you are not completely sure that the "
+"You are attempting to build OpenZFS against a running kernel that could not "
+"be identified as 32-bit or 64-bit. If you are not completely sure that the "
 "running kernel is a 64-bit one, you should probably stop the build."
 msgstr ""
-"Si sta cercando di compilare ZFS con in esecuzione un kernel che non è stato "
-"possibile identificare come a 32 bit o 64 bit. Se non si è del tutto sicuri "
-"che il kernel in esecuzione sia a 64 bit, probabilmente è meglio "
+"Si sta cercando di compilare OpenZFS con in esecuzione un kernel che non è "
+"stato possibile identificare come a 32 bit o 64 bit. Se non si è del tutto "
+"sicuri che il kernel in esecuzione sia a 64 bit, probabilmente è meglio "
 "interrompere la compilazione."
 
 #. Type: note
 #. Description
 #: ../zfs-dkms.templates:3001
-msgid "Licenses of ZFS and Linux are incompatible"
-msgstr "Le licenze di ZFS e di Linux non sono compatibili"
+msgid "Licenses of OpenZFS and Linux are incompatible"
+msgstr "Le licenze di OpenZFS e di Linux non sono compatibili"
 
 #. Type: note
 #. Description
 #: ../zfs-dkms.templates:3001
 msgid ""
-"ZFS is licensed under the Common Development and Distribution License "
+"OpenZFS is licensed under the Common Development and Distribution License "
 "(CDDL), and the Linux kernel is licensed under the GNU General Public "
 "License Version 2 (GPL-2). While both are free open source licenses they are "
 "restrictive licenses. The combination of them causes problems because it "
 "prevents using pieces of code exclusively available under one license with "
 "pieces of code exclusively available under the other in the same binary."
 msgstr ""
-"ZFS è rilasciato sotto la licenza CDDL (Common Development and Distribution "
-"License) e il kernel Linux sotto la licenza GNU GPL-2 (General Public "
-"License Version 2). Sebbene siano entrambe licenze libere e open source, "
-"sono licenze restrittive. La loro combinazione crea problemi perché "
+"OpenZFS è rilasciato sotto la licenza CDDL (Common Development and "
+"Distribution License) e il kernel Linux sotto la licenza GNU GPL-2 (General "
+"Public License Version 2). Sebbene siano entrambe licenze libere e open "
+"source, sono licenze restrittive. La loro combinazione crea problemi perché "
 "impedisce nello stesso binario l'utilizzo di parti di codice disponibili "
 "esclusivamente con una licenza con le parti di codice disponibili "
 "esclusivamente con l'altra."
@@ -94,12 +95,12 @@
 #. Description
 #: ../zfs-dkms.templates:3001
 msgid ""
-"You are going to build ZFS using DKMS in such a way that they are not going to "
-"be built into one monolithic binary. Please be aware that distributing both of "
-"the binaries in the same media (disk images, virtual appliances, etc) may "
-"lead to infringing."
-msgstr ""
-"Si sta per compilare ZFS usando DKMS e in questo modo non verranno compilati "
-"in un singolo binario monolitico. Notare che la distribuzione di entrambi i "
-"binari nello stesso supporto (immagini di dischi, apparecchiature virtuali, "
-"ecc.) potrebbe portare a una violazione."
+"You are going to build OpenZFS using DKMS in such a way that they are not "
+"going to be built into one monolithic binary. Please be aware that "
+"distributing both of the binaries in the same media (disk images, virtual "
+"appliances, etc) may lead to infringing."
+msgstr ""
+"Si sta per compilare OpenZFS usando DKMS e in questo modo non verranno "
+"compilati in un singolo binario monolitico. Notare che la distribuzione di "
+"entrambi i binari nello stesso supporto (immagini di dischi, apparecchiature "
+"virtuali, ecc.) potrebbe portare a una violazione."
diff -Nru zfs-linux-2.0.3/debian/po/ja.po zfs-linux-2.0.3/debian/po/ja.po
--- zfs-linux-2.0.3/debian/po/ja.po	2021-01-08 14:43:30.000000000 +0800
+++ zfs-linux-2.0.3/debian/po/ja.po	2021-03-31 19:46:36.000000000 +0800
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: zfs-linux\n"
 "Report-Msgid-Bugs-To: zfs-linux@packages.debian.org\n"
-"POT-Creation-Date: 2015-11-01 14:11+0800\n"
+"POT-Creation-Date: 2021-03-30 14:43+0800\n"
 "PO-Revision-Date: 2013-07-04 23:09+0900\n"
 "Last-Translator: victory <victory.deb@gmail.com>\n"
 "Language-Team: Japanese <debian-japanese@lists.debian.org>\n"
@@ -19,15 +19,15 @@
 #. Type: boolean
 #. Description
 #: ../zfs-dkms.templates:1001
-msgid "Abort building ZFS on a 32-bit kernel?"
-msgstr "32 ビットのカーネルでの ZFS のビルドを中止しますか?"
+msgid "Abort building OpenZFS on a 32-bit kernel?"
+msgstr "32 ビットのカーネルでの OpenZFS のビルドを中止しますか?"
 
 #. Type: boolean
 #. Description
 #: ../zfs-dkms.templates:1001
-msgid "You are attempting to build ZFS against a 32-bit running kernel."
+msgid "You are attempting to build OpenZFS against a 32-bit running kernel."
 msgstr ""
-"ZFS を 32 ビットで動作しているカーネルに対してビルドしようとしています。"
+"OpenZFS を 32 ビットで動作しているカーネルに対してビルドしようとしています。"
 
 #. Type: boolean
 #. Description
@@ -38,42 +38,42 @@
 "Although possible, building in a 32-bit environment is unsupported and "
 "likely to cause instability leading to possible data corruption. You are "
 "strongly advised to use a 64-bit kernel; if you do decide to proceed with "
-"using ZFS on this kernel then keep in mind that it is at your own risk."
+"using OpenZFS on this kernel then keep in mind that it is at your own risk."
 msgstr ""
 "32 ビット環境でのビルドは可能ではあるもののサポート外で、安定性の問題を生じる"
 "可能性が高く、データの破損につながるおそれがあります。64 ビットカーネルの利用"
-"を強く勧めます。このカーネルでの ZFS の利用続行は自己責任であることに留意して"
-"ください。"
+"を強く勧めます。このカーネルでの OpenZFS の利用続行は自己責任であることに留意"
+"してください。"
 
 #. Type: boolean
 #. Description
 #: ../zfs-dkms.templates:2001
-msgid "Abort building ZFS on an unknown kernel?"
-msgstr "未知のカーネルでの ZFS のビルドを中止しますか?"
+msgid "Abort building OpenZFS on an unknown kernel?"
+msgstr "未知のカーネルでの OpenZFS のビルドを中止しますか?"
 
 #. Type: boolean
 #. Description
 #: ../zfs-dkms.templates:2001
 msgid ""
-"You are attempting to build ZFS against a running kernel that could not be "
-"identified as 32-bit or 64-bit. If you are not completely sure that the "
+"You are attempting to build OpenZFS against a running kernel that could not "
+"be identified as 32-bit or 64-bit. If you are not completely sure that the "
 "running kernel is a 64-bit one, you should probably stop the build."
 msgstr ""
 "32 ビットで動作しているのか 64 ビットで動作しているのか特定できないカーネルに"
-"対して ZFS をビルドしようとしています。このカーネルが 64 ビットで動作している"
-"ことに確信が持てない場合は、恐らくビルドを中止すべきです。"
+"対して OpenZFS をビルドしようとしています。このカーネルが 64 ビットで動作して"
+"いることに確信が持てない場合は、恐らくビルドを中止すべきです。"
 
 #. Type: note
 #. Description
 #: ../zfs-dkms.templates:3001
-msgid "Licenses of ZFS and Linux are incompatible"
+msgid "Licenses of OpenZFS and Linux are incompatible"
 msgstr ""
 
 #. Type: note
 #. Description
 #: ../zfs-dkms.templates:3001
 msgid ""
-"ZFS is licensed under the Common Development and Distribution License "
+"OpenZFS is licensed under the Common Development and Distribution License "
 "(CDDL), and the Linux kernel is licensed under the GNU General Public "
 "License Version 2 (GPL-2). While both are free open source licenses they are "
 "restrictive licenses. The combination of them causes problems because it "
@@ -85,8 +85,8 @@
 #. Description
 #: ../zfs-dkms.templates:3001
 msgid ""
-"You are going to build ZFS using DKMS in such a way that they are not going to "
-"be built into one monolithic binary. Please be aware that distributing both of "
-"the binaries in the same media (disk images, virtual appliances, etc) may "
-"lead to infringing."
+"You are going to build OpenZFS using DKMS in such a way that they are not "
+"going to be built into one monolithic binary. Please be aware that "
+"distributing both of the binaries in the same media (disk images, virtual "
+"appliances, etc) may lead to infringing."
 msgstr ""
diff -Nru zfs-linux-2.0.3/debian/po/nb.po zfs-linux-2.0.3/debian/po/nb.po
--- zfs-linux-2.0.3/debian/po/nb.po	2021-01-08 14:43:30.000000000 +0800
+++ zfs-linux-2.0.3/debian/po/nb.po	2021-03-31 19:46:36.000000000 +0800
@@ -6,7 +6,7 @@
 msgstr ""
 "Project-Id-Version: zfs-linux\n"
 "Report-Msgid-Bugs-To: zfs-linux@packages.debian.org\n"
-"POT-Creation-Date: 2015-11-01 14:11+0800\n"
+"POT-Creation-Date: 2021-03-30 14:43+0800\n"
 "PO-Revision-Date: 2016-06-08 14:23+0200\n"
 "Last-Translator: Petter Reinholdtsen <pere@hungry.com>\n"
 "Language-Team: Norwegian Bokmål <i18n-no@lister.ping.uio.no>\n"
@@ -20,14 +20,14 @@
 #. Type: boolean
 #. Description
 #: ../zfs-dkms.templates:1001
-msgid "Abort building ZFS on a 32-bit kernel?"
-msgstr "Avbryt bygging av ZFS på 32-bits kjerne?"
+msgid "Abort building OpenZFS on a 32-bit kernel?"
+msgstr "Avbryt bygging av OpenZFS på 32-bits kjerne?"
 
 #. Type: boolean
 #. Description
 #: ../zfs-dkms.templates:1001
-msgid "You are attempting to build ZFS against a 32-bit running kernel."
-msgstr "Du forsøker å bygge ZFS mot en kjørende 32-bits kjerne."
+msgid "You are attempting to build OpenZFS against a 32-bit running kernel."
+msgstr "Du forsøker å bygge OpenZFS mot en kjørende 32-bits kjerne."
 
 #. Type: boolean
 #. Description
@@ -38,71 +38,67 @@
 "Although possible, building in a 32-bit environment is unsupported and "
 "likely to cause instability leading to possible data corruption. You are "
 "strongly advised to use a 64-bit kernel; if you do decide to proceed with "
-"using ZFS on this kernel then keep in mind that it is at your own risk."
+"using OpenZFS on this kernel then keep in mind that it is at your own risk."
 msgstr ""
 "Selv om det er mulig, så er det ikke støttet å bygge i et 32-bits miljø, og "
-"det vil antagelig forårsake ustabiliteter som kan føre til korrupte data. "
-"Du anbefales på det sterkeste å bruke en 64-bits kjerne.  Hvis du "
-"bestemmer deg for å fortsette med å bruke ZFS med denne kjernen, ha "
-"i bakhodet at det skjer på egen risiko."
+"det vil antagelig forårsake ustabiliteter som kan føre til korrupte data. Du "
+"anbefales på det sterkeste å bruke en 64-bits kjerne.  Hvis du bestemmer deg "
+"for å fortsette med å bruke OpenZFS med denne kjernen, ha i bakhodet at det "
+"skjer på egen risiko."
 
 #. Type: boolean
 #. Description
 #: ../zfs-dkms.templates:2001
-msgid "Abort building ZFS on an unknown kernel?"
-msgstr "Avbryt bygging av ZFS på ukjent kjerne?"
+msgid "Abort building OpenZFS on an unknown kernel?"
+msgstr "Avbryt bygging av OpenZFS på ukjent kjerne?"
 
 #. Type: boolean
 #. Description
 #: ../zfs-dkms.templates:2001
 msgid ""
-"You are attempting to build ZFS against a running kernel that could not be "
-"identified as 32-bit or 64-bit. If you are not completely sure that the "
+"You are attempting to build OpenZFS against a running kernel that could not "
+"be identified as 32-bit or 64-bit. If you are not completely sure that the "
 "running kernel is a 64-bit one, you should probably stop the build."
 msgstr ""
-"Du forsøker å bygge ZFS mot en kjørende kjerne som ikke kunne identifiseres "
-"som enten 32-bits eller 64-bits.  Hvis du ikke er helt sikker på at den "
-"kjørende "
-"kjernen er 64-bits, så bør du antagelig stoppe byggingen."
+"Du forsøker å bygge OpenZFS mot en kjørende kjerne som ikke kunne "
+"identifiseres som enten 32-bits eller 64-bits.  Hvis du ikke er helt sikker "
+"på at den kjørende kjernen er 64-bits, så bør du antagelig stoppe byggingen."
 
 #. Type: note
 #. Description
 #: ../zfs-dkms.templates:3001
-msgid "Licenses of ZFS and Linux are incompatible"
-msgstr "Lisensene for ZFS og Linux er ikke kompatible"
+msgid "Licenses of OpenZFS and Linux are incompatible"
+msgstr "Lisensene for OpenZFS og Linux er ikke kompatible"
 
 #. Type: note
 #. Description
 #: ../zfs-dkms.templates:3001
 msgid ""
-"ZFS is licensed under the Common Development and Distribution License "
+"OpenZFS is licensed under the Common Development and Distribution License "
 "(CDDL), and the Linux kernel is licensed under the GNU General Public "
 "License Version 2 (GPL-2). While both are free open source licenses they are "
 "restrictive licenses. The combination of them causes problems because it "
 "prevents using pieces of code exclusively available under one license with "
 "pieces of code exclusively available under the other in the same binary."
 msgstr ""
-"ZFS er lisensiert i henhold til Common Development and Distribution License "
-"(CDDL), mens Linux-kjernen er lisensiert i henhold til GNU General Public "
-"License Version 2 (GPL-2). Selv om begge er fri programvarelisenser så er de "
-"restriktive lisenser.  Kombinasjonen av dem gir problemer da det hindrer at "
-"en "
-"bruker deler av kode som er eksklusivt tilgjengelig i henhold til en lisens "
-"med deler "
-"av kode som er eksklusivt tilgjengelig i henhold til den andre, i den samme "
-"binæren."
+"OpenZFS er lisensiert i henhold til Common Development and Distribution "
+"License (CDDL), mens Linux-kjernen er lisensiert i henhold til GNU General "
+"Public License Version 2 (GPL-2). Selv om begge er fri programvarelisenser "
+"så er de restriktive lisenser.  Kombinasjonen av dem gir problemer da det "
+"hindrer at en bruker deler av kode som er eksklusivt tilgjengelig i henhold "
+"til en lisens med deler av kode som er eksklusivt tilgjengelig i henhold til "
+"den andre, i den samme binæren."
 
 #. Type: note
 #. Description
 #: ../zfs-dkms.templates:3001
 msgid ""
-"You are going to build ZFS using DKMS in such a way that they are not going to "
-"be built into one monolithic binary. Please be aware that distributing both of "
-"the binaries in the same media (disk images, virtual appliances, etc) may "
-"lead to infringing."
+"You are going to build OpenZFS using DKMS in such a way that they are not "
+"going to be built into one monolithic binary. Please be aware that "
+"distributing both of the binaries in the same media (disk images, virtual "
+"appliances, etc) may lead to infringing."
 msgstr ""
-"Du er igang med å bygge ZFS ved hjelp av DKMS slik at de ikke kommer til å "
-"bli bygget inn i en monolitisk binær.  Vær oppmerksom på at distribusjon "
+"Du er igang med å bygge OpenZFS ved hjelp av DKMS slik at de ikke kommer til "
+"å bli bygget inn i en monolitisk binær.  Vær oppmerksom på at distribusjon "
 "av begge binærene på samme media (diskavtrykk, virtuelle enheter etc) kan "
 "være i strid med opphavsretten."
-
diff -Nru zfs-linux-2.0.3/debian/po/nl.po zfs-linux-2.0.3/debian/po/nl.po
--- zfs-linux-2.0.3/debian/po/nl.po	2021-01-08 14:43:30.000000000 +0800
+++ zfs-linux-2.0.3/debian/po/nl.po	2021-03-31 19:46:36.000000000 +0800
@@ -2,14 +2,14 @@
 # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
 # This file is distributed under the same license as the zfs-linux package.
 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
-# Frans Spiesschaert <Frans.Spiesschaert@yucom.be>, 2016.
+# Frans Spiesschaert <Frans.Spiesschaert@yucom.be>, 2016, 2021
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: zfs-linux\n"
+"Project-Id-Version: zfs-linux_2.0.3-2\n"
 "Report-Msgid-Bugs-To: zfs-linux@packages.debian.org\n"
-"POT-Creation-Date: 2015-11-01 14:11+0800\n"
-"PO-Revision-Date: 2016-05-30 17:08+0200\n"
+"POT-Creation-Date: 2021-03-30 14:43+0800\n"
+"PO-Revision-Date: 2021-03-08 19:52+0100\n"
 "Last-Translator: Frans Spiesschaert <Frans.Spiesschaert@yucom.be>\n"
 "Language-Team: Debian Dutch l10n Team <debian-l10n-dutch@lists.debian.org>\n"
 "Language: nl\n"
@@ -17,19 +17,19 @@
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-Generator: Gtranslator 2.91.6\n"
+"X-Generator: Poedit 2.2.1\n"
 
 #. Type: boolean
 #. Description
 #: ../zfs-dkms.templates:1001
-msgid "Abort building ZFS on a 32-bit kernel?"
-msgstr "Het bouwen van ZFS met een 36-bits kernel afbreken?"
+msgid "Abort building OpenZFS on a 32-bit kernel?"
+msgstr "Het bouwen van OpenZFS met een 36-bits kernel afbreken?"
 
 #. Type: boolean
 #. Description
 #: ../zfs-dkms.templates:1001
-msgid "You are attempting to build ZFS against a 32-bit running kernel."
-msgstr "U probeert ZFS te bouwen terwijl er een 32-bits kernel actief is."
+msgid "You are attempting to build OpenZFS against a 32-bit running kernel."
+msgstr "U probeert OpenZFS te bouwen terwijl er een 32-bits kernel actief is."
 
 #. Type: boolean
 #. Description
@@ -40,30 +40,30 @@
 "Although possible, building in a 32-bit environment is unsupported and "
 "likely to cause instability leading to possible data corruption. You are "
 "strongly advised to use a 64-bit kernel; if you do decide to proceed with "
-"using ZFS on this kernel then keep in mind that it is at your own risk."
+"using OpenZFS on this kernel then keep in mind that it is at your own risk."
 msgstr ""
 "Hoewel dit niet onmogelijk is, wordt zoiets in een 32-bits omgeving niet "
 "ondersteund en is het waarschijnlijk dat dit instabiliteit veroorzaakt met "
 "mogelijk gegevensverlies tot gevolg. U wordt stellig aangeraden een 64-bits "
 "kernel te gebruiken. Indien u toch beslist om voort te gaan met het "
-"gebruiken van ZFS in combinatie met deze kernel, besef dan goed dat u dit op "
-"eigen risico doet."
+"gebruiken van OpenZFS in combinatie met deze kernel, besef dan goed dat u "
+"dit op eigen risico doet."
 
 #. Type: boolean
 #. Description
 #: ../zfs-dkms.templates:2001
-msgid "Abort building ZFS on an unknown kernel?"
-msgstr "Het bouwen van ZFS met een onbekende kernel afbreken?"
+msgid "Abort building OpenZFS on an unknown kernel?"
+msgstr "Het bouwen van OpenZFS met een onbekende kernel afbreken?"
 
 #. Type: boolean
 #. Description
 #: ../zfs-dkms.templates:2001
 msgid ""
-"You are attempting to build ZFS against a running kernel that could not be "
-"identified as 32-bit or 64-bit. If you are not completely sure that the "
+"You are attempting to build OpenZFS against a running kernel that could not "
+"be identified as 32-bit or 64-bit. If you are not completely sure that the "
 "running kernel is a 64-bit one, you should probably stop the build."
 msgstr ""
-"U probeert ZFS te bouwen terwijl er een kernel actief is waarvan niet "
+"U probeert OpenZFS te bouwen terwijl er een kernel actief is waarvan niet "
 "uitgemaakt kan worden of gaat om een 32-bits of een 64-bits exemplaar. "
 "Indien u niet volledig zeker bent dat de actieve kernel een 64-bits "
 "exemplaar is, doet u er best aan te stoppen."
@@ -71,22 +71,22 @@
 #. Type: note
 #. Description
 #: ../zfs-dkms.templates:3001
-msgid "Licenses of ZFS and Linux are incompatible"
-msgstr "De licenties van ZFS en Linux zijn niet compatibel"
+msgid "Licenses of OpenZFS and Linux are incompatible"
+msgstr "De licenties van OpenZFS en Linux zijn niet compatibel"
 
 #. Type: note
 #. Description
 #: ../zfs-dkms.templates:3001
 msgid ""
-"ZFS is licensed under the Common Development and Distribution License "
+"OpenZFS is licensed under the Common Development and Distribution License "
 "(CDDL), and the Linux kernel is licensed under the GNU General Public "
 "License Version 2 (GPL-2). While both are free open source licenses they are "
 "restrictive licenses. The combination of them causes problems because it "
 "prevents using pieces of code exclusively available under one license with "
 "pieces of code exclusively available under the other in the same binary."
 msgstr ""
-"ZFS gebruikt als licentie de Common Development and Distribution License "
-"(CDDL) en de Linux kernel gebruikt de GNU General Public License Version 2 "
+"OpenZFS gebruikt als licentie de Common Development and Distribution License "
+"(CDDL) en de Linux kernel gebruikt de GNU General Public License Versie 2 "
 "(GPL-2) als licentie. Hoewel beide vrije open source-licenties zijn, zijn ze "
 "allebei restrictief. De combinatie van beide geeft problemen, omdat belet "
 "wordt dat codefragmenten die exclusief onder de ene licentie beschikbaar "
@@ -97,13 +97,58 @@
 #. Description
 #: ../zfs-dkms.templates:3001
 msgid ""
-"You are going to build ZFS using DKMS in such a way that they are not going to "
-"be built into one monolithic binary. Please be aware that distributing both of "
-"the binaries in the same media (disk images, virtual appliances, etc) may "
-"lead to infringing."
+"You are going to build OpenZFS using DKMS in such a way that they are not "
+"going to be built into one monolithic binary. Please be aware that "
+"distributing both of the binaries in the same media (disk images, virtual "
+"appliances, etc) may lead to infringing."
 msgstr ""
-"U gaat ZFS bouwen met behulp van DKMS en op die manier zullen ze niet als "
-"één monolithisch binair bestand gebouwd worden. U dient er zich bewust van "
-"te zijn dat het verdelen van de beide binaire bestanden binnenin hetzelfde "
-"medium (een schijf-image, een virtuele machine, enz.) aanleiding kan geven "
-"tot een inbreuk."
+"U gaat OpenZFS bouwen met behulp van DKMS en op die manier zullen ze niet "
+"als één monolithisch binair bestand gebouwd worden. U dient er zich bewust "
+"van te zijn dat het verdelen van de beide binaire bestanden binnenin "
+"hetzelfde medium (een schijf-image, een virtuele machine, enz.) aanleiding "
+"kan geven tot een inbreuk."
+
+#~ msgid "Scrub OpenZFS pools periodically?"
+#~ msgstr "De pools van OpenZFS periodiek opschonen?"
+
+#~ msgid ""
+#~ "Scrubbing storage pool data is a routine maintenance operation that check "
+#~ "all data against known checksums, and fix early problems like bit rots. "
+#~ "This operation is scheduled with low priority in the background, and "
+#~ "usually does not have big impact on performance when the pool is not "
+#~ "heavily utilized."
+#~ msgstr ""
+#~ "Het opschonen van gegevens in een opslagpool is een routine-"
+#~ "onderhoudsoperatie die alle gegevens controleert aan de hand van bekende "
+#~ "controlegetallen, en vroege problemen zoals bitrot verhelpt. Deze "
+#~ "bewerking wordt met lage prioriteit op de achtergrond gepland, en heeft "
+#~ "gewoonlijk geen grote invloed op de prestatie als de pool niet zwaar "
+#~ "gebruikt wordt."
+
+#~ msgid ""
+#~ "Would you like to scrub all pools periodically? By default scrub jobs are "
+#~ "scheduled on every first Sunday of month."
+#~ msgstr ""
+#~ "Wilt u alle pools periodiek opschonen? Standaard worden opschoontaken "
+#~ "ingepland op elke eerste zondag van de maand."
+
+#~ msgid "TRIM SSD devices in OpenZFS pools periodically?"
+#~ msgstr "SSD-apparaten in OpenZFS-pools periodiek TRIM-men?"
+
+#~ msgid ""
+#~ "Some SSD devices require proper scheduling of TRIM commands to maintain "
+#~ "best performance. Would you like to TRIM SSD devices periodically?"
+#~ msgstr ""
+#~ "Sommige SSD-apparaten vereisen een juiste planning van TRIM-opdrachten om "
+#~ "de beste prestaties te blijven behouden. Wilt u SSD-apparaten periodiek "
+#~ "TRIM-men?"
+
+#~ msgid ""
+#~ "TRIM jobs are scheduled on every first Sunday of month to NVMe devices in "
+#~ "pools by default. You can choose to enable TRIM for all SSD or disable it "
+#~ "completely. If no suitable SSD device is found, nothing will be done."
+#~ msgstr ""
+#~ "TRIM-taken worden standaard op elke eerste zondag van de maand gepland "
+#~ "voor NVMe-apparaten in pools. U kunt ervoor kiezen om TRIM voor alle SSD-"
+#~ "apparaten in te schakelen of volledig uit te schakelen. Als er geen "
+#~ "geschikt SSD-apparaat wordt gevonden, wordt er niets gedaan."
diff -Nru zfs-linux-2.0.3/debian/po/pl.po zfs-linux-2.0.3/debian/po/pl.po
--- zfs-linux-2.0.3/debian/po/pl.po	2021-01-08 14:43:30.000000000 +0800
+++ zfs-linux-2.0.3/debian/po/pl.po	2021-03-31 19:46:36.000000000 +0800
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: zfs-linux\n"
 "Report-Msgid-Bugs-To: zfs-linux@packages.debian.org\n"
-"POT-Creation-Date: 2015-11-01 14:11+0800\n"
+"POT-Creation-Date: 2021-03-30 14:43+0800\n"
 "PO-Revision-Date: 2013-07-13 19:48+0200\n"
 "Last-Translator: Michał Kułach <michal.kulach@gmail.com>\n"
 "Language-Team: Polish <debian-l10n-polish@lists.debian.org>\n"
@@ -22,14 +22,14 @@
 #. Type: boolean
 #. Description
 #: ../zfs-dkms.templates:1001
-msgid "Abort building ZFS on a 32-bit kernel?"
-msgstr "Przerwać budowanie ZFS na 32-bitowym jądrze?"
+msgid "Abort building OpenZFS on a 32-bit kernel?"
+msgstr "Przerwać budowanie OpenZFS na 32-bitowym jądrze?"
 
 #. Type: boolean
 #. Description
 #: ../zfs-dkms.templates:1001
-msgid "You are attempting to build ZFS against a 32-bit running kernel."
-msgstr "Ma miejsce próba zbudowania ZFS na działającym, 32-bitowym jądrze."
+msgid "You are attempting to build OpenZFS against a 32-bit running kernel."
+msgstr "Ma miejsce próba zbudowania OpenZFS na działającym, 32-bitowym jądrze."
 
 #. Type: boolean
 #. Description
@@ -40,42 +40,42 @@
 "Although possible, building in a 32-bit environment is unsupported and "
 "likely to cause instability leading to possible data corruption. You are "
 "strongly advised to use a 64-bit kernel; if you do decide to proceed with "
-"using ZFS on this kernel then keep in mind that it is at your own risk."
+"using OpenZFS on this kernel then keep in mind that it is at your own risk."
 msgstr ""
 "Choć jest to możliwe, to jednak budowanie w 32-bitowym środowisku jest "
 "nieobsługiwane i może powodować niestabilność prowadzącą w konsekwencji do "
-"utraty danych. Zaleca się użyć jądra 64-bitowego. Kontynuując używanie ZFS "
-"na tym jądrze robi się to na własną odpowiedzialność."
+"utraty danych. Zaleca się użyć jądra 64-bitowego. Kontynuując używanie "
+"OpenZFS na tym jądrze robi się to na własną odpowiedzialność."
 
 #. Type: boolean
 #. Description
 #: ../zfs-dkms.templates:2001
-msgid "Abort building ZFS on an unknown kernel?"
-msgstr "Przerwać budowanie ZFS na nieznanym jądrze?"
+msgid "Abort building OpenZFS on an unknown kernel?"
+msgstr "Przerwać budowanie OpenZFS na nieznanym jądrze?"
 
 #. Type: boolean
 #. Description
 #: ../zfs-dkms.templates:2001
 msgid ""
-"You are attempting to build ZFS against a running kernel that could not be "
-"identified as 32-bit or 64-bit. If you are not completely sure that the "
+"You are attempting to build OpenZFS against a running kernel that could not "
+"be identified as 32-bit or 64-bit. If you are not completely sure that the "
 "running kernel is a 64-bit one, you should probably stop the build."
 msgstr ""
-"Ma miejsce próba zbudowania ZFS na działającym jądrze którego nie można "
+"Ma miejsce próba zbudowania OpenZFS na działającym jądrze którego nie można "
 "zidentyfikować jako 32-bitowe lub 64-bitowe. Jeśli nie jest się całkowicie "
 "pewnym że jest to jądro 64-bitowe powinno się przerwać tę instalację."
 
 #. Type: note
 #. Description
 #: ../zfs-dkms.templates:3001
-msgid "Licenses of ZFS and Linux are incompatible"
+msgid "Licenses of OpenZFS and Linux are incompatible"
 msgstr ""
 
 #. Type: note
 #. Description
 #: ../zfs-dkms.templates:3001
 msgid ""
-"ZFS is licensed under the Common Development and Distribution License "
+"OpenZFS is licensed under the Common Development and Distribution License "
 "(CDDL), and the Linux kernel is licensed under the GNU General Public "
 "License Version 2 (GPL-2). While both are free open source licenses they are "
 "restrictive licenses. The combination of them causes problems because it "
@@ -87,8 +87,8 @@
 #. Description
 #: ../zfs-dkms.templates:3001
 msgid ""
-"You are going to build ZFS using DKMS in such a way that they are not going to "
-"be built into one monolithic binary. Please be aware that distributing both of "
-"the binaries in the same media (disk images, virtual appliances, etc) may "
-"lead to infringing."
+"You are going to build OpenZFS using DKMS in such a way that they are not "
+"going to be built into one monolithic binary. Please be aware that "
+"distributing both of the binaries in the same media (disk images, virtual "
+"appliances, etc) may lead to infringing."
 msgstr ""
diff -Nru zfs-linux-2.0.3/debian/po/pt.po zfs-linux-2.0.3/debian/po/pt.po
--- zfs-linux-2.0.3/debian/po/pt.po	2021-01-08 14:43:30.000000000 +0800
+++ zfs-linux-2.0.3/debian/po/pt.po	2021-03-31 19:46:36.000000000 +0800
@@ -3,13 +3,14 @@
 # This file is distributed under the same license as the zfs-linux package.
 # Miguel FIgueiredo <elmig@debianpt.org>, 2013.
 # Rui Branco <ruipb@debianpt.org>, 2017.
+# Miguel Figueiredo <elmig@debianpt.org>, 2021.
 #
 msgid ""
 msgstr ""
 "Project-Id-Version: zfs-linux\n"
 "Report-Msgid-Bugs-To: zfs-linux@packages.debian.org\n"
-"POT-Creation-Date: 2015-11-01 14:11+0800\n"
-"PO-Revision-Date: 2017-08-16 13:40+0100\n"
+"POT-Creation-Date: 2021-03-30 14:43+0800\n"
+"PO-Revision-Date: 2021-03-07 12:49+0000\n"
 "Last-Translator: Rui Branco <ruipb@debianpt.org>\n"
 "Language-Team: Portuguese <traduz@debianpt.org>\n"
 "Language: Portuguese\n"
@@ -22,14 +23,14 @@
 #. Type: boolean
 #. Description
 #: ../zfs-dkms.templates:1001
-msgid "Abort building ZFS on a 32-bit kernel?"
-msgstr "Abortar a compilação de ZFS num kernel 32-bit?"
+msgid "Abort building OpenZFS on a 32-bit kernel?"
+msgstr "Abortar a compilação de OpenZFS num kernel 32-bit?"
 
 #. Type: boolean
 #. Description
 #: ../zfs-dkms.templates:1001
-msgid "You are attempting to build ZFS against a 32-bit running kernel."
-msgstr "Está a tentar compilar ZFS contra um kernel 32-bit em execução."
+msgid "You are attempting to build OpenZFS against a 32-bit running kernel."
+msgstr "Está a tentar compilar OpenZFS contra um kernel 32-bit em execução."
 
 #. Type: boolean
 #. Description
@@ -40,28 +41,28 @@
 "Although possible, building in a 32-bit environment is unsupported and "
 "likely to cause instability leading to possible data corruption. You are "
 "strongly advised to use a 64-bit kernel; if you do decide to proceed with "
-"using ZFS on this kernel then keep in mind that it is at your own risk."
+"using OpenZFS on this kernel then keep in mind that it is at your own risk."
 msgstr ""
 "Embora possível, compilar num ambiente 32-bit não é suportado e "
 "possivelmente pode levar a instabilidade e corrupção de dados. É fortemente "
-"aconselhado a utilizar um kernel 64-bit; se decidir utilizar ZFS com este "
-"kernel lembre-se que está por sua conta e risco."
+"aconselhado a utilizar um kernel 64-bit; se decidir utilizar OpenZFS com "
+"este kernel lembre-se que está por sua conta e risco."
 
 #. Type: boolean
 #. Description
 #: ../zfs-dkms.templates:2001
-msgid "Abort building ZFS on an unknown kernel?"
-msgstr "Abortar a compilação de ZFS num kernel desconhecido?"
+msgid "Abort building OpenZFS on an unknown kernel?"
+msgstr "Abortar a compilação de OpenZFS num kernel desconhecido?"
 
 #. Type: boolean
 #. Description
 #: ../zfs-dkms.templates:2001
 msgid ""
-"You are attempting to build ZFS against a running kernel that could not be "
-"identified as 32-bit or 64-bit. If you are not completely sure that the "
+"You are attempting to build OpenZFS against a running kernel that could not "
+"be identified as 32-bit or 64-bit. If you are not completely sure that the "
 "running kernel is a 64-bit one, you should probably stop the build."
 msgstr ""
-"Está a tentar compilar ZFS contra um kernel em execução que não pode ser "
+"Está a tentar compilar OpenZFS contra um kernel em execução que não pode ser "
 "identificado como sendo de 32-bit ou de 64-bit. Se não tiver a certeza de "
 "que o kernel em execução seja de 64-bit, provavelmente deverá parar a "
 "compilação."
@@ -69,38 +70,83 @@
 #. Type: note
 #. Description
 #: ../zfs-dkms.templates:3001
-msgid "Licenses of ZFS and Linux are incompatible"
-msgstr "As licenças do ZFS e do Linux são incompatíveis"
+msgid "Licenses of OpenZFS and Linux are incompatible"
+msgstr "As licenças do OpenZFS e do Linux são incompatíveis"
 
 #. Type: note
 #. Description
 #: ../zfs-dkms.templates:3001
 msgid ""
-"ZFS is licensed under the Common Development and Distribution License "
+"OpenZFS is licensed under the Common Development and Distribution License "
 "(CDDL), and the Linux kernel is licensed under the GNU General Public "
 "License Version 2 (GPL-2). While both are free open source licenses they are "
 "restrictive licenses. The combination of them causes problems because it "
 "prevents using pieces of code exclusively available under one license with "
 "pieces of code exclusively available under the other in the same binary."
 msgstr ""
-"O ZFS está licenciado sobre a Common Development and Distribution License "
-"(CDDL), enquanto que o kernel do Linux está sobre a GNU General Public "
-"License Version 2 (GPL-2). Apesar de ambas serem licenças de open source "
-"livres, são ambas restritivas. A combinação de ambas pode causar problemas "
-"pois impedem o uso exclusivo de partes de código disponíveis para uma "
-"licença com partes de código exclusivas de outra licença no mesmo ficheiro "
-"binário."
+"O OpenZFS está licenciado sobre a Common Development and Distribution "
+"License (CDDL), enquanto que o kernel do Linux está sobre a GNU General "
+"Public License Version 2 (GPL-2). Apesar de ambas serem licenças de open "
+"source livres, são ambas restritivas. A combinação de ambas pode causar "
+"problemas pois impedem o uso exclusivo de partes de código disponíveis para "
+"uma licença com partes de código exclusivas de outra licença no mesmo "
+"ficheiro binário."
 
 #. Type: note
 #. Description
 #: ../zfs-dkms.templates:3001
 msgid ""
-"You are going to build ZFS using DKMS in such a way that they are not going to "
-"be built into one monolithic binary. Please be aware that distributing both of "
-"the binaries in the same media (disk images, virtual appliances, etc) may "
-"lead to infringing."
+"You are going to build OpenZFS using DKMS in such a way that they are not "
+"going to be built into one monolithic binary. Please be aware that "
+"distributing both of the binaries in the same media (disk images, virtual "
+"appliances, etc) may lead to infringing."
 msgstr ""
-"Irá compilar o ZFS usando DKMS de um modo tal que não será compilado num "
+"Irá compilar o OpenZFS usando DKMS de um modo tal que não será compilado num "
 "único binário monolítico. tenha atenção que distribuir ambos os binários no "
 "mesmo suporte de media (imagens de disco, aplicações virtuais, etc) pode "
 "levar a violação da licença. "
+
+#~ msgid "Scrub OpenZFS pools periodically?"
+#~ msgstr "Fazer Scrub periodicamente aos pools OpenZFS?"
+
+#~ msgid ""
+#~ "Scrubbing storage pool data is a routine maintenance operation that check "
+#~ "all data against known checksums, and fix early problems like bit rots. "
+#~ "This operation is scheduled with low priority in the background, and "
+#~ "usually does not have big impact on performance when the pool is not "
+#~ "heavily utilized."
+#~ msgstr ""
+#~ "Fazer scrub aos dados do pool de armazenamento é uma operação de rotina "
+#~ "de manutenção que verifica todos os dados contra dados de controle "
+#~ "conhecidos, e corrigie problemas no inicio como bit rots. Esta operação é "
+#~ "agendada com prioridade baixa em background, e normalmente não tem grande "
+#~ "impacto no desempenho quando o pool não é muito utilizado."
+
+#~ msgid ""
+#~ "Would you like to scrub all pools periodically? By default scrub jobs are "
+#~ "scheduled on every first Sunday of month."
+#~ msgstr ""
+#~ "Deseja fazer scrub periodicamente a todos os pools? Por predefinição os "
+#~ "trabalhos de scrub são agendados para o primeiro Domingo do mês."
+
+#~ msgid "TRIM SSD devices in OpenZFS pools periodically?"
+#~ msgstr "Fazer TRIM periodicamente a dispositivos SSD em pools OpenZFS?"
+
+#~ msgid ""
+#~ "Some SSD devices require proper scheduling of TRIM commands to maintain "
+#~ "best performance. Would you like to TRIM SSD devices periodically?"
+#~ msgstr ""
+#~ "Alguns dispositivos SSD necessitam de agendamento adequado dos comandos "
+#~ "TRIM para manter o melhor desempenho. Deseja fazer periodicamente TRIM a "
+#~ "dispositivos SSD?"
+
+#~ msgid ""
+#~ "TRIM jobs are scheduled on every first Sunday of month to NVMe devices in "
+#~ "pools by default. You can choose to enable TRIM for all SSD or disable it "
+#~ "completely. If no suitable SSD device is found, nothing will be done."
+#~ msgstr ""
+#~ "Os trabalhos de TRIM são agendados, por predefinição, para o primeiro "
+#~ "Domingo do mês em todos os dispositivos NVMe nos pools. Pode escolher "
+#~ "habilitar TRIM para todos os dispositivos SSD ou desabilita-los "
+#~ "completamente. Se não for encontrado nenhum dispositivo SSD adequado, não "
+#~ "será feito nada."
diff -Nru zfs-linux-2.0.3/debian/po/ru.po zfs-linux-2.0.3/debian/po/ru.po
--- zfs-linux-2.0.3/debian/po/ru.po	2021-01-08 14:43:30.000000000 +0800
+++ zfs-linux-2.0.3/debian/po/ru.po	2021-03-31 19:46:36.000000000 +0800
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: zfs-linux 0.6.1-1\n"
 "Report-Msgid-Bugs-To: zfs-linux@packages.debian.org\n"
-"POT-Creation-Date: 2015-11-01 14:11+0800\n"
+"POT-Creation-Date: 2021-03-30 14:43+0800\n"
 "PO-Revision-Date: 2018-01-01 15:56+0500\n"
 "Last-Translator: Lev Lamberov <dogsleg@debian.org>\n"
 "Language-Team: Russian <man-pages-ru-talks@lists.sourceforge.net>\n"
@@ -22,14 +22,14 @@
 #. Type: boolean
 #. Description
 #: ../zfs-dkms.templates:1001
-msgid "Abort building ZFS on a 32-bit kernel?"
-msgstr "Прервать сборку ZFS для 32-битного ядра?"
+msgid "Abort building OpenZFS on a 32-bit kernel?"
+msgstr "Прервать сборку OpenZFS для 32-битного ядра?"
 
 #. Type: boolean
 #. Description
 #: ../zfs-dkms.templates:1001
-msgid "You are attempting to build ZFS against a 32-bit running kernel."
-msgstr "Вы пытаетесь собрать ZFS для выполняющегося 32-битного ядра."
+msgid "You are attempting to build OpenZFS against a 32-bit running kernel."
+msgstr "Вы пытаетесь собрать OpenZFS для выполняющегося 32-битного ядра."
 
 #. Type: boolean
 #. Description
@@ -37,70 +37,72 @@
 #. Description
 #: ../zfs-dkms.templates:1001 ../zfs-dkms.templates:2001
 msgid ""
-"Although possible, building in a 32-bit environment is unsupported and likely "
-"to cause instability leading to possible data corruption. You are strongly "
-"advised to use a 64-bit kernel; if you do decide to proceed with using ZFS on "
-"this kernel then keep in mind that it is at your own risk."
+"Although possible, building in a 32-bit environment is unsupported and "
+"likely to cause instability leading to possible data corruption. You are "
+"strongly advised to use a 64-bit kernel; if you do decide to proceed with "
+"using OpenZFS on this kernel then keep in mind that it is at your own risk."
 msgstr ""
 "Хотя это и возможно, сборка в 32-битном окружении не поддерживается, и, "
 "вероятно, она будет работать нестабильно, что может вызвать повреждение "
 "данных. Настоятельно рекомендуем использовать 64-битное ядро; если вы решите "
-"продолжить использовать ZFS с этим ядром, то вы делаете это на свой риск."
+"продолжить использовать OpenZFS с этим ядром, то вы делаете это на свой риск."
 
 #. Type: boolean
 #. Description
 #: ../zfs-dkms.templates:2001
-msgid "Abort building ZFS on an unknown kernel?"
-msgstr "Прервать сборку ZFS для неизвестного ядра?"
+msgid "Abort building OpenZFS on an unknown kernel?"
+msgstr "Прервать сборку OpenZFS для неизвестного ядра?"
 
 #. Type: boolean
 #. Description
 #: ../zfs-dkms.templates:2001
 msgid ""
-"You are attempting to build ZFS against a running kernel that could not be "
-"identified as 32-bit or 64-bit. If you are not completely sure that the "
+"You are attempting to build OpenZFS against a running kernel that could not "
+"be identified as 32-bit or 64-bit. If you are not completely sure that the "
 "running kernel is a 64-bit one, you should probably stop the build."
 msgstr ""
-"Вы пытаетесь собрать ZFS для выполняющегося ядра с неизвестной разрядностью. "
-"Если вы не уверены полностью, что работающее ядро 64-битное, лучше прервать "
-"сборку."
+"Вы пытаетесь собрать OpenZFS для выполняющегося ядра с неизвестной "
+"разрядностью. Если вы не уверены полностью, что работающее ядро 64-битное, "
+"лучше прервать сборку."
 
 #. Type: note
 #. Description
 #: ../zfs-dkms.templates:3001
-msgid "Licenses of ZFS and Linux are incompatible"
-msgstr "Лицензии ZFS и Linux несовместимы"
+msgid "Licenses of OpenZFS and Linux are incompatible"
+msgstr "Лицензии OpenZFS и Linux несовместимы"
 
 #. Type: note
 #. Description
 #: ../zfs-dkms.templates:3001
 msgid ""
-"ZFS is licensed under the Common Development and Distribution License (CDDL), "
-"and the Linux kernel is licensed under the GNU General Public License Version "
-"2 (GPL-2). While both are free open source licenses they are restrictive "
-"licenses. The combination of them causes problems because it prevents using "
-"pieces of code exclusively available under one license with pieces of code "
-"exclusively available under the other in the same binary."
+"OpenZFS is licensed under the Common Development and Distribution License "
+"(CDDL), and the Linux kernel is licensed under the GNU General Public "
+"License Version 2 (GPL-2). While both are free open source licenses they are "
+"restrictive licenses. The combination of them causes problems because it "
+"prevents using pieces of code exclusively available under one license with "
+"pieces of code exclusively available under the other in the same binary."
 msgstr ""
-"Код ZFS выпущен под лицензией Common Development and Distribution License "
-"(CDDL), а ядро Linux выпущено под лицензией GNU General Public License Version "
-"2 (GPL-2). Хотя обе эти лицензии являются свободными лицензиями, они также "
-"являются ограничительными лицензиями. При их объединении возникают проблемы, "
-"поскольку объединённые условия лицензирования не позволяют использовать части "
-"кода, выпущенные исключительно под одной из указанных лицензий, вместе с "
-"частями кода, выпущенного исключительно под другой из указанных лицензий, в "
-"одной двоичной сборке."
+"Код OpenZFS выпущен под лицензией Common Development and Distribution "
+"License (CDDL), а ядро Linux выпущено под лицензией GNU General Public "
+"License Version 2 (GPL-2). Хотя обе эти лицензии являются свободными "
+"лицензиями, они также являются ограничительными лицензиями. При их "
+"объединении возникают проблемы, поскольку объединённые условия "
+"лицензирования не позволяют использовать части кода, выпущенные "
+"исключительно под одной из указанных лицензий, вместе с частями кода, "
+"выпущенного исключительно под другой из указанных лицензий, в одной двоичной "
+"сборке."
 
 #. Type: note
 #. Description
 #: ../zfs-dkms.templates:3001
 msgid ""
-"You are going to build ZFS using DKMS in such a way that they are not going to "
-"be built into one monolithic binary. Please be aware that distributing both of "
-"the binaries in the same media (disk images, virtual appliances, etc) may lead "
-"to infringing."
+"You are going to build OpenZFS using DKMS in such a way that they are not "
+"going to be built into one monolithic binary. Please be aware that "
+"distributing both of the binaries in the same media (disk images, virtual "
+"appliances, etc) may lead to infringing."
 msgstr ""
-"Код ZFS будет собран с использованием DKMS таким образом, что части кода под "
-"разными лицензиями не будут представлять собой монолитной двоичной сборки. "
-"Помните, что распространение обоих двоичных сборок на одном носителе (образы "
-"дисков, виртуальные устройства и проч.) может привести к нарушению закона."
+"Код OpenZFS будет собран с использованием DKMS таким образом, что части кода "
+"под разными лицензиями не будут представлять собой монолитной двоичной "
+"сборки. Помните, что распространение обоих двоичных сборок на одном носителе "
+"(образы дисков, виртуальные устройства и проч.) может привести к нарушению "
+"закона."
diff -Nru zfs-linux-2.0.3/debian/po/sv.po zfs-linux-2.0.3/debian/po/sv.po
--- zfs-linux-2.0.3/debian/po/sv.po	2021-01-08 14:43:30.000000000 +0800
+++ zfs-linux-2.0.3/debian/po/sv.po	2021-03-31 19:46:36.000000000 +0800
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: zfs-linux\n"
 "Report-Msgid-Bugs-To: zfs-linux@packages.debian.org\n"
-"POT-Creation-Date: 2015-11-01 14:11+0800\n"
+"POT-Creation-Date: 2021-03-30 14:43+0800\n"
 "PO-Revision-Date: 2019-01-02 12:24+0100\n"
 "Last-Translator: Martin Bagge / brother <brother@bsnet.se>\n"
 "Language-Team: Swedish <debian-l10n-swedish@lists.debian.org>\n"
@@ -20,14 +20,14 @@
 #. Type: boolean
 #. Description
 #: ../zfs-dkms.templates:1001
-msgid "Abort building ZFS on a 32-bit kernel?"
-msgstr "Ska bygget av ZFS på en 32-bitars kärna avbrytas?"
+msgid "Abort building OpenZFS on a 32-bit kernel?"
+msgstr "Ska bygget av OpenZFS på en 32-bitars kärna avbrytas?"
 
 #. Type: boolean
 #. Description
 #: ../zfs-dkms.templates:1001
-msgid "You are attempting to build ZFS against a 32-bit running kernel."
-msgstr "Du försöker bygga ZFS mot en 32-bitars kärna."
+msgid "You are attempting to build OpenZFS against a 32-bit running kernel."
+msgstr "Du försöker bygga OpenZFS mot en 32-bitars kärna."
 
 #. Type: boolean
 #. Description
@@ -35,63 +35,63 @@
 #. Description
 #: ../zfs-dkms.templates:1001 ../zfs-dkms.templates:2001
 msgid ""
-"Although possible, building in a 32-bit environment is unsupported and likely "
-"to cause instability leading to possible data corruption. You are strongly "
-"advised to use a 64-bit kernel; if you do decide to proceed with using ZFS on "
-"this kernel then keep in mind that it is at your own risk."
+"Although possible, building in a 32-bit environment is unsupported and "
+"likely to cause instability leading to possible data corruption. You are "
+"strongly advised to use a 64-bit kernel; if you do decide to proceed with "
+"using OpenZFS on this kernel then keep in mind that it is at your own risk."
 msgstr ""
 "Det är inte omöjligt men att bygga i en 32-bitars-miljö är inte något som "
-"stöds och kommer troligen att leda till ostabilt system och det i sin tur kan "
-"leda till dataförlust. Att använda en 64-bitars kärna är starkt rekommenderat. "
-"Om du väljer att fortsätta med att använda ZFS på den här kärnan är det helt "
-"och hållet på din egen risk."
+"stöds och kommer troligen att leda till ostabilt system och det i sin tur "
+"kan leda till dataförlust. Att använda en 64-bitars kärna är starkt "
+"rekommenderat. Om du väljer att fortsätta med att använda OpenZFS på den här "
+"kärnan är det helt och hållet på din egen risk."
 
 #. Type: boolean
 #. Description
 #: ../zfs-dkms.templates:2001
-msgid "Abort building ZFS on an unknown kernel?"
-msgstr "Ska bygget av ZFS på en okänd kärntyp avbrytas?"
+msgid "Abort building OpenZFS on an unknown kernel?"
+msgstr "Ska bygget av OpenZFS på en okänd kärntyp avbrytas?"
 
 #. Type: boolean
 #. Description
 #: ../zfs-dkms.templates:2001
 msgid ""
-"You are attempting to build ZFS against a running kernel that could not be "
-"identified as 32-bit or 64-bit. If you are not completely sure that the "
+"You are attempting to build OpenZFS against a running kernel that could not "
+"be identified as 32-bit or 64-bit. If you are not completely sure that the "
 "running kernel is a 64-bit one, you should probably stop the build."
 msgstr ""
-"Du försöker bygga ZFS mot en kärna som varken kan identifieras som 32-bitars "
-"eller 64-bitars. Om du inte är helt säker på att du kör en 64-bitars kärna ska "
-"du avbryta bygget nu."
+"Du försöker bygga OpenZFS mot en kärna som varken kan identifieras som 32-"
+"bitars eller 64-bitars. Om du inte är helt säker på att du kör en 64-bitars "
+"kärna ska du avbryta bygget nu."
 
 #. Type: note
 #. Description
 #: ../zfs-dkms.templates:3001
-msgid "Licenses of ZFS and Linux are incompatible"
-msgstr "Licenserna för ZFS och Linux är inte kompatibla"
+msgid "Licenses of OpenZFS and Linux are incompatible"
+msgstr "Licenserna för OpenZFS och Linux är inte kompatibla"
 
 #. Type: note
 #. Description
 #: ../zfs-dkms.templates:3001
 msgid ""
-"ZFS is licensed under the Common Development and Distribution License (CDDL), "
-"and the Linux kernel is licensed under the GNU General Public License Version "
-"2 (GPL-2). While both are free open source licenses they are restrictive "
-"licenses. The combination of them causes problems because it prevents using "
-"pieces of code exclusively available under one license with pieces of code "
-"exclusively available under the other in the same binary."
+"OpenZFS is licensed under the Common Development and Distribution License "
+"(CDDL), and the Linux kernel is licensed under the GNU General Public "
+"License Version 2 (GPL-2). While both are free open source licenses they are "
+"restrictive licenses. The combination of them causes problems because it "
+"prevents using pieces of code exclusively available under one license with "
+"pieces of code exclusively available under the other in the same binary."
 msgstr ""
 
 #. Type: note
 #. Description
 #: ../zfs-dkms.templates:3001
 msgid ""
-"You are going to build ZFS using DKMS in such a way that they are not going to "
-"be built into one monolithic binary. Please be aware that distributing both of "
-"the binaries in the same media (disk images, virtual appliances, etc) may lead "
-"to infringing."
+"You are going to build OpenZFS using DKMS in such a way that they are not "
+"going to be built into one monolithic binary. Please be aware that "
+"distributing both of the binaries in the same media (disk images, virtual "
+"appliances, etc) may lead to infringing."
 msgstr ""
-"Du kommer att bygga ZFS med DKMS på ett sådant sätt att de inte byggs ihop "
-"till en monolit-binär. Vänligen notera att distribution av dessa binärer på "
-"samma media(diskavbildningar, virtuella maskin-bilder eller dylikt) kan "
-"innebära intrång i upphovsrätt och avtal."
+"Du kommer att bygga OpenZFS med DKMS på ett sådant sätt att de inte byggs "
+"ihop till en monolit-binär. Vänligen notera att distribution av dessa "
+"binärer på samma media(diskavbildningar, virtuella maskin-bilder eller "
+"dylikt) kan innebära intrång i upphovsrätt och avtal."
diff -Nru zfs-linux-2.0.3/debian/po/templates.pot zfs-linux-2.0.3/debian/po/templates.pot
--- zfs-linux-2.0.3/debian/po/templates.pot	2021-01-08 14:43:30.000000000 +0800
+++ zfs-linux-2.0.3/debian/po/templates.pot	2021-03-31 19:46:36.000000000 +0800
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: zfs-linux\n"
 "Report-Msgid-Bugs-To: zfs-linux@packages.debian.org\n"
-"POT-Creation-Date: 2017-10-31 18:34+0800\n"
+"POT-Creation-Date: 2021-03-30 14:43+0800\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -20,13 +20,13 @@
 #. Type: boolean
 #. Description
 #: ../zfs-dkms.templates:1001
-msgid "Abort building ZFS on a 32-bit kernel?"
+msgid "Abort building OpenZFS on a 32-bit kernel?"
 msgstr ""
 
 #. Type: boolean
 #. Description
 #: ../zfs-dkms.templates:1001
-msgid "You are attempting to build ZFS against a 32-bit running kernel."
+msgid "You are attempting to build OpenZFS against a 32-bit running kernel."
 msgstr ""
 
 #. Type: boolean
@@ -38,35 +38,35 @@
 "Although possible, building in a 32-bit environment is unsupported and "
 "likely to cause instability leading to possible data corruption. You are "
 "strongly advised to use a 64-bit kernel; if you do decide to proceed with "
-"using ZFS on this kernel then keep in mind that it is at your own risk."
+"using OpenZFS on this kernel then keep in mind that it is at your own risk."
 msgstr ""
 
 #. Type: boolean
 #. Description
 #: ../zfs-dkms.templates:2001
-msgid "Abort building ZFS on an unknown kernel?"
+msgid "Abort building OpenZFS on an unknown kernel?"
 msgstr ""
 
 #. Type: boolean
 #. Description
 #: ../zfs-dkms.templates:2001
 msgid ""
-"You are attempting to build ZFS against a running kernel that could not be "
-"identified as 32-bit or 64-bit. If you are not completely sure that the "
+"You are attempting to build OpenZFS against a running kernel that could not "
+"be identified as 32-bit or 64-bit. If you are not completely sure that the "
 "running kernel is a 64-bit one, you should probably stop the build."
 msgstr ""
 
 #. Type: note
 #. Description
 #: ../zfs-dkms.templates:3001
-msgid "Licenses of ZFS and Linux are incompatible"
+msgid "Licenses of OpenZFS and Linux are incompatible"
 msgstr ""
 
 #. Type: note
 #. Description
 #: ../zfs-dkms.templates:3001
 msgid ""
-"ZFS is licensed under the Common Development and Distribution License "
+"OpenZFS is licensed under the Common Development and Distribution License "
 "(CDDL), and the Linux kernel is licensed under the GNU General Public "
 "License Version 2 (GPL-2). While both are free open source licenses they are "
 "restrictive licenses. The combination of them causes problems because it "
@@ -78,8 +78,8 @@
 #. Description
 #: ../zfs-dkms.templates:3001
 msgid ""
-"You are going to build ZFS using DKMS in such a way that they are not going "
-"to be built into one monolithic binary. Please be aware that distributing "
-"both of the binaries in the same media (disk images, virtual appliances, "
-"etc) may lead to infringing."
+"You are going to build OpenZFS using DKMS in such a way that they are not "
+"going to be built into one monolithic binary. Please be aware that "
+"distributing both of the binaries in the same media (disk images, virtual "
+"appliances, etc) may lead to infringing."
 msgstr ""
diff -Nru zfs-linux-2.0.3/debian/po/zh_CN.po zfs-linux-2.0.3/debian/po/zh_CN.po
--- zfs-linux-2.0.3/debian/po/zh_CN.po	2021-01-08 14:43:30.000000000 +0800
+++ zfs-linux-2.0.3/debian/po/zh_CN.po	2021-03-31 19:46:36.000000000 +0800
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: zfs-linux\n"
 "Report-Msgid-Bugs-To: zfs-linux@packages.debian.org\n"
-"POT-Creation-Date: 2015-11-01 14:11+0800\n"
+"POT-Creation-Date: 2021-03-30 14:43+0800\n"
 "PO-Revision-Date: 2015-11-01 14:25+0800\n"
 "Last-Translator: Aron <aron@debian.org>\n"
 "Language-Team: Chinese (Simplified) <debian-l10n-chinese@lists.debian.org>\n"
@@ -20,14 +20,14 @@
 #. Type: boolean
 #. Description
 #: ../zfs-dkms.templates:1001
-msgid "Abort building ZFS on a 32-bit kernel?"
+msgid "Abort building OpenZFS on a 32-bit kernel?"
 msgstr "中断在32位内核上编译?"
 
 #. Type: boolean
 #. Description
 #: ../zfs-dkms.templates:1001
-msgid "You are attempting to build ZFS against a 32-bit running kernel."
-msgstr "您正试图在32位内核上编译ZFS支持。"
+msgid "You are attempting to build OpenZFS against a 32-bit running kernel."
+msgstr "您正试图在32位内核上编译OpenZFS支持。"
 
 #. Type: boolean
 #. Description
@@ -38,7 +38,7 @@
 "Although possible, building in a 32-bit environment is unsupported and "
 "likely to cause instability leading to possible data corruption. You are "
 "strongly advised to use a 64-bit kernel; if you do decide to proceed with "
-"using ZFS on this kernel then keep in mind that it is at your own risk."
+"using OpenZFS on this kernel then keep in mind that it is at your own risk."
 msgstr ""
 "尽管在32位系统上可能编译成功,这样做是不受支持的,并可能造成导致数据损坏的不"
 "稳定情况。我们强烈建议您使用64位内核,如果您决定继续,请牢记您将自己承担风"
@@ -47,49 +47,88 @@
 #. Type: boolean
 #. Description
 #: ../zfs-dkms.templates:2001
-msgid "Abort building ZFS on an unknown kernel?"
+msgid "Abort building OpenZFS on an unknown kernel?"
 msgstr "中断在未知内核上编译?"
 
 #. Type: boolean
 #. Description
 #: ../zfs-dkms.templates:2001
 msgid ""
-"You are attempting to build ZFS against a running kernel that could not be "
-"identified as 32-bit or 64-bit. If you are not completely sure that the "
+"You are attempting to build OpenZFS against a running kernel that could not "
+"be identified as 32-bit or 64-bit. If you are not completely sure that the "
 "running kernel is a 64-bit one, you should probably stop the build."
 msgstr ""
-"无法确定您即将编译ZFS支持的内核是32位或64位。如果您不能确定当前运行的内核是64"
-"位的,那么建议您停止编译。"
+"无法确定您即将编译OpenZFS支持的内核是32位或64位。如果您不能确定当前运行的内核"
+"是64位的,那么建议您停止编译。"
 
 #. Type: note
 #. Description
 #: ../zfs-dkms.templates:3001
-msgid "Licenses of ZFS and Linux are incompatible"
-msgstr "ZFS和Linux的许可证不相容"
+msgid "Licenses of OpenZFS and Linux are incompatible"
+msgstr "OpenZFS和Linux的许可证不相容"
 
 #. Type: note
 #. Description
 #: ../zfs-dkms.templates:3001
 msgid ""
-"ZFS is licensed under the Common Development and Distribution License "
+"OpenZFS is licensed under the Common Development and Distribution License "
 "(CDDL), and the Linux kernel is licensed under the GNU General Public "
 "License Version 2 (GPL-2). While both are free open source licenses they are "
 "restrictive licenses. The combination of them causes problems because it "
 "prevents using pieces of code exclusively available under one license with "
 "pieces of code exclusively available under the other in the same binary."
 msgstr ""
-"ZFS的许可证是CDDL,Linux内核的许可证是GPL-2。两者皆为自由/开源软件许可证,"
-"然而它们的限制性也都较强,将两部分各自独立许可的代码合并使用将导致问题。"
+"OpenZFS的许可证是CDDL,Linux内核的许可证是GPL-2。两者皆为自由/开源软件许可"
+"证,然而它们的限制性也都较强,将两部分各自独立许可的代码合并使用将导致问题。"
 
 #. Type: note
 #. Description
 #: ../zfs-dkms.templates:3001
 msgid ""
-"You are going to build ZFS using DKMS in such a way that they are not going to "
-"be built into one monolithic binary. Please be aware that distributing both of "
-"the binaries in the same media (disk images, virtual appliances, etc) may "
-"lead to infringing."
+"You are going to build OpenZFS using DKMS in such a way that they are not "
+"going to be built into one monolithic binary. Please be aware that "
+"distributing both of the binaries in the same media (disk images, virtual "
+"appliances, etc) may lead to infringing."
 msgstr ""
-"您将以DKMS方式编译ZFS,以使其不与Linux内核被编译成为一个单独的二进制文件。"
-"在单一介质(如磁盘镜像、虚拟机模板等)上同时发ZFS和Linux内核的二进制文件将造"
-"成侵权。"
+"您将以DKMS方式编译OpenZFS,以使其不与Linux内核被编译成为一个单独的二进制文"
+"件。在单一介质(如磁盘镜像、虚拟机模板等)上同时发OpenZFS和Linux内核的二进制文"
+"件将造成侵权。"
+
+#~ msgid "Scrub OpenZFS pools periodically?"
+#~ msgstr "是否定期执行OpenZFS存储池检查?"
+
+#~ msgid ""
+#~ "Scrubbing storage pool data is a routine maintenance operation that check "
+#~ "all data against known checksums, and fix early problems like bit rots. "
+#~ "This operation is scheduled with low priority in the background, and "
+#~ "usually does not have big impact on performance when the pool is not "
+#~ "heavily utilized."
+#~ msgstr ""
+#~ "存储池数据检查是一项将全部数据与已知校验和进行对比的日常维护工作,能够发现"
+#~ "和修复部分偶发的比特错误问题。检查工作以低优先级在后台执行,在存储池负载不"
+#~ "重的情况下不会对性能造成显著影响。"
+
+#~ msgid ""
+#~ "Would you like to scrub all pools periodically? By default scrub jobs are "
+#~ "scheduled on every first Sunday of month."
+#~ msgstr ""
+#~ "您是否希望定期检查存储池数据?默认情况下检查开始于每月的第一个星期日。"
+
+#~ msgid "TRIM SSD devices in OpenZFS pools periodically?"
+#~ msgstr "是否定期对OpenZFS存储池内的SSD执行TRIM?"
+
+#~ msgid ""
+#~ "Some SSD devices require proper scheduling of TRIM commands to maintain "
+#~ "best performance. Would you like to TRIM SSD devices periodically?"
+#~ msgstr ""
+#~ "部分SSD设备需要合理安排TRIM操作才能维持在最佳工作性能。您是否希望定期对SSD"
+#~ "执行TRIM操作?"
+
+#~ msgid ""
+#~ "TRIM jobs are scheduled on every first Sunday of month to NVMe devices in "
+#~ "pools by default. You can choose to enable TRIM for all SSD or disable it "
+#~ "completely. If no suitable SSD device is found, nothing will be done."
+#~ msgstr ""
+#~ "默认情况下,TRIM操作开始于每月的第二个星期日,且仅针对NVMe设备。您可以选择"
+#~ "对所有SSD启用这项操作,也可以彻底禁用它。如果存储池内没有适用的SSD设备,本"
+#~ "项不会产生任何实际操作。"
diff -Nru zfs-linux-2.0.3/debian/README.Debian zfs-linux-2.0.3/debian/README.Debian
--- zfs-linux-2.0.3/debian/README.Debian	2021-01-08 14:43:30.000000000 +0800
+++ zfs-linux-2.0.3/debian/README.Debian	2021-04-02 20:46:58.000000000 +0800
@@ -1,6 +1,8 @@
 zfs-linux for Debian
+====================
 
 1. Feature flags are enabled by default.
+----------------------------------------
 
 This means that ZoL will now create pools in a way that is
 incompatible with Solaris. If you need Solaris compatibility,
@@ -11,7 +13,10 @@
 ZoL remains compatible with all other ZFS implementations derived
 from Illumos.
 
+ -- Aron Xu <aron@debian.org>  Sat, 3 Aug 2013 03:23:11 +0800
+
 2. Use zfs-initramfs with caution.
+----------------------------------
 
 Debian Installer's root installation support is being worked on,
 and zfs-initramfs is included here but still needs to be tested
@@ -19,3 +24,44 @@
 loss of data, please use zfs-initramfs with caution.
 
  -- Aron Xu <aron@debian.org>  Sat, 3 Aug 2013 03:23:11 +0800
+
+3. Per-zpool config for the periodic-{scrub,trim} cron jobs is supported.
+-------------------------------------------------------------------------
+
+ Starting with 2.0.3-3, the auto-scrub and auto-trim cron jobs will use the
+ "org.debian:periodic-{scrub,trim}" user properties on the pool's root dataset
+ to determine if they should do anything; accepted values are:
+
+	* "auto"    ‒ same as unset, use default checks
+	* "enable"  ‒ always scrub/trim automatically
+	* "disable" ‒ never scrub/trim automatically
+
+ [ Periodic Scrubbing ]
+
+ Scrubbing storage pool data is a routine maintenance operation that check all
+ data against known checksums, and fix early problems like bit riots. This
+ operation is scheduled with low priority in the background, and usually does
+ not have big impact on performance when the pool is not heavily utilized.
+
+ If you would like to scrub all pools periodically, no operation is required
+ as periodic scrub is already the default behavior. Or if you want to
+ make it explicit for a zpool named "tank":
+
+  # zfs set org.debian:periodic-scrub=auto tank
+
+ By default scrub jobs are scheduled on every first Sunday of month.
+
+ [ Periodic Trimming ]
+
+ Some SSD devices require proper scheduling of TRIM commands to maintain best
+ performance. Currently the auto-trim will only trim if the zpool consists of
+ /only/ NVMe drives, since some SATA 2 and SATA 3.0 SSDs will hang or crash
+ during large TRIMs (See #983086). If your zpools with SATA SSDs had no
+ problems trimming before, you will need to run the following command to
+ restore the previous behaviour (always trim a pool):
+
+  # zfs set org.debian:periodic-trim=enable sata-pool
+
+ TRIM jobs are scheduled on every first Sunday of month by default.
+
+ -- Mo Zhou <lumin@debian.org> Fri, 2 Apr 2021 12:23:00 +0000
diff -Nru zfs-linux-2.0.3/debian/rules zfs-linux-2.0.3/debian/rules
--- zfs-linux-2.0.3/debian/rules	2021-02-12 16:30:01.000000000 +0800
+++ zfs-linux-2.0.3/debian/rules	2021-04-05 10:33:52.000000000 +0800
@@ -209,7 +209,8 @@
 	dh_installsystemd --name zfs-zed
 
 override_dh_installdocs:
-	dh_installdocs
+	dh_installdocs -A
+	dh_installdocs -a -i -A debian/README.Debian
 ifeq (,$(findstring nodoc, $(DEB_BUILD_OPTIONS)))
 	http_proxy='127.0.0.1:9' sphinx-build -N -bhtml "$(CURDIR)/contrib/pyzfs/docs/source/" debian/pyzfs-doc/usr/share/doc/pyzfs-doc/html/
 endif
diff -Nru zfs-linux-2.0.3/debian/tests/control zfs-linux-2.0.3/debian/tests/control
--- zfs-linux-2.0.3/debian/tests/control	2021-02-12 16:30:01.000000000 +0800
+++ zfs-linux-2.0.3/debian/tests/control	2021-04-02 14:10:12.000000000 +0800
@@ -1,19 +1,16 @@
 Tests: kernel-smoke-test, kernel-ztest, zfs-test-suite
-Restrictions: needs-root, isolation-machine, allow-stderr
+Restrictions: needs-root, isolation-machine
 Depends: zfs-dkms [ amd64 arm64 ppc64el s390x ],
          zfs-initramfs [ amd64 arm64 ppc64el s390x ],
          zfs-test [ amd64 arm64 ppc64el s390x ],
          zfs-zed [ amd64 arm64 ppc64el s390x ],
-         zfsutils-linux [ amd64 arm64 ppc64el s390x ],
-         linux-headers-amd64 [amd64],
-         linux-headers-arm64 [arm64],
-         linux-headers-powerpc64le [ppc64el],
-         linux-headers-s390x [s390x]
+         zfsutils-linux [ amd64 arm64 ppc64el s390x ]
 
 Tests: dkms-zfs-test
 Restrictions: needs-root, allow-stderr
 Depends: dkms,
          linux-headers-amd64 [amd64],
+         linux-headers-686 [i386],
          linux-headers-arm64 [arm64],
          linux-headers-powerpc64le [ppc64el],
          linux-headers-s390x [s390x]
@@ -22,6 +19,7 @@
 Restrictions: needs-root, allow-stderr,
 Depends: fakeroot,
          linux-headers-amd64 [amd64],
+         linux-headers-686 [i386],
          linux-headers-arm64 [arm64],
          linux-headers-powerpc64le [ppc64el],
          linux-headers-s390x [s390x],
diff -Nru zfs-linux-2.0.3/debian/tree/zfsutils-linux/usr/lib/zfs-linux/scrub zfs-linux-2.0.3/debian/tree/zfsutils-linux/usr/lib/zfs-linux/scrub
--- zfs-linux-2.0.3/debian/tree/zfsutils-linux/usr/lib/zfs-linux/scrub	2021-02-12 16:30:01.000000000 +0800
+++ zfs-linux-2.0.3/debian/tree/zfsutils-linux/usr/lib/zfs-linux/scrub	2021-04-05 10:33:55.000000000 +0800
@@ -1,14 +1,45 @@
 #!/bin/sh -eu
 
-# Scrub all healthy pools that are not already scrubbing.
+# directly exit successfully when zfs module is not loaded
+if ! [ -d /sys/module/zfs ]; then
+	exit 0
+fi
+
+# [auto] / enable / disable
+PROPERTY_NAME="org.debian:periodic-scrub"
+
+get_property () {
+	# Detect the ${PROPERTY_NAME} property on a given pool.
+	# We are abusing user-defined properties on the root dataset,
+	# since they're not available on pools https://github.com/openzfs/zfs/pull/11680
+	# TODO: use zpool user-defined property when such feature is available.
+	pool="$1"
+	zfs get -H -o value "${PROPERTY_NAME}" "${pool}" 2>/dev/null || return 1
+}
+
+scrub_if_not_scrub_in_progress () {
+	pool="$1"
+	if ! zpool status "${pool}" | grep -q "scrub in progress"; then
+		# Ignore errors and continue with scrubbing other pools.
+		zpool scrub "${pool}" || true
+	fi
+}
+
+# Scrub all healthy pools that are not already scrubbing as per their configs.
 zpool list -H -o health,name 2>&1 | \
-	awk '$1 ~ /^ONLINE/ { print $2; }' | \
+	awk -F'\t' '$1 == "ONLINE" {print $2}' | \
 while read pool
 do
-	if ! zpool status "$pool" | grep -q "scrub in progress"
-	then
-		# Ignore errors (i.e. HDD pools),
-		# and continue with scrubing other pools.
-		zpool scrub "$pool" || true
+	# read user-defined config
+	ret=$(get_property "${pool}")
+	if [ $? -ne 0 ] || [ "disable" = "${ret}" ]; then
+		:
+	elif [ "-" = "${ret}" ] || [ "auto" = "${ret}" ] || [ "enable" = "${ret}" ]; then
+		scrub_if_not_scrub_in_progress "${pool}"
+	else
+		cat > /dev/stderr <<EOF
+$0: [WARNING] illegal value "${ret}" for property "${PROPERTY_NAME}" of ZFS dataset "${pool}".
+$0: Acceptable choices for this property are: auto, enable, disable. The default is auto.
+EOF
 	fi
 done
diff -Nru zfs-linux-2.0.3/debian/tree/zfsutils-linux/usr/lib/zfs-linux/trim zfs-linux-2.0.3/debian/tree/zfsutils-linux/usr/lib/zfs-linux/trim
--- zfs-linux-2.0.3/debian/tree/zfsutils-linux/usr/lib/zfs-linux/trim	2021-02-12 16:30:01.000000000 +0800
+++ zfs-linux-2.0.3/debian/tree/zfsutils-linux/usr/lib/zfs-linux/trim	2021-04-05 10:33:55.000000000 +0800
@@ -1,14 +1,60 @@
 #!/bin/sh -eu
 
-# TRIM all healthy pools that are not already trimming.
+# directly exit successfully when zfs module is not loaded
+if ! [ -d /sys/module/zfs ]; then
+	exit 0
+fi
+
+# [auto] / enable / disable
+PROPERTY_NAME="org.debian:periodic-trim"
+
+get_property () {
+	# Detect the ${PROPERTY_NAME} property on a given pool.
+	# We are abusing user-defined properties on the root dataset,
+	# since they're not available on pools https://github.com/openzfs/zfs/pull/11680
+	# TODO: use zpool user-defined property when such feature is available.
+	pool="$1"
+	zfs get -H -o value "${PROPERTY_NAME}" "${pool}" 2>/dev/null || return 1
+}
+
+trim_if_not_already_trimming () {
+	pool="$1"
+	if ! zpool status "${pool}" | grep -q "trimming"; then
+		# Ignore errors (i.e. HDD pools),
+		# and continue with trimming other pools.
+		zpool trim "${pool}" || true
+	fi
+}
+
+zpool_is_nvme_only () {
+	zpool=$1
+	# get a list of devices attached to the specified zpool
+	zpool list -vHPL "${zpool}" |
+		awk -F'\t' '$2 ~ /^\/dev\// {
+			if($2 !~ /^\/dev\/nvme/)
+				exit 1
+		}'
+}
+
+# TRIM all healthy pools that are not already trimming as per their configs.
 zpool list -H -o health,name 2>&1 | \
-	awk '$1 ~ /^ONLINE/ { print $2; }' | \
+	awk -F'\t' '$1 == "ONLINE" {print $2}' | \
 while read pool
 do
-	if ! zpool status "$pool" | grep -q "trimming"
-	then
-		# Ignore errors (i.e. HDD pools),
-		# and continue with trimming other pools.
-		zpool trim "$pool" || true
+	# read user-defined config
+	ret=$(get_property "${pool}")
+	if [ $? -ne 0 ] || [ "disable" = "${ret}" ]; then
+		:
+	elif [ "enable" = "${ret}" ]; then
+		trim_if_not_already_trimming "${pool}"
+	elif [ "-" = "${ret}" ] || [ "auto" = "${ret}" ]; then
+		if zpool_is_nvme_only "${pool}"; then
+			trim_if_not_already_trimming "${pool}"
+		fi
+	else
+		cat > /dev/stderr <<EOF
+$0: [WARNING] illegal value "${ret}" for property "${PROPERTY_NAME}" of ZFS dataset "${pool}".
+$0: Acceptable choices for this property are: auto, enable, disable. The default is auto.
+EOF
 	fi
 done
diff -Nru zfs-linux-2.0.3/debian/zfs-dkms.templates zfs-linux-2.0.3/debian/zfs-dkms.templates
--- zfs-linux-2.0.3/debian/zfs-dkms.templates	2021-01-08 14:43:30.000000000 +0800
+++ zfs-linux-2.0.3/debian/zfs-dkms.templates	2021-03-31 09:33:47.000000000 +0800
@@ -1,40 +1,40 @@
 Template: zfs-dkms/stop-build-for-32bit-kernel
 Type: boolean
 Default: true
-_Description: Abort building ZFS on a 32-bit kernel?
- You are attempting to build ZFS against a 32-bit running kernel.
+_Description: Abort building OpenZFS on a 32-bit kernel?
+ You are attempting to build OpenZFS against a 32-bit running kernel.
  .
  Although possible, building in a 32-bit environment is unsupported and
  likely to cause instability leading to possible data corruption. You
  are strongly advised to use a 64-bit kernel; if you do decide to
- proceed with using ZFS on this kernel then keep in mind that it is at
+ proceed with using OpenZFS on this kernel then keep in mind that it is at
  your own risk.
 
 Template: zfs-dkms/stop-build-for-unknown-kernel
 Type: boolean
 Default: true
-_Description: Abort building ZFS on an unknown kernel?
- You are attempting to build ZFS against a running kernel that could not
+_Description: Abort building OpenZFS on an unknown kernel?
+ You are attempting to build OpenZFS against a running kernel that could not
  be identified as 32-bit or 64-bit. If you are not completely sure that
  the running kernel is a 64-bit one, you should probably stop the build.
  .
  Although possible, building in a 32-bit environment is unsupported and
  likely to cause instability leading to possible data corruption. You
  are strongly advised to use a 64-bit kernel; if you do decide to
- proceed with using ZFS on this kernel then keep in mind that it is at
+ proceed with using OpenZFS on this kernel then keep in mind that it is at
  your own risk.
 
 Template: zfs-dkms/note-incompatible-licenses
 Type: note
-_Description: Licenses of ZFS and Linux are incompatible
- ZFS is licensed under the Common Development and Distribution License (CDDL),
+_Description: Licenses of OpenZFS and Linux are incompatible
+ OpenZFS is licensed under the Common Development and Distribution License (CDDL),
  and the Linux kernel is licensed under the GNU General Public License Version 2
  (GPL-2). While both are free open source licenses they are restrictive
  licenses. The combination of them causes problems because it prevents using
  pieces of code exclusively available under one license with pieces of code
  exclusively available under the other in the same binary. 
  .
- You are going to build ZFS using DKMS in such a way that they are not going to
+ You are going to build OpenZFS using DKMS in such a way that they are not going to
  be built into one monolithic binary. Please be aware that distributing both of
  the binaries in the same media (disk images, virtual appliances, etc) may
  lead to infringing.
diff -Nru zfs-linux-2.0.3/debian/zfsutils-linux.postinst zfs-linux-2.0.3/debian/zfsutils-linux.postinst
--- zfs-linux-2.0.3/debian/zfsutils-linux.postinst	2021-02-12 16:30:01.000000000 +0800
+++ zfs-linux-2.0.3/debian/zfsutils-linux.postinst	2021-03-31 19:46:36.000000000 +0800
@@ -1,5 +1,6 @@
 #!/bin/sh
 set -e
+
 # The hostname and hostid of the last system to access a ZFS pool are stored in
 # the ZFS pool itself. A pool is foreign if, during `zpool import`, the
 # current hostname and hostid are different than the stored values thereof.
diff -Nru zfs-linux-2.0.3/debian/zfs-zed.postinst zfs-linux-2.0.3/debian/zfs-zed.postinst
--- zfs-linux-2.0.3/debian/zfs-zed.postinst	2021-02-12 16:30:01.000000000 +0800
+++ zfs-linux-2.0.3/debian/zfs-zed.postinst	2021-03-31 09:33:47.000000000 +0800
@@ -8,7 +8,7 @@
 while read -r file ; do
     etcfile="${etcd}/${file}"
     [ -e "${etcfile}" ] && continue
-    ln -s "${zedd}/${file}" "${etcfile}"
+    ln -sfT "${zedd}/${file}" "${etcfile}"
 done < "${zedd}/DEFAULT-ENABLED"
 
 # remove the overrides created in prerm
diff -Nru zfs-linux-2.0.3/debian/zfs-zed.postrm zfs-linux-2.0.3/debian/zfs-zed.postrm
--- zfs-linux-2.0.3/debian/zfs-zed.postrm	1970-01-01 08:00:00.000000000 +0800
+++ zfs-linux-2.0.3/debian/zfs-zed.postrm	2021-04-05 10:04:14.000000000 +0800
@@ -0,0 +1,17 @@
+#!/bin/sh
+set -e
+
+zedd="/usr/lib/zfs-linux/zed.d"
+etcd="/etc/zfs/zed.d"
+
+if [ "$1" = "purge" ] && [ -d "$etcd" ] ; then
+    # remove the overrides created in prerm
+    find "${etcd}" -maxdepth 1 -lname '/dev/null' -delete
+    # remove any dangling symlinks to old zedlets
+    find "${etcd}" -maxdepth 1 -lname "${zedd}/*" -xtype l  -delete
+    # clean up any empty directories
+    ( rmdir "$etcd" && rmdir "/etc/zfs" ) || true
+fi
+
+#DEBHELPER#
+
diff -Nru zfs-linux-2.0.3/debian/zfs-zed.prerm zfs-linux-2.0.3/debian/zfs-zed.prerm
--- zfs-linux-2.0.3/debian/zfs-zed.prerm	2021-02-12 16:30:01.000000000 +0800
+++ zfs-linux-2.0.3/debian/zfs-zed.prerm	2021-03-31 09:33:47.000000000 +0800
@@ -7,8 +7,8 @@
 if [ "$1" != "failed-upgrade" ] && [ -d "${etcd}" ] && [ -d "${zedd}" ] ; then
     while read -r file ; do
         etcfile="${etcd}/${file}"
-        [ -e "${etcfile}" ] && continue
-        ln -s /dev/null "${etcfile}"
+        ( [ -L "${etcfile}" ] || [ -e "${etcfile}" ] ) && continue
+        ln -sT /dev/null "${etcfile}"
     done < "${zedd}/DEFAULT-ENABLED"
 fi
 
diff -Nru zfs-linux-2.0.3/debian/changelog zfs-linux-2.0.3/debian/changelog
--- zfs-linux-2.0.3/debian/changelog	2021-03-30 14:47:05.000000000 +0800
+++ zfs-linux-2.0.3/debian/changelog	2021-04-05 10:35:25.000000000 +0800
@@ -1,3 +1,42 @@
+zfs-linux (2.0.3-6) unstable; urgency=medium
+
+  [ наб ]
+  * Fix broken purge detection in zfs-zed.postrm. (Closes: #986374)
+  * /u/l/z-l/{scrub, trim}: enhancements including proper handling for pools
+    with spaces in name. (Closes: #986380)
+
+  [ Mo Zhou ]
+  * Really install README.Debian into every binary package.
+
+ -- Mo Zhou <lumin@debian.org>  Mon, 05 Apr 2021 10:35:25 +0800
+
+zfs-linux (2.0.3-5) unstable; urgency=medium
+
+  [ наб ]
+  * Fix d/rules that README.Debian is installed for libnvpair3linux only.
+    (Closes: #986299)
+
+ -- Mo Zhou <lumin@debian.org>  Sat, 03 Apr 2021 17:55:51 +0800
+
+zfs-linux (2.0.3-4) unstable; urgency=medium
+
+  * Revise the auto-{scrub,trim} scripts and describe usage in README.Debian.
+    (See #986185 and thanks for наб)
+
+ -- Mo Zhou <lumin@debian.org>  Fri, 02 Apr 2021 21:35:32 +0800
+
+zfs-linux (2.0.3-3) unstable; urgency=medium
+
+  * Use zfs property for periodical-{scrub,trim} cron jobs.
+    This fixes the exclusive "nvme-only" behavior of the auto-trim script.
+    P.S. In this way, we will not have to store configs in /etc/default/zfs,
+    or use debconf database as a registry. Plus, this also allows us to
+    configure the cron job behavior per zpool.
+    (Closes: #986185)
+  * Fix i386 autopkgtest failure due to missing dependency.
+
+ -- Mo Zhou <lumin@debian.org>  Fri, 02 Apr 2021 14:34:15 +0800
+
 zfs-linux (2.0.3-2) unstable; urgency=medium
 
   [ Aron Xu ]
diff -Nru zfs-linux-2.0.3/debian/README.Debian zfs-linux-2.0.3/debian/README.Debian
--- zfs-linux-2.0.3/debian/README.Debian	2021-02-06 00:26:58.000000000 +0800
+++ zfs-linux-2.0.3/debian/README.Debian	2021-04-02 20:46:58.000000000 +0800
@@ -1,6 +1,8 @@
 zfs-linux for Debian
+====================
 
 1. Feature flags are enabled by default.
+----------------------------------------
 
 This means that ZoL will now create pools in a way that is
 incompatible with Solaris. If you need Solaris compatibility,
@@ -11,7 +13,10 @@
 ZoL remains compatible with all other ZFS implementations derived
 from Illumos.
 
+ -- Aron Xu <aron@debian.org>  Sat, 3 Aug 2013 03:23:11 +0800
+
 2. Use zfs-initramfs with caution.
+----------------------------------
 
 Debian Installer's root installation support is being worked on,
 and zfs-initramfs is included here but still needs to be tested
@@ -19,3 +24,44 @@
 loss of data, please use zfs-initramfs with caution.
 
  -- Aron Xu <aron@debian.org>  Sat, 3 Aug 2013 03:23:11 +0800
+
+3. Per-zpool config for the periodic-{scrub,trim} cron jobs is supported.
+-------------------------------------------------------------------------
+
+ Starting with 2.0.3-3, the auto-scrub and auto-trim cron jobs will use the
+ "org.debian:periodic-{scrub,trim}" user properties on the pool's root dataset
+ to determine if they should do anything; accepted values are:
+
+	* "auto"    ‒ same as unset, use default checks
+	* "enable"  ‒ always scrub/trim automatically
+	* "disable" ‒ never scrub/trim automatically
+
+ [ Periodic Scrubbing ]
+
+ Scrubbing storage pool data is a routine maintenance operation that check all
+ data against known checksums, and fix early problems like bit riots. This
+ operation is scheduled with low priority in the background, and usually does
+ not have big impact on performance when the pool is not heavily utilized.
+
+ If you would like to scrub all pools periodically, no operation is required
+ as periodic scrub is already the default behavior. Or if you want to
+ make it explicit for a zpool named "tank":
+
+  # zfs set org.debian:periodic-scrub=auto tank
+
+ By default scrub jobs are scheduled on every first Sunday of month.
+
+ [ Periodic Trimming ]
+
+ Some SSD devices require proper scheduling of TRIM commands to maintain best
+ performance. Currently the auto-trim will only trim if the zpool consists of
+ /only/ NVMe drives, since some SATA 2 and SATA 3.0 SSDs will hang or crash
+ during large TRIMs (See #983086). If your zpools with SATA SSDs had no
+ problems trimming before, you will need to run the following command to
+ restore the previous behaviour (always trim a pool):
+
+  # zfs set org.debian:periodic-trim=enable sata-pool
+
+ TRIM jobs are scheduled on every first Sunday of month by default.
+
+ -- Mo Zhou <lumin@debian.org> Fri, 2 Apr 2021 12:23:00 +0000
diff -Nru zfs-linux-2.0.3/debian/rules zfs-linux-2.0.3/debian/rules
--- zfs-linux-2.0.3/debian/rules	2021-02-06 00:26:58.000000000 +0800
+++ zfs-linux-2.0.3/debian/rules	2021-04-05 10:33:52.000000000 +0800
@@ -209,7 +209,8 @@
 	dh_installsystemd --name zfs-zed
 
 override_dh_installdocs:
-	dh_installdocs
+	dh_installdocs -A
+	dh_installdocs -a -i -A debian/README.Debian
 ifeq (,$(findstring nodoc, $(DEB_BUILD_OPTIONS)))
 	http_proxy='127.0.0.1:9' sphinx-build -N -bhtml "$(CURDIR)/contrib/pyzfs/docs/source/" debian/pyzfs-doc/usr/share/doc/pyzfs-doc/html/
 endif
diff -Nru zfs-linux-2.0.3/debian/tests/control zfs-linux-2.0.3/debian/tests/control
--- zfs-linux-2.0.3/debian/tests/control	2021-03-30 14:47:05.000000000 +0800
+++ zfs-linux-2.0.3/debian/tests/control	2021-04-02 14:10:12.000000000 +0800
@@ -10,6 +10,7 @@
 Restrictions: needs-root, allow-stderr
 Depends: dkms,
          linux-headers-amd64 [amd64],
+         linux-headers-686 [i386],
          linux-headers-arm64 [arm64],
          linux-headers-powerpc64le [ppc64el],
          linux-headers-s390x [s390x]
@@ -18,6 +19,7 @@
 Restrictions: needs-root, allow-stderr,
 Depends: fakeroot,
          linux-headers-amd64 [amd64],
+         linux-headers-686 [i386],
          linux-headers-arm64 [arm64],
          linux-headers-powerpc64le [ppc64el],
          linux-headers-s390x [s390x],
diff -Nru zfs-linux-2.0.3/debian/tree/zfsutils-linux/usr/lib/zfs-linux/scrub zfs-linux-2.0.3/debian/tree/zfsutils-linux/usr/lib/zfs-linux/scrub
--- zfs-linux-2.0.3/debian/tree/zfsutils-linux/usr/lib/zfs-linux/scrub	2021-03-30 14:47:05.000000000 +0800
+++ zfs-linux-2.0.3/debian/tree/zfsutils-linux/usr/lib/zfs-linux/scrub	2021-04-05 10:33:55.000000000 +0800
@@ -1,13 +1,45 @@
 #!/bin/sh -eu
 
-# Scrub all healthy pools that are not already scrubbing.
+# directly exit successfully when zfs module is not loaded
+if ! [ -d /sys/module/zfs ]; then
+	exit 0
+fi
+
+# [auto] / enable / disable
+PROPERTY_NAME="org.debian:periodic-scrub"
+
+get_property () {
+	# Detect the ${PROPERTY_NAME} property on a given pool.
+	# We are abusing user-defined properties on the root dataset,
+	# since they're not available on pools https://github.com/openzfs/zfs/pull/11680
+	# TODO: use zpool user-defined property when such feature is available.
+	pool="$1"
+	zfs get -H -o value "${PROPERTY_NAME}" "${pool}" 2>/dev/null || return 1
+}
+
+scrub_if_not_scrub_in_progress () {
+	pool="$1"
+	if ! zpool status "${pool}" | grep -q "scrub in progress"; then
+		# Ignore errors and continue with scrubbing other pools.
+		zpool scrub "${pool}" || true
+	fi
+}
+
+# Scrub all healthy pools that are not already scrubbing as per their configs.
 zpool list -H -o health,name 2>&1 | \
-	awk '$1 ~ /^ONLINE/ { print $2; }' | \
+	awk -F'\t' '$1 == "ONLINE" {print $2}' | \
 while read pool
 do
-	if ! zpool status "$pool" | grep -q "scrub in progress"
-	then
-		# Ignore errors and continue with scrubbing other pools.
-		zpool scrub "$pool" || true
+	# read user-defined config
+	ret=$(get_property "${pool}")
+	if [ $? -ne 0 ] || [ "disable" = "${ret}" ]; then
+		:
+	elif [ "-" = "${ret}" ] || [ "auto" = "${ret}" ] || [ "enable" = "${ret}" ]; then
+		scrub_if_not_scrub_in_progress "${pool}"
+	else
+		cat > /dev/stderr <<EOF
+$0: [WARNING] illegal value "${ret}" for property "${PROPERTY_NAME}" of ZFS dataset "${pool}".
+$0: Acceptable choices for this property are: auto, enable, disable. The default is auto.
+EOF
 	fi
 done
diff -Nru zfs-linux-2.0.3/debian/tree/zfsutils-linux/usr/lib/zfs-linux/trim zfs-linux-2.0.3/debian/tree/zfsutils-linux/usr/lib/zfs-linux/trim
--- zfs-linux-2.0.3/debian/tree/zfsutils-linux/usr/lib/zfs-linux/trim	2021-03-30 14:47:05.000000000 +0800
+++ zfs-linux-2.0.3/debian/tree/zfsutils-linux/usr/lib/zfs-linux/trim	2021-04-05 10:33:55.000000000 +0800
@@ -1,7 +1,24 @@
-#!/bin/bash -e
+#!/bin/sh -eu
 
-function trim_if_not_already_trimming() {
-	local pool="$1"
+# directly exit successfully when zfs module is not loaded
+if ! [ -d /sys/module/zfs ]; then
+	exit 0
+fi
+
+# [auto] / enable / disable
+PROPERTY_NAME="org.debian:periodic-trim"
+
+get_property () {
+	# Detect the ${PROPERTY_NAME} property on a given pool.
+	# We are abusing user-defined properties on the root dataset,
+	# since they're not available on pools https://github.com/openzfs/zfs/pull/11680
+	# TODO: use zpool user-defined property when such feature is available.
+	pool="$1"
+	zfs get -H -o value "${PROPERTY_NAME}" "${pool}" 2>/dev/null || return 1
+}
+
+trim_if_not_already_trimming () {
+	pool="$1"
 	if ! zpool status "${pool}" | grep -q "trimming"; then
 		# Ignore errors (i.e. HDD pools),
 		# and continue with trimming other pools.
@@ -9,32 +26,35 @@
 	fi
 }
 
-function device_list_is_nvme_only() {
-	# parse arguments
-	local devices=("$@")
-	# check devices in the list one-by-one
-	for dev in ${devices[@]}; do
-		if !(echo ${dev} | grep -q /dev/nvme); then
-			return 1
-		fi
-	done
-	return 0
-	# this function returns 0 or 1
-}
-
-function zpool_is_nvme_only() {
-	# parse arguments
-	local zpool=$1
+zpool_is_nvme_only () {
+	zpool=$1
 	# get a list of devices attached to the specified zpool
-	local devices=$(zpool list -vHPL ${zpool} | awk '/\/dev\//{print $1}')
-	# are they all nvme drives?
-	device_list_is_nvme_only ${devices[@]} && return 0 || return 1
-	# this function returns 0 or 1
+	zpool list -vHPL "${zpool}" |
+		awk -F'\t' '$2 ~ /^\/dev\// {
+			if($2 !~ /^\/dev\/nvme/)
+				exit 1
+		}'
 }
 
-# only automatically trim the nvme-only pools.
-ZPOOLS=$(zpool list -H | awk '{print $1}')
-for pool in ${ZPOOLS[@]}; do
-	zpool_is_nvme_only "${pool}" && \
+# TRIM all healthy pools that are not already trimming as per their configs.
+zpool list -H -o health,name 2>&1 | \
+	awk -F'\t' '$1 == "ONLINE" {print $2}' | \
+while read pool
+do
+	# read user-defined config
+	ret=$(get_property "${pool}")
+	if [ $? -ne 0 ] || [ "disable" = "${ret}" ]; then
+		:
+	elif [ "enable" = "${ret}" ]; then
 		trim_if_not_already_trimming "${pool}"
+	elif [ "-" = "${ret}" ] || [ "auto" = "${ret}" ]; then
+		if zpool_is_nvme_only "${pool}"; then
+			trim_if_not_already_trimming "${pool}"
+		fi
+	else
+		cat > /dev/stderr <<EOF
+$0: [WARNING] illegal value "${ret}" for property "${PROPERTY_NAME}" of ZFS dataset "${pool}".
+$0: Acceptable choices for this property are: auto, enable, disable. The default is auto.
+EOF
+	fi
 done
diff -Nru zfs-linux-2.0.3/debian/zfs-zed.postrm zfs-linux-2.0.3/debian/zfs-zed.postrm
--- zfs-linux-2.0.3/debian/zfs-zed.postrm	2021-03-20 21:20:14.000000000 +0800
+++ zfs-linux-2.0.3/debian/zfs-zed.postrm	2021-04-05 10:04:14.000000000 +0800
@@ -4,7 +4,7 @@
 zedd="/usr/lib/zfs-linux/zed.d"
 etcd="/etc/zfs/zed.d"
 
-if [ "$1" == "purge" ] && [ -d "$etcd" ] ; then
+if [ "$1" = "purge" ] && [ -d "$etcd" ] ; then
     # remove the overrides created in prerm
     find "${etcd}" -maxdepth 1 -lname '/dev/null' -delete
     # remove any dangling symlinks to old zedlets

--- End Message ---
--- Begin Message ---
Hi,

On 14-04-2021 17:52, Paul Gevers wrote:
> We can close
> it when we confirm ci worked.

It works, so, let's close this bug as we don't need to do anything from
our side.

Paul

Attachment: OpenPGP_signature
Description: OpenPGP digital signature


--- End Message ---

Reply to: