From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [212.224.123.68]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by lists.proxmox.com (Postfix) with ESMTPS id EBF8289674 for ; Mon, 17 Oct 2022 20:10:43 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id B993321E08 for ; Mon, 17 Oct 2022 20:10:13 +0200 (CEST) Received: from proxmox-new.maurer-it.com (proxmox-new.maurer-it.com [94.136.29.106]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by firstgate.proxmox.com (Proxmox) with ESMTPS for ; Mon, 17 Oct 2022 20:10:11 +0200 (CEST) Received: from proxmox-new.maurer-it.com (localhost.localdomain [127.0.0.1]) by proxmox-new.maurer-it.com (Proxmox) with ESMTP id 1B53344A51 for ; Mon, 17 Oct 2022 20:10:11 +0200 (CEST) From: Stoiko Ivanov To: pve-devel@lists.proxmox.com Date: Mon, 17 Oct 2022 20:09:51 +0200 Message-Id: <20221017180952.1574207-2-s.ivanov@proxmox.com> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20221017180952.1574207-1-s.ivanov@proxmox.com> References: <20221017180952.1574207-1-s.ivanov@proxmox.com> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-SPAM-LEVEL: Spam detection results: 0 AWL 0.052 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment KAM_LOTSOFHASH 0.25 Emails with lots of hash-like gibberish SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record Subject: [pve-devel] [PATCH zfsonlinux 1/2] cherry-pick a few patches from zfs-2.1.7-staging X-BeenThere: pve-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox VE development discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 17 Oct 2022 18:10:44 -0000 While checking the current state of 2.1.6 we noticed that there were some changes in debian-upstream [0] resulting from a bug-report in zfs-upstream [1]. Our packages should be unaffected (they do not ship the init-scripts in the first place). Since the issue was fixed by zfs-upstream already on the zfs-2.1.7-staging branch we should include it as well as it might save users, who somehow got debian-upstream's zfs-packages installed on PVE some trouble. The other 2 changes seem small and isolated enough so including them as well. [0] https://salsa.debian.org/zfsonlinux-team/zfs/-/commits/master [1] https://github.com/openzfs/zfs/issues/14010 Signed-off-by: Stoiko Ivanov --- ...ramfs-use-mount.zfs-instead-of-mount.patch | 74 +++++++++++++++++++ .../0013-etc-mask-zfs-load-key.service.patch | 37 ++++++++++ ...ould-have-its-argument-list-marked-v.patch | 40 ++++++++++ debian/patches/series | 3 + 4 files changed, 154 insertions(+) create mode 100644 debian/patches/0012-initramfs-use-mount.zfs-instead-of-mount.patch create mode 100644 debian/patches/0013-etc-mask-zfs-load-key.service.patch create mode 100644 debian/patches/0014-kcfpool_alloc-should-have-its-argument-list-marked-v.patch diff --git a/debian/patches/0012-initramfs-use-mount.zfs-instead-of-mount.patch b/debian/patches/0012-initramfs-use-mount.zfs-instead-of-mount.patch new file mode 100644 index 00000000..84b9c7df --- /dev/null +++ b/debian/patches/0012-initramfs-use-mount.zfs-instead-of-mount.patch @@ -0,0 +1,74 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Damian Szuberski +Date: Tue, 12 Apr 2022 00:51:23 +0200 +Subject: [PATCH] initramfs: use `mount.zfs` instead of `mount` + +A followup to d7a67402a85252e163aa8a9b69e7eda499db8c61 + +For `mount -t zfs -o opts ds mp` command line +some implementations of `mount(8)`, e. g. Busybox in Debian +work as follows: + +``` +newfstatat(AT_FDCWD, "ds", 0x7fff826f4ab0, 0) = -1 +mount("ds", "mp", "zfs", MS_SILENT, NULL) = 0 +``` + +The logic above skips completely `mount.zfs` and prevents us +from reading filesystem properties and applying mount options. + +For comparison, the coreutils `mount(8)` implementation does: + +``` +openat(AT_FDCWD, "/proc/filesystems", O_RDONLY|O_CLOEXEC) = 3 +// figure out that zfs is a `nodev` filesystem and look for a helper +newfstatat(AT_FDCWD, "/sbin/mount.zfs" ...) = 0 +execve("/sbin/mount.zfs" ...) = 0 +``` + +Using `mount.zfs` in initramfs would help circumvent deficiencies +of some of `mount(8)` implementations. `mount -t zfs` translates +to `mount.zfs` invocation, except for cases when explicitly disabled +by `-i`. + +Reviewed-by: Brian Behlendorf +Signed-off-by: szubersk +Closes #13305 +(cherry picked from commit 35d81a75a8c13e011e19fd12cf553d9c5849386e) +(cherry picked from commit 4d22befde60087cbc6174122863353903df1d935) +Signed-off-by: Stoiko Ivanov +--- + contrib/initramfs/scripts/zfs | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/contrib/initramfs/scripts/zfs b/contrib/initramfs/scripts/zfs +index 814547b6f..9169adf5f 100644 +--- a/contrib/initramfs/scripts/zfs ++++ b/contrib/initramfs/scripts/zfs +@@ -326,7 +326,7 @@ mount_fs() + + # Need the _original_ datasets mountpoint! + mountpoint=$(get_fs_value "$fs" mountpoint) +- ZFS_CMD="mount -o zfsutil -t zfs" ++ ZFS_CMD="mount.zfs -o zfsutil" + if [ "$mountpoint" = "legacy" ] || [ "$mountpoint" = "none" ]; then + # Can't use the mountpoint property. Might be one of our + # clones. Check the 'org.zol:mountpoint' property set in +@@ -349,7 +349,7 @@ mount_fs() + # If it's not a legacy filesystem, it can only be a + # native one... + if [ "$mountpoint" = "legacy" ]; then +- ZFS_CMD="mount -t zfs" ++ ZFS_CMD="mount.zfs" + fi + fi + +@@ -915,7 +915,7 @@ mountroot() + echo " not specified on the kernel command line." + echo "" + echo "Manually mount the root filesystem on $rootmnt and then exit." +- echo "Hint: Try: mount -o zfsutil -t zfs ${ZFS_RPOOL-rpool}/ROOT/system $rootmnt" ++ echo "Hint: Try: mount.zfs -o zfsutil ${ZFS_RPOOL-rpool}/ROOT/system $rootmnt" + shell + fi + diff --git a/debian/patches/0013-etc-mask-zfs-load-key.service.patch b/debian/patches/0013-etc-mask-zfs-load-key.service.patch new file mode 100644 index 00000000..c8bb20d5 --- /dev/null +++ b/debian/patches/0013-etc-mask-zfs-load-key.service.patch @@ -0,0 +1,37 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?=D0=BD=D0=B0=D0=B1?= +Date: Thu, 13 Oct 2022 00:29:21 +0200 +Subject: [PATCH] etc: mask zfs-load-key.service +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Otherwise, systemd-sysv-generator will generate a service equivalent +that breaks the boot: under systemd this is covered by +zfs-mount-generator + +We already do this for zfs-import.service, and other init scripts are +suppressed automatically by the "actual" .service files + +Fixes: commit f04b97620059d08b37d9e80ada397e742bb2f311 ("Add init script + to load keys") +Reviewed-by: George Melikov +Reviewed-by: Brian Behlendorf +Signed-off-by: Ahelenia ZiemiaƄska +Closes #14010 +Closes #14019 +(cherry picked from commit 8cf59e97c4fc7b70723313953ceb0f777ca3bcdf) +Signed-off-by: Stoiko Ivanov +--- + etc/systemd/system/Makefile.am | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/etc/systemd/system/Makefile.am b/etc/systemd/system/Makefile.am +index 8e6baeb68..af3ae597c 100644 +--- a/etc/systemd/system/Makefile.am ++++ b/etc/systemd/system/Makefile.am +@@ -23,3 +23,4 @@ SUBSTFILES += $(systemdpreset_DATA) $(systemdunit_DATA) + install-data-hook: + $(MKDIR_P) "$(DESTDIR)$(systemdunitdir)" + ln -sf /dev/null "$(DESTDIR)$(systemdunitdir)/zfs-import.service" ++ ln -sf /dev/null "$(DESTDIR)$(systemdunitdir)/zfs-load-key.service" diff --git a/debian/patches/0014-kcfpool_alloc-should-have-its-argument-list-marked-v.patch b/debian/patches/0014-kcfpool_alloc-should-have-its-argument-list-marked-v.patch new file mode 100644 index 00000000..2bc6be02 --- /dev/null +++ b/debian/patches/0014-kcfpool_alloc-should-have-its-argument-list-marked-v.patch @@ -0,0 +1,40 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Richard Yao +Date: Wed, 12 Oct 2022 18:47:39 -0400 +Subject: [PATCH] kcfpool_alloc() should have its argument list marked void + +This error occurred when building on Gentoo with debugging enabled: + +zfs-kmod-2.1.6/work/zfs-2.1.6/module/icp/core/kcf_sched.c:1277:14: +error: a function declaration without a prototype is deprecated +in all versions of C [-Werror,-Wstrict-prototypes] + kcfpool_alloc() + ^ + void +1 error generated. + +This function is not present in master. + +Reviewed-by: Brian Behlendorf +Reviewed-by: Tony Hutter +Signed-off-by: Richard Yao +Closes #14023 +(cherry picked from commit b0bc882395ed37f60cf9612250cb99b1322cd458) +Signed-off-by: Stoiko Ivanov +--- + module/icp/core/kcf_sched.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/module/icp/core/kcf_sched.c b/module/icp/core/kcf_sched.c +index 81fd15f8e..fa44a4dbf 100644 +--- a/module/icp/core/kcf_sched.c ++++ b/module/icp/core/kcf_sched.c +@@ -1274,7 +1274,7 @@ kcf_aop_done(kcf_areq_node_t *areq, int error) + * Allocate the thread pool and initialize all the fields. + */ + static void +-kcfpool_alloc() ++kcfpool_alloc(void) + { + kcfpool = kmem_alloc(sizeof (kcf_pool_t), KM_SLEEP); + diff --git a/debian/patches/series b/debian/patches/series index d2770d39..b4367433 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -9,3 +9,6 @@ 0009-Patch-move-manpage-arcstat-1-to-arcstat-8.patch 0010-arcstat-Fix-integer-division-with-python3.patch 0011-arc-stat-summary-guard-access-to-l2arc-MFU-MRU-stats.patch +0012-initramfs-use-mount.zfs-instead-of-mount.patch +0013-etc-mask-zfs-load-key.service.patch +0014-kcfpool_alloc-should-have-its-argument-list-marked-v.patch -- 2.30.2