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 87E149155D for ; Mon, 29 Jan 2024 12:32:07 +0100 (CET) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 62D44149F0 for ; Mon, 29 Jan 2024 12:31:37 +0100 (CET) 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) server-digest SHA256) (No client certificate requested) by firstgate.proxmox.com (Proxmox) with ESMTPS for ; Mon, 29 Jan 2024 12:31:35 +0100 (CET) Received: from proxmox-new.maurer-it.com (localhost.localdomain [127.0.0.1]) by proxmox-new.maurer-it.com (Proxmox) with ESMTP id 99FF7492E1 for ; Mon, 29 Jan 2024 12:31:35 +0100 (CET) From: Stefan Lendl To: pve-devel@lists.proxmox.com Date: Mon, 29 Jan 2024 12:16:15 +0100 Message-ID: <20240129111612.431092-4-s.lendl@proxmox.com> X-Mailer: git-send-email 2.43.0 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-SPAM-LEVEL: Spam detection results: 0 AWL 0.031 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% DMARC_MISSING 0.1 Missing DMARC policy KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record T_SCC_BODY_TEXT_LINE -0.01 - URIBL_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to URIBL was blocked. See http://wiki.apache.org/spamassassin/DnsBlocklists#dnsbl-block for more information. [makefile.am, opensource.org, common.run] Subject: [pve-devel] [PATCH zfsonlinux] Fix #5101: exports with sharenfs remain after zfs mount -a 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, 29 Jan 2024 11:32:07 -0000 When running `zfs mount -a`, prevent the exported datasets (with sharenfs) to be truncated (unexported). Adds tests to verify shares persist after mount -a Signed-off-by: Stefan Lendl --- This was merged upstream via https://github.com/openzfs/zfs/pull/15660 ...do-not-truncate-shares-not-zfs-mount.patch | 131 ++++++++++++++++++ debian/patches/series | 1 + 2 files changed, 132 insertions(+) create mode 100644 debian/patches/0012-fix-mount-do-not-truncate-shares-not-zfs-mount.patch diff --git a/debian/patches/0012-fix-mount-do-not-truncate-shares-not-zfs-mount.patch b/debian/patches/0012-fix-mount-do-not-truncate-shares-not-zfs-mount.patch new file mode 100644 index 0000000..ab01e62 --- /dev/null +++ b/debian/patches/0012-fix-mount-do-not-truncate-shares-not-zfs-mount.patch @@ -0,0 +1,131 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Stefan Lendl <1321542+stfl@users.noreply.github.com> +Date: Fri, 12 Jan 2024 21:05:11 +0100 +Subject: [PATCH] fix(mount): do not truncate shares not zfs mount + +When running zfs share -a resetting the exports.d/zfs.exports makes +sense the get a clean state. +Truncating was also called with zfs mount which would not populate the +file again. +Add test to verify shares persist after mount -a. + +Reviewed-by: Brian Behlendorf +Signed-off-by: Stefan Lendl +Closes #15607 +Closes #15660 +--- + cmd/zfs/zfs_main.c | 3 +- + tests/runfiles/common.run | 3 +- + tests/zfs-tests/tests/Makefile.am | 1 + + .../zfs_share/zfs_share_after_mount.ksh | 62 +++++++++++++++++++ + 4 files changed, 67 insertions(+), 2 deletions(-) + create mode 100755 tests/zfs-tests/tests/functional/cli_root/zfs_share/zfs_share_after_mount.ksh + +diff --git a/cmd/zfs/zfs_main.c b/cmd/zfs/zfs_main.c +index 9939f206a..f67f6114d 100644 +--- a/cmd/zfs/zfs_main.c ++++ b/cmd/zfs/zfs_main.c +@@ -7234,7 +7234,8 @@ share_mount(int op, int argc, char **argv) + pthread_mutex_init(&share_mount_state.sm_lock, NULL); + + /* For a 'zfs share -a' operation start with a clean slate. */ +- zfs_truncate_shares(NULL); ++ if (op == OP_SHARE) ++ zfs_truncate_shares(NULL); + + /* + * libshare isn't mt-safe, so only do the operation in parallel +diff --git a/tests/runfiles/common.run b/tests/runfiles/common.run +index f6e5367f5..a600140ea 100644 +--- a/tests/runfiles/common.run ++++ b/tests/runfiles/common.run +@@ -316,7 +316,8 @@ tags = ['functional', 'cli_root', 'zfs_set'] + [tests/functional/cli_root/zfs_share] + tests = ['zfs_share_001_pos', 'zfs_share_002_pos', 'zfs_share_003_pos', + 'zfs_share_004_pos', 'zfs_share_006_pos', 'zfs_share_008_neg', +- 'zfs_share_010_neg', 'zfs_share_011_pos', 'zfs_share_concurrent_shares'] ++ 'zfs_share_010_neg', 'zfs_share_011_pos', 'zfs_share_concurrent_shares', ++ 'zfs_share_after_mount'] + tags = ['functional', 'cli_root', 'zfs_share'] + + [tests/functional/cli_root/zfs_snapshot] +diff --git a/tests/zfs-tests/tests/Makefile.am b/tests/zfs-tests/tests/Makefile.am +index c20b428db..3798194f0 100644 +--- a/tests/zfs-tests/tests/Makefile.am ++++ b/tests/zfs-tests/tests/Makefile.am +@@ -912,6 +912,7 @@ nobase_dist_datadir_zfs_tests_tests_SCRIPTS += \ + functional/cli_root/zfs_share/zfs_share_012_pos.ksh \ + functional/cli_root/zfs_share/zfs_share_013_pos.ksh \ + functional/cli_root/zfs_share/zfs_share_concurrent_shares.ksh \ ++ functional/cli_root/zfs_share/zfs_share_after_mount.ksh \ + functional/cli_root/zfs_snapshot/cleanup.ksh \ + functional/cli_root/zfs_snapshot/setup.ksh \ + functional/cli_root/zfs_snapshot/zfs_snapshot_001_neg.ksh \ +diff --git a/tests/zfs-tests/tests/functional/cli_root/zfs_share/zfs_share_after_mount.ksh b/tests/zfs-tests/tests/functional/cli_root/zfs_share/zfs_share_after_mount.ksh +new file mode 100755 +index 000000000..0d4b66ea8 +--- /dev/null ++++ b/tests/zfs-tests/tests/functional/cli_root/zfs_share/zfs_share_after_mount.ksh +@@ -0,0 +1,62 @@ ++#!/bin/ksh -p ++# ++# CDDL HEADER START ++# ++# The contents of this file are subject to the terms of the ++# Common Development and Distribution License (the "License"). ++# You may not use this file except in compliance with the License. ++# ++# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE ++# or https://opensource.org/licenses/CDDL-1.0. ++# See the License for the specific language governing permissions ++# and limitations under the License. ++# ++# When distributing Covered Code, include this CDDL HEADER in each ++# file and include the License file at usr/src/OPENSOLARIS.LICENSE. ++# If applicable, add the following below this CDDL HEADER, with the ++# fields enclosed by brackets "[]" replaced with your own identifying ++# information: Portions Copyright [yyyy] [name of copyright owner] ++# ++# CDDL HEADER END ++# ++ ++# ++# Copyright (c) 2023 by Proxmox. All rights reserved. ++# ++ ++. $STF_SUITE/include/libtest.shlib ++ ++# DESCRIPTION: ++# Verify that nfs shares persist after zfs mount -a ++# ++# STRATEGY: ++# 1. Verify that the filesystem is not shared. ++# 2. Enable the 'sharenfs' property ++# 3. Verify filesystem is shared ++# 4. Invoke 'zfs mount -a' ++# 5. Verify filesystem is still shared ++ ++verify_runnable "global" ++ ++function cleanup ++{ ++ log_must zfs set sharenfs=off $TESTPOOL/$TESTFS ++ is_shared $TESTPOOL/$TESTFS && \ ++ log_must unshare_fs $TESTPOOL/$TESTFS ++ log_must zfs share -a ++} ++ ++ ++log_onexit cleanup ++ ++cleanup ++ ++log_must zfs set sharenfs="on" $TESTPOOL/$TESTFS ++log_must is_shared $TESTPOOL/$TESTFS ++log_must is_exported $TESTPOOL/$TESTFS ++ ++log_must zfs mount -a ++log_must is_shared $TESTPOOL/$TESTFS ++log_must is_exported $TESTPOOL/$TESTFS ++ ++log_pass "Verify that nfs shares persist after zfs mount -a" diff --git a/debian/patches/series b/debian/patches/series index 35f81d1..e9b5ce0 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -9,3 +9,4 @@ 0009-arc-stat-summary-guard-access-to-l2arc-MFU-MRU-stats.patch 0010-Fix-nfs_truncate_shares-without-etc-exports.d.patch 0011-zpool-status-tighten-bounds-for-noalloc-stat-availab.patch +0012-fix-mount-do-not-truncate-shares-not-zfs-mount.patch -- 2.43.0