Compare commits
31 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 66ef8d3dc8 | |||
| 0471bf2222 | |||
| 592bf54c1d | |||
| d5320c35ef | |||
| daea70c06f | |||
| d2d19b30ac | |||
| 453933b504 | |||
| 7c44e0fd4f | |||
| 846641b44e | |||
| 7c3580f1e2 | |||
| 406e3116ab | |||
| 4e4e9f07b7 | |||
| c40521f90e | |||
| 815c0cb231 | |||
| c636d46615 | |||
| 9d8f7eac7e | |||
| 3e7179aab5 | |||
| cf62ae92d0 | |||
| 1bc51c3067 | |||
| ba79ebf386 | |||
| a7a04bbd41 | |||
| dcf2989454 | |||
| 88588cfead | |||
| 1995e62236 | |||
| ab835eff0f | |||
| b0c4d8ac0b | |||
| f4e2c4ae29 | |||
| 4584ec1155 | |||
| 5ea8a38968 | |||
| 7a95e010b1 | |||
| f799169849 |
@@ -0,0 +1,7 @@
|
||||
/*.build
|
||||
/*.buildinfo
|
||||
/*.changes
|
||||
/*.deb
|
||||
/*.dsc
|
||||
/*.tar*
|
||||
/zfs-utils-*.*/
|
||||
@@ -1,82 +1,93 @@
|
||||
include /usr/share/dpkg/default.mk
|
||||
# source form https://github.com/zfsonlinux/
|
||||
|
||||
ZFSPKG=debian
|
||||
ZFSVER != dpkg-parsechangelog -l ${ZFSPKG}/changelog -Sversion | cut -d- -f1
|
||||
ZFSPKGVER != dpkg-parsechangelog -l ${ZFSPKG}/changelog -Sversion
|
||||
ZFSDIR=zfs-linux_${ZFSVER}
|
||||
ZFSSRC=upstream
|
||||
PACKAGE = zfs-linux
|
||||
|
||||
ZFS_DEB1= libnvpair3linux_${ZFSPKGVER}_amd64.deb
|
||||
SRCDIR = upstream
|
||||
BUILDDIR ?= $(PACKAGE)-$(DEB_VERSION_UPSTREAM)
|
||||
ORIG_SRC_TAR = $(PACKAGE)_$(DEB_VERSION_UPSTREAM).orig.tar.gz
|
||||
|
||||
ZFS_DEB1= libnvpair3linux_$(DEB_VERSION)_amd64.deb
|
||||
|
||||
ZFS_DEB_BINARY = \
|
||||
libpam-zfs_${ZFSPKGVER}_amd64.deb \
|
||||
libuutil3linux_${ZFSPKGVER}_amd64.deb \
|
||||
libzfs4linux_${ZFSPKGVER}_amd64.deb \
|
||||
libzfsbootenv1linux_${ZFSPKGVER}_amd64.deb \
|
||||
libzpool5linux_${ZFSPKGVER}_amd64.deb \
|
||||
zfs-test_${ZFSPKGVER}_amd64.deb \
|
||||
zfsutils-linux_${ZFSPKGVER}_amd64.deb \
|
||||
zfs-zed_${ZFSPKGVER}_amd64.deb
|
||||
libpam-zfs_$(DEB_VERSION)_amd64.deb \
|
||||
libuutil3linux_$(DEB_VERSION)_amd64.deb \
|
||||
libzfs4linux_$(DEB_VERSION)_amd64.deb \
|
||||
libzfsbootenv1linux_$(DEB_VERSION)_amd64.deb \
|
||||
libzpool5linux_$(DEB_VERSION)_amd64.deb \
|
||||
zfs-test_$(DEB_VERSION)_amd64.deb \
|
||||
zfsutils-linux_$(DEB_VERSION)_amd64.deb \
|
||||
zfs-zed_$(DEB_VERSION)_amd64.deb
|
||||
|
||||
ZFS_DBG_DEBS = $(patsubst %_${ZFSPKGVER}_amd64.deb, %-dbgsym_${ZFSPKGVER}_amd64.deb, ${ZFS_DEB1} ${ZFS_DEB_BINARY})
|
||||
ZFS_DBG_DEBS = $(patsubst %_$(DEB_VERSION)_amd64.deb, %-dbgsym_$(DEB_VERSION)_amd64.deb, $(ZFS_DEB1) $(ZFS_DEB_BINARY))
|
||||
|
||||
ZFS_DEB2= ${ZFS_DEB_BINARY} \
|
||||
libzfslinux-dev_${ZFSPKGVER}_amd64.deb \
|
||||
python3-pyzfs_${ZFSPKGVER}_amd64.deb \
|
||||
pyzfs-doc_${ZFSPKGVER}_all.deb \
|
||||
spl_${ZFSPKGVER}_all.deb \
|
||||
zfs-initramfs_${ZFSPKGVER}_all.deb
|
||||
DEBS= ${ZFS_DEB1} ${ZFS_DEB2} ${ZFS_DBG_DEBS}
|
||||
ZFS_DEB2= $(ZFS_DEB_BINARY) \
|
||||
libzfslinux-dev_$(DEB_VERSION)_amd64.deb \
|
||||
python3-pyzfs_$(DEB_VERSION)_amd64.deb \
|
||||
pyzfs-doc_$(DEB_VERSION)_all.deb \
|
||||
spl_$(DEB_VERSION)_all.deb \
|
||||
zfs-initramfs_$(DEB_VERSION)_all.deb
|
||||
DEBS= $(ZFS_DEB1) $(ZFS_DEB2) $(ZFS_DBG_DEBS)
|
||||
|
||||
ZFS_DSC = zfs-linux_${ZFSPKGVER}.dsc
|
||||
ZFS_DSC = zfs-linux_$(DEB_VERSION).dsc
|
||||
|
||||
all: deb
|
||||
.PHONY: deb
|
||||
deb: ${DEBS}
|
||||
.PHONY: dsc
|
||||
dsc: ${ZFS_DSC}
|
||||
|
||||
.PHONY: deb dsc
|
||||
deb: $(DEBS)
|
||||
|
||||
dsc:
|
||||
rm -rf *.dsc $(BUILDDIR)
|
||||
$(MAKE) $(ZFS_DSC)
|
||||
lintian $(ZFS_DSC)
|
||||
|
||||
# called from pve-kernel's Makefile to get patched sources
|
||||
.PHONY: kernel
|
||||
kernel: dsc
|
||||
dpkg-source -x ${ZFS_DSC} ../pkg-zfs
|
||||
${MAKE} -C ../pkg-zfs -f debian/rules adapt_meta_file
|
||||
kernel: $(ZFS_DSC)
|
||||
dpkg-source -x $(ZFS_DSC) ../pkg-zfs
|
||||
$(MAKE) -C ../pkg-zfs -f debian/rules adapt_meta_file
|
||||
|
||||
.PHONY: dinstall
|
||||
dinstall: ${DEBS}
|
||||
dpkg -i ${DEBS}
|
||||
dinstall: $(DEBS)
|
||||
dpkg -i $(DEBS)
|
||||
|
||||
.PHONY: submodule
|
||||
submodule:
|
||||
test -f "${ZFSSRC}/README.md" || git submodule update --init
|
||||
${ZFSSRC}/README.md: submodule
|
||||
test -f "$(SRCDIR)/README.md" || git submodule update --init
|
||||
|
||||
$(SRCDIR)/README.md: submodule
|
||||
|
||||
.PHONY: zfs
|
||||
zfs: ${DEBS}
|
||||
${ZFS_DEB2}: ${ZFS_DEB1}
|
||||
${ZFS_DEB1}: ${ZFSDIR}
|
||||
cd ${ZFSDIR}; dpkg-buildpackage -b -uc -us
|
||||
lintian ${DEBS}
|
||||
zfs: $(DEBS)
|
||||
$(ZFS_DEB2) $(ZFS_DBG_DEBS): $(ZFS_DEB1)
|
||||
$(ZFS_DEB1): $(BUILDDIR)
|
||||
cd $(BUILDDIR); dpkg-buildpackage -b -uc -us
|
||||
lintian $(DEBS)
|
||||
|
||||
${ZFS_DSC}: ${ZFSDIR}
|
||||
tar czf zfs-linux_${ZFSVER}.orig.tar.gz ${ZFSDIR}
|
||||
cd ${ZFSDIR}; dpkg-buildpackage -S -uc -us -d
|
||||
lintian $@
|
||||
$(ORIG_SRC_TAR): $(BUILDDIR)
|
||||
tar czf $(ORIG_SRC_TAR) --exclude="$(BUILDDIR)/debian" $(BUILDDIR)
|
||||
|
||||
${ZFSDIR}: ${ZFSSRC}/README.md ${ZFSSRC} ${ZFSPKG}
|
||||
rm -rf ${ZFSDIR} ${ZFSDIR}.tmp
|
||||
cp -a ${ZFSSRC} ${ZFSDIR}.tmp
|
||||
cp -a ${ZFSPKG} ${ZFSDIR}.tmp/debian
|
||||
mv ${ZFSDIR}.tmp ${ZFSDIR}
|
||||
$(ZFS_DSC): $(BUILDDIR) $(ORIG_SRC_TAR)
|
||||
cd $(BUILDDIR); dpkg-buildpackage -S -uc -us -d
|
||||
|
||||
sbuild: $(ZFS_DSC)
|
||||
sbuild $(ZFS_DSC)
|
||||
|
||||
$(BUILDDIR): $(SRCDIR)/README.md $(SRCDIR) debian
|
||||
rm -rf $@ $@.tmp
|
||||
cp -a $(SRCDIR) $@.tmp
|
||||
cp -a debian $@.tmp/debian
|
||||
mv $@.tmp $@
|
||||
|
||||
.PHONY: clean
|
||||
clean:
|
||||
rm -rf *~ *.deb *.changes *.buildinfo *.dsc *.orig.tar.* *.debian.tar.* ${ZFSDIR}
|
||||
rm -rf $(PACKAGE)-[0-9]*/
|
||||
rm -f *~ *.deb *.changes *.buildinfo *.build *.dsc *.orig.tar.* *.debian.tar.*
|
||||
|
||||
.PHONY: distclean
|
||||
distclean: clean
|
||||
|
||||
.PHONY: upload
|
||||
upload: ${DEBS}
|
||||
tar -cf - ${DEBS} | ssh repoman@repo.proxmox.com -- upload --product pve,pmg,pbs --dist bullseye --arch amd64
|
||||
upload: UPLOAD_DIST ?= $(DEB_DISTRIBUTION)
|
||||
upload: $(DEBS)
|
||||
tar -cf - $(DEBS) | ssh repoman@repo.proxmox.com -- upload --product pve,pmg,pbs --dist $(UPLOAD_DIST) --arch $(DEB_HOST_ARCH)
|
||||
|
||||
Vendored
+44
@@ -1,3 +1,47 @@
|
||||
zfs-linux (2.1.15-pve1) bullseye; urgency=medium
|
||||
|
||||
* update ZFS to 2.1.15
|
||||
|
||||
-- Proxmox Support Team <support@proxmox.com> Fri, 29 Mar 2024 15:18:31 +0100
|
||||
|
||||
zfs-linux (2.1.14-pve1) bullseye; urgency=medium
|
||||
|
||||
* update ZFS to 2.1.14
|
||||
|
||||
-- Proxmox Support Team <support@proxmox.com> Fri, 01 Dec 2023 13:47:16 +0100
|
||||
|
||||
zfs-linux (2.1.13-pve1) bookworm; urgency=medium
|
||||
|
||||
* update ZFS to 2.1.13
|
||||
|
||||
-- Proxmox Support Team <support@proxmox.com> Thu, 28 Sep 2023 12:22:28 +0200
|
||||
|
||||
zfs-linux (2.1.12-pve1) bookworm; urgency=medium
|
||||
|
||||
* update ZFS to 2.1.12
|
||||
|
||||
* zfs trim: avoid exit-failure if last pool isn't nvme-only
|
||||
|
||||
-- Proxmox Support Team <support@proxmox.com> Tue, 13 Jun 2023 15:25:16 +0200
|
||||
|
||||
zfs-linux (2.1.11-pve2) bookworm; urgency=medium
|
||||
|
||||
* re-build for Debian 12 Bookworm based releases
|
||||
|
||||
-- Proxmox Support Team <support@proxmox.com> Sat, 20 May 2023 19:32:04 +0200
|
||||
|
||||
zfs-linux (2.1.11-pve1) bullseye; urgency=medium
|
||||
|
||||
* update ZFS to 2.1.11
|
||||
|
||||
-- Proxmox Support Team <support@proxmox.com> Thu, 20 Apr 2023 09:30:53 +0200
|
||||
|
||||
zfs-linux (2.1.9-pve1) bullseye; urgency=medium
|
||||
|
||||
* update ZFS to 2.1.9
|
||||
|
||||
-- Proxmox Support Team <support@proxmox.com> Sat, 28 Jan 2023 15:03:22 +0100
|
||||
|
||||
zfs-linux (2.1.7-pve3) bullseye; urgency=medium
|
||||
|
||||
* backport a fix for as potentially hanging pipe when resizing it on recv
|
||||
|
||||
Vendored
+1
-1
@@ -203,7 +203,7 @@ Package: zfsutils-linux
|
||||
Section: contrib/admin
|
||||
Architecture: linux-any
|
||||
Depends: python3, ${misc:Depends}, ${python3:Depends}, ${shlibs:Depends}
|
||||
Recommends: lsb-base, zfs-zed
|
||||
Recommends: zfs-zed
|
||||
Suggests: nfs-kernel-server,
|
||||
samba-common-bin (>= 3.0.23),
|
||||
zfs-initramfs
|
||||
|
||||
Vendored
+20
-23
@@ -132,9 +132,9 @@ Copyright:
|
||||
2017, Intel Corporation.
|
||||
License: CDDL-1.0
|
||||
|
||||
Files: cmd/zstreamdump/*
|
||||
Files: cmd/zstream/*
|
||||
Copyright:
|
||||
2013, Delphix.
|
||||
2013, 2015 Delphix.
|
||||
2012, Martin Matuska <martin@matuska.org>
|
||||
2010, Sun Microsystems, Inc.
|
||||
License: CDDL-1.0
|
||||
@@ -201,7 +201,6 @@ Copyright:
|
||||
2011-2013, Darik Horn <dajhorn@vanadac.com>
|
||||
2018-2019, Mo Zhou <cdluminate@gmail.com>
|
||||
2018-2020, Mo Zhou <lumin@debian.org>
|
||||
2015-2021 Proxmox Server Solutions GmbH <support@proxmox.com>
|
||||
License: GPL-2+
|
||||
|
||||
Files: debian/po/*
|
||||
@@ -399,12 +398,7 @@ Copyright: 2009, Oracle and/or its affiliates.
|
||||
2009, Michael Gebetsroither <michael.geb@gmx.at>
|
||||
License: CDDL-1.0
|
||||
|
||||
Files: man/man5/zfs-events.5
|
||||
man/man5/zfs-module-parameters.5
|
||||
Copyright: 2013, Turbo Fredriksson <turbo@bayour.com>
|
||||
License: CDDL-1.0
|
||||
|
||||
Files: man/man5/zpool-features.5
|
||||
Files: man/man7/zpool-features.7
|
||||
Copyright:
|
||||
2013, Delphix
|
||||
2013, Saso Kiselkov
|
||||
@@ -436,7 +430,7 @@ Copyright: 2011-2014, Delphix.
|
||||
2007, 2009, 2010, Sun Microsystems, Inc.
|
||||
License: CDDL-1.0
|
||||
|
||||
Files: module/lua
|
||||
Files: module/lua/*
|
||||
Copyright: 1994-2015 Lua.org, PUC-Rio.
|
||||
License: Expat
|
||||
|
||||
@@ -483,7 +477,7 @@ Copyright: 2013, Saso Kiselkov.
|
||||
2005, 2010, Oracle and/or its affiliates.
|
||||
License: CDDL-1.0
|
||||
|
||||
Files: module/zcommon/zfs_uio.c
|
||||
Files: module/os/linux/zfs/zfs_uio.c
|
||||
Copyright: 2007, 2009, 2010, Sun Microsystems, Inc.
|
||||
1983-1989, AT&T
|
||||
1982, 1986, 1988, The Regents of the University of California
|
||||
@@ -697,13 +691,14 @@ Copyright: 2011, 2014, Nexenta Systems, Inc.
|
||||
2005, 2010, Oracle and/or its affiliates.
|
||||
License: CDDL-1.0
|
||||
|
||||
Files: module/zfs/vdev_disk.c
|
||||
Files: module/os/linux/zfs/vdev_disk.c
|
||||
Copyright: 2012, 2014, Delphix.
|
||||
2008-2010, Lawrence Livermore National Security, LLC
|
||||
License: CDDL-1.0
|
||||
|
||||
Files: module/zfs/zfs_ctldir.c
|
||||
Copyright: 2013, Delphix.
|
||||
Files: module/os/freebsd/zfs/zfs_ctldir.c
|
||||
module/os/linux/zfs/zfs_ctldir.c
|
||||
Copyright: 2013, 2015 Delphix.
|
||||
2011, Lawrence Livermore National Security, LLC
|
||||
2005, 2010, Oracle and/or its affiliates.
|
||||
License: CDDL-1.0
|
||||
@@ -726,7 +721,8 @@ Copyright: 2013, Delphix.
|
||||
2005, 2010, Oracle and/or its affiliates.
|
||||
License: CDDL-1.0
|
||||
|
||||
Files: module/zfs/zfs_vfsops.c
|
||||
Files: module/os/freebsd/zfs/zfs_vfsops.c
|
||||
module/os/linux/zfs/zfs_vfsops.c
|
||||
module/zfs/zil.c
|
||||
Copyright: 2011-2014, Delphix.
|
||||
2010, Robert Milkowski
|
||||
@@ -741,8 +737,9 @@ Copyright: 2015, Chunwei Chen.
|
||||
2005, 2010, Oracle and/or its affiliates.
|
||||
License: CDDL-1.0
|
||||
|
||||
Files: module/zfs/zfs_znode.c
|
||||
Copyright: 2013, Delphix.
|
||||
Files: module/os/freebsd/zfs/zfs_znode.c
|
||||
module/os/linux/zfs/zfs_znode.c
|
||||
Copyright: 2013, 2015 Delphix.
|
||||
2007, Jeremy Teo
|
||||
2005, 2010, Oracle and/or its affiliates.
|
||||
License: CDDL-1.0
|
||||
@@ -753,20 +750,20 @@ Copyright: 2013, Saso Kiselkov.
|
||||
2009, Sun Microsystems, Inc.
|
||||
License: CDDL-1.0
|
||||
|
||||
Files: module/zfs/zpl_ctldir.c
|
||||
module/zfs/zpl_super.c
|
||||
module/zfs/zpl_xattr.c
|
||||
Files: module/os/linux/zfs/zpl_ctldir.c
|
||||
module/os/linux/zfs/zpl_super.c
|
||||
module/os/linux/zfs/zpl_xattr.c
|
||||
module/zfs/zvol.c
|
||||
Copyright: 2008-2011, Lawrence Livermore National Security, LLC
|
||||
License: CDDL-1.0
|
||||
|
||||
Files: module/zfs/zpl_export.c
|
||||
Files: module/os/linux/zfs/zpl_export.c
|
||||
Copyright: 2012, Cyril Plisko.
|
||||
2011, Gunnar Beutner
|
||||
License: CDDL-1.0
|
||||
|
||||
Files: module/zfs/zpl_file.c
|
||||
module/zfs/zpl_inode.c
|
||||
Files: module/os/linux/zfs/zpl_file.c
|
||||
module/os/linux/zfs/zpl_inode.c
|
||||
Copyright: 2015, Chunwei Chen.
|
||||
2011, Lawrence Livermore National Security, LLC
|
||||
License: CDDL-1.0
|
||||
|
||||
+2
-2
@@ -13,7 +13,7 @@ Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/etc/systemd/system/zfs-zed.service.in b/etc/systemd/system/zfs-zed.service.in
|
||||
index 008075138..570e27707 100644
|
||||
index be80025a4..20ce8e632 100644
|
||||
--- a/etc/systemd/system/zfs-zed.service.in
|
||||
+++ b/etc/systemd/system/zfs-zed.service.in
|
||||
@@ -4,7 +4,7 @@ Documentation=man:zed(8)
|
||||
@@ -22,6 +22,6 @@ index 008075138..570e27707 100644
|
||||
[Service]
|
||||
-ExecStart=@sbindir@/zed -F
|
||||
+ExecStart=/usr/sbin/zed -F
|
||||
Restart=on-abort
|
||||
Restart=always
|
||||
|
||||
[Install]
|
||||
|
||||
+1
-1
@@ -13,7 +13,7 @@ Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/cmd/zed/zed.d/zed.rc b/cmd/zed/zed.d/zed.rc
|
||||
index 227b26c26..240d0dbfa 100644
|
||||
index 1dfd43454..0180dd827 100644
|
||||
--- a/cmd/zed/zed.d/zed.rc
|
||||
+++ b/cmd/zed/zed.d/zed.rc
|
||||
@@ -42,7 +42,7 @@ ZED_EMAIL_ADDR="root"
|
||||
|
||||
+3
-2
@@ -11,15 +11,16 @@ Signed-off-by: Stoiko Ivanov <s.ivanov@proxmox.com>
|
||||
|
||||
Description: track default symlinks, instead of symlinking
|
||||
Forwarded: no need
|
||||
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
|
||||
---
|
||||
cmd/zed/zed.d/Makefile.am | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/cmd/zed/zed.d/Makefile.am b/cmd/zed/zed.d/Makefile.am
|
||||
index 2c8173b3e..ad39292e4 100644
|
||||
index 1905a9207..6dc06252a 100644
|
||||
--- a/cmd/zed/zed.d/Makefile.am
|
||||
+++ b/cmd/zed/zed.d/Makefile.am
|
||||
@@ -49,7 +49,7 @@ install-data-hook:
|
||||
@@ -51,7 +51,7 @@ install-data-hook:
|
||||
for f in $(zedconfdefaults); do \
|
||||
test -f "$(DESTDIR)$(zedconfdir)/$${f}" -o \
|
||||
-L "$(DESTDIR)$(zedconfdir)/$${f}" || \
|
||||
|
||||
+1
@@ -11,6 +11,7 @@ the instance name is used unescaped (see systemd.unit(5)), since zpool names
|
||||
can contain characters which will be escaped by systemd.
|
||||
|
||||
Signed-off-by: Stoiko Ivanov <s.ivanov@proxmox.com>
|
||||
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
|
||||
---
|
||||
etc/systemd/system/50-zfs.preset.in | 1 +
|
||||
etc/systemd/system/Makefile.am | 1 +
|
||||
-55
@@ -1,55 +0,0 @@
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Antonio Russo <antonio.e.russo@gmail.com>
|
||||
Date: Tue, 5 May 2020 22:15:16 -0600
|
||||
Subject: [PATCH] Use installed python3
|
||||
|
||||
---
|
||||
.../functional/cli_root/zfs_program/zfs_program_json.ksh | 6 +++---
|
||||
.../tests/functional/rsend/send_encrypted_files.ksh | 2 +-
|
||||
.../tests/functional/rsend/send_realloc_dnode_size.ksh | 2 +-
|
||||
3 files changed, 5 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/tests/zfs-tests/tests/functional/cli_root/zfs_program/zfs_program_json.ksh b/tests/zfs-tests/tests/functional/cli_root/zfs_program/zfs_program_json.ksh
|
||||
index 3788543b0..c7ee4ae9a 100755
|
||||
--- a/tests/zfs-tests/tests/functional/cli_root/zfs_program/zfs_program_json.ksh
|
||||
+++ b/tests/zfs-tests/tests/functional/cli_root/zfs_program/zfs_program_json.ksh
|
||||
@@ -100,10 +100,10 @@ typeset -a pos_cmds_out=(
|
||||
# the same as the input and the --sort-keys option was added. Detect when
|
||||
# --sort-keys is supported and apply the option to ensure the expected order.
|
||||
#
|
||||
-if python -m json.tool --sort-keys <<< "{}"; then
|
||||
- JSON_TOOL_CMD="python -m json.tool --sort-keys"
|
||||
+if python3 -m json.tool --sort-keys <<< "{}"; then
|
||||
+ JSON_TOOL_CMD="python3 -m json.tool --sort-keys"
|
||||
else
|
||||
- JSON_TOOL_CMD="python -m json.tool"
|
||||
+ JSON_TOOL_CMD="python3 -m json.tool"
|
||||
fi
|
||||
|
||||
typeset -i cnt=0
|
||||
diff --git a/tests/zfs-tests/tests/functional/rsend/send_encrypted_files.ksh b/tests/zfs-tests/tests/functional/rsend/send_encrypted_files.ksh
|
||||
index 370f5382e..661fbe85d 100755
|
||||
--- a/tests/zfs-tests/tests/functional/rsend/send_encrypted_files.ksh
|
||||
+++ b/tests/zfs-tests/tests/functional/rsend/send_encrypted_files.ksh
|
||||
@@ -87,7 +87,7 @@ log_must xattrtest -f 10 -x 3 -s 32768 -r -k -p /$TESTPOOL/$TESTFS2/xattrsadir
|
||||
# OpenZFS issue #7432
|
||||
log_must zfs set compression=on xattr=sa $TESTPOOL/$TESTFS2
|
||||
log_must touch /$TESTPOOL/$TESTFS2/attrs
|
||||
-log_must eval "python -c 'print \"a\" * 4096' | \
|
||||
+log_must eval "python3 -c 'print \"a\" * 4096' | \
|
||||
set_xattr_stdin bigval /$TESTPOOL/$TESTFS2/attrs"
|
||||
log_must zfs set compression=off xattr=on $TESTPOOL/$TESTFS2
|
||||
|
||||
diff --git a/tests/zfs-tests/tests/functional/rsend/send_realloc_dnode_size.ksh b/tests/zfs-tests/tests/functional/rsend/send_realloc_dnode_size.ksh
|
||||
index 551ed15db..bd30488ea 100755
|
||||
--- a/tests/zfs-tests/tests/functional/rsend/send_realloc_dnode_size.ksh
|
||||
+++ b/tests/zfs-tests/tests/functional/rsend/send_realloc_dnode_size.ksh
|
||||
@@ -88,7 +88,7 @@ log_must zfs snapshot $POOL/fs@c
|
||||
# 4. Create an empty file and add xattrs to it to exercise reclaiming a
|
||||
# dnode that requires more than 1 slot for its bonus buffer (Zol #7433)
|
||||
log_must zfs set compression=on xattr=sa $POOL/fs
|
||||
-log_must eval "python -c 'print \"a\" * 512' |
|
||||
+log_must eval "python3 -c 'print \"a\" * 512' |
|
||||
set_xattr_stdin bigval /$POOL/fs/attrs"
|
||||
log_must zfs snapshot $POOL/fs@d
|
||||
|
||||
+1
@@ -7,6 +7,7 @@ Originally-By: Mo Zhou <cdluminate@gmail.com>
|
||||
Originally-By: Antonio Russo <aerusso@aerusso.net>
|
||||
|
||||
Signed-off-by: Stoiko Ivanov <s.ivanov@proxmox.com>
|
||||
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
|
||||
---
|
||||
man/Makefile.am | 2 +-
|
||||
man/{man1/arcstat.1 => man8/arcstat.8} | 2 +-
|
||||
+1
-1
@@ -22,7 +22,7 @@ Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
|
||||
1 file changed, 33 insertions(+), 33 deletions(-)
|
||||
|
||||
diff --git a/cmd/arcstat/arcstat.in b/cmd/arcstat/arcstat.in
|
||||
index 425e52d1f..010f69ec0 100755
|
||||
index 0128fd817..d2b2e28d1 100755
|
||||
--- a/cmd/arcstat/arcstat.in
|
||||
+++ b/cmd/arcstat/arcstat.in
|
||||
@@ -441,73 +441,73 @@ def calculate():
|
||||
+5
-4
@@ -20,16 +20,17 @@ also move l2_mfu_asize l2_mru_asize l2_prefetch_asize
|
||||
l2_bufc_data_asize l2_bufc_metadata_asize to .get accessor
|
||||
(these are only present with a cache device in the pool)
|
||||
Signed-off-by: Stoiko Ivanov <s.ivanov@proxmox.com>
|
||||
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
|
||||
---
|
||||
cmd/arc_summary/arc_summary3 | 28 ++++++++++++++--------------
|
||||
cmd/arcstat/arcstat.in | 14 +++++++-------
|
||||
2 files changed, 21 insertions(+), 21 deletions(-)
|
||||
|
||||
diff --git a/cmd/arc_summary/arc_summary3 b/cmd/arc_summary/arc_summary3
|
||||
index 301c485b3..ac46f5843 100755
|
||||
index 9d0c2d30d..fd2581ae2 100755
|
||||
--- a/cmd/arc_summary/arc_summary3
|
||||
+++ b/cmd/arc_summary/arc_summary3
|
||||
@@ -617,13 +617,13 @@ def section_arc(kstats_dict):
|
||||
@@ -609,13 +609,13 @@ def section_arc(kstats_dict):
|
||||
prt_i1('L2 cached evictions:', f_bytes(arc_stats['evict_l2_cached']))
|
||||
prt_i1('L2 eligible evictions:', f_bytes(arc_stats['evict_l2_eligible']))
|
||||
prt_i2('L2 eligible MFU evictions:',
|
||||
@@ -47,7 +48,7 @@ index 301c485b3..ac46f5843 100755
|
||||
prt_i1('L2 ineligible evictions:',
|
||||
f_bytes(arc_stats['evict_l2_ineligible']))
|
||||
print()
|
||||
@@ -765,20 +765,20 @@ def section_l2arc(kstats_dict):
|
||||
@@ -757,20 +757,20 @@ def section_l2arc(kstats_dict):
|
||||
f_perc(arc_stats['l2_hdr_size'], arc_stats['l2_size']),
|
||||
f_bytes(arc_stats['l2_hdr_size']))
|
||||
prt_i2('MFU allocated size:',
|
||||
@@ -79,7 +80,7 @@ index 301c485b3..ac46f5843 100755
|
||||
print()
|
||||
prt_1('L2ARC breakdown:', f_hits(l2_access_total))
|
||||
diff --git a/cmd/arcstat/arcstat.in b/cmd/arcstat/arcstat.in
|
||||
index 010f69ec0..50e5a7150 100755
|
||||
index d2b2e28d1..8004940b3 100755
|
||||
--- a/cmd/arcstat/arcstat.in
|
||||
+++ b/cmd/arcstat/arcstat.in
|
||||
@@ -482,8 +482,8 @@ def calculate():
|
||||
+87
@@ -0,0 +1,87 @@
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Rich Ercolani <214141+rincebrain@users.noreply.github.com>
|
||||
Date: Sat, 26 Aug 2023 14:25:46 -0400
|
||||
Subject: [PATCH] Avoid save/restoring AMX registers to avoid a SPR erratum
|
||||
|
||||
Intel SPR erratum SPR4 says that if you trip into a vmexit while
|
||||
doing FPU save/restore, your AMX register state might misbehave...
|
||||
and by misbehave, I mean save all zeroes incorrectly, leading to
|
||||
explosions if you restore it.
|
||||
|
||||
Since we're not using AMX for anything, the simple way to avoid
|
||||
this is to just not save/restore those when we do anything, since
|
||||
we're killing preemption of any sort across our save/restores.
|
||||
|
||||
If we ever decide to use AMX, it's not clear that we have any
|
||||
way to mitigate this, on Linux...but I am not an expert.
|
||||
|
||||
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
|
||||
Signed-off-by: Rich Ercolani <rincebrain@gmail.com>
|
||||
Closes #14989
|
||||
Closes #15168
|
||||
(cherry picked from commit 277f2e587b085d1eb8aa48b4ac0768a9ef5745ab)
|
||||
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
|
||||
---
|
||||
include/os/linux/kernel/linux/simd_x86.h | 19 ++++++++++++++-----
|
||||
1 file changed, 14 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/include/os/linux/kernel/linux/simd_x86.h b/include/os/linux/kernel/linux/simd_x86.h
|
||||
index 660f0d42d..455167ac8 100644
|
||||
--- a/include/os/linux/kernel/linux/simd_x86.h
|
||||
+++ b/include/os/linux/kernel/linux/simd_x86.h
|
||||
@@ -157,6 +157,15 @@
|
||||
#endif
|
||||
#endif
|
||||
|
||||
+#ifndef XFEATURE_MASK_XTILE
|
||||
+/*
|
||||
+ * For kernels where this doesn't exist yet, we still don't want to break
|
||||
+ * by save/restoring this broken nonsense.
|
||||
+ * See issue #14989 or Intel errata SPR4 for why
|
||||
+ */
|
||||
+#define XFEATURE_MASK_XTILE 0x60000
|
||||
+#endif
|
||||
+
|
||||
#include <linux/mm.h>
|
||||
#include <linux/slab.h>
|
||||
|
||||
@@ -319,18 +328,18 @@ kfpu_begin(void)
|
||||
union fpregs_state *state = zfs_kfpu_fpregs[smp_processor_id()];
|
||||
#if defined(HAVE_XSAVES)
|
||||
if (static_cpu_has(X86_FEATURE_XSAVES)) {
|
||||
- kfpu_do_xsave("xsaves", &state->xsave, ~0);
|
||||
+ kfpu_do_xsave("xsaves", &state->xsave, ~XFEATURE_MASK_XTILE);
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
#if defined(HAVE_XSAVEOPT)
|
||||
if (static_cpu_has(X86_FEATURE_XSAVEOPT)) {
|
||||
- kfpu_do_xsave("xsaveopt", &state->xsave, ~0);
|
||||
+ kfpu_do_xsave("xsaveopt", &state->xsave, ~XFEATURE_MASK_XTILE);
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
if (static_cpu_has(X86_FEATURE_XSAVE)) {
|
||||
- kfpu_do_xsave("xsave", &state->xsave, ~0);
|
||||
+ kfpu_do_xsave("xsave", &state->xsave, ~XFEATURE_MASK_XTILE);
|
||||
} else if (static_cpu_has(X86_FEATURE_FXSR)) {
|
||||
kfpu_save_fxsr(&state->fxsave);
|
||||
} else {
|
||||
@@ -415,12 +424,12 @@ kfpu_end(void)
|
||||
union fpregs_state *state = zfs_kfpu_fpregs[smp_processor_id()];
|
||||
#if defined(HAVE_XSAVES)
|
||||
if (static_cpu_has(X86_FEATURE_XSAVES)) {
|
||||
- kfpu_do_xrstor("xrstors", &state->xsave, ~0);
|
||||
+ kfpu_do_xrstor("xrstors", &state->xsave, ~XFEATURE_MASK_XTILE);
|
||||
goto out;
|
||||
}
|
||||
#endif
|
||||
if (static_cpu_has(X86_FEATURE_XSAVE)) {
|
||||
- kfpu_do_xrstor("xrstor", &state->xsave, ~0);
|
||||
+ kfpu_do_xrstor("xrstor", &state->xsave, ~XFEATURE_MASK_XTILE);
|
||||
} else if (static_cpu_has(X86_FEATURE_FXSR)) {
|
||||
kfpu_restore_fxsr(&state->fxsave);
|
||||
} else {
|
||||
--
|
||||
2.39.2
|
||||
|
||||
@@ -1,58 +0,0 @@
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Ryan Moeller <ryan@iXsystems.com>
|
||||
Date: Mon, 12 Dec 2022 13:23:06 -0500
|
||||
Subject: [PATCH] initramfs: Fix legacy mountpoint rootfs
|
||||
|
||||
Legacy mountpoint datasets should not pass `-o zfsutil` to `mount.zfs`.
|
||||
Fix the logic in `mount_fs()` to not forget we have a legacy mountpoint
|
||||
when checking for an `org.zol:mountpoint` userprop.
|
||||
|
||||
Reviewed-by: Richard Yao <ryao@gentoo.org>
|
||||
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
|
||||
Signed-off-by: Ryan Moeller <ryan@iXsystems.com>
|
||||
Closes #14274
|
||||
(cherry picked from commit 786ff6a6cb33226b4f4292c7569b9093286f74d9)
|
||||
(cherry picked from commit f28c7302cb77a8cb6112690d0eed0bf4adeeae15)
|
||||
Signed-off-by: Stoiko Ivanov <s.ivanov@proxmox.com>
|
||||
---
|
||||
contrib/initramfs/scripts/zfs | 20 ++++++++------------
|
||||
1 file changed, 8 insertions(+), 12 deletions(-)
|
||||
|
||||
diff --git a/contrib/initramfs/scripts/zfs b/contrib/initramfs/scripts/zfs
|
||||
index 9169adf5f..c7548fa07 100644
|
||||
--- a/contrib/initramfs/scripts/zfs
|
||||
+++ b/contrib/initramfs/scripts/zfs
|
||||
@@ -331,25 +331,21 @@ mount_fs()
|
||||
# Can't use the mountpoint property. Might be one of our
|
||||
# clones. Check the 'org.zol:mountpoint' property set in
|
||||
# clone_snap() if that's usable.
|
||||
- mountpoint=$(get_fs_value "$fs" org.zol:mountpoint)
|
||||
- if [ "$mountpoint" = "legacy" ] ||
|
||||
- [ "$mountpoint" = "none" ] ||
|
||||
- [ "$mountpoint" = "-" ]
|
||||
+ mountpoint1=$(get_fs_value "$fs" org.zol:mountpoint)
|
||||
+ if [ "$mountpoint1" = "legacy" ] ||
|
||||
+ [ "$mountpoint1" = "none" ] ||
|
||||
+ [ "$mountpoint1" = "-" ]
|
||||
then
|
||||
if [ "$fs" != "${ZFS_BOOTFS}" ]; then
|
||||
# We don't have a proper mountpoint and this
|
||||
# isn't the root fs.
|
||||
return 0
|
||||
- else
|
||||
- # Last hail-mary: Hope 'rootmnt' is set!
|
||||
- mountpoint=""
|
||||
fi
|
||||
- fi
|
||||
-
|
||||
- # If it's not a legacy filesystem, it can only be a
|
||||
- # native one...
|
||||
- if [ "$mountpoint" = "legacy" ]; then
|
||||
ZFS_CMD="mount.zfs"
|
||||
+ # Last hail-mary: Hope 'rootmnt' is set!
|
||||
+ mountpoint=""
|
||||
+ else
|
||||
+ mountpoint="$mountpoint1"
|
||||
fi
|
||||
fi
|
||||
|
||||
@@ -1,68 +0,0 @@
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Rich Ercolani <214141+rincebrain@users.noreply.github.com>
|
||||
Date: Mon, 9 May 2022 19:33:55 -0400
|
||||
Subject: [PATCH] Add workaround for broken Linux pipes
|
||||
|
||||
Linux has an unresolved hang if you resize a pipe with bytes
|
||||
in it.
|
||||
|
||||
Since there's no obvious way to detect this happening, added a
|
||||
workaround to disable resizing the pipe buffer if you set an
|
||||
environment variable.
|
||||
|
||||
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
|
||||
Signed-off-by: Rich Ercolani <rincebrain@gmail.com>
|
||||
Closes #13309
|
||||
(cherry picked from commit e84a2ed7a8b9e6458c25c6e93a93601eaf4128eb)
|
||||
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
|
||||
---
|
||||
lib/libzfs/os/linux/libzfs_sendrecv_os.c | 16 ++++++++++++++++
|
||||
man/man8/zfs.8 | 8 ++++++++
|
||||
2 files changed, 24 insertions(+)
|
||||
|
||||
diff --git a/lib/libzfs/os/linux/libzfs_sendrecv_os.c b/lib/libzfs/os/linux/libzfs_sendrecv_os.c
|
||||
index ac7ab95a3..8fc02fff2 100644
|
||||
--- a/lib/libzfs/os/linux/libzfs_sendrecv_os.c
|
||||
+++ b/lib/libzfs/os/linux/libzfs_sendrecv_os.c
|
||||
@@ -35,6 +35,22 @@
|
||||
void
|
||||
libzfs_set_pipe_max(int infd)
|
||||
{
|
||||
+#if __linux__
|
||||
+ /*
|
||||
+ * Sadly, Linux has an unfixed deadlock if you do SETPIPE_SZ on a pipe
|
||||
+ * with data in it.
|
||||
+ * cf. #13232, https://bugzilla.kernel.org/show_bug.cgi?id=212295
|
||||
+ *
|
||||
+ * And since the problem is in waking up the writer, there's nothing
|
||||
+ * we can do about it from here.
|
||||
+ *
|
||||
+ * So if people want to, they can set this, but they
|
||||
+ * may regret it...
|
||||
+ */
|
||||
+ if (getenv("ZFS_SET_PIPE_MAX") == NULL)
|
||||
+ return;
|
||||
+#endif
|
||||
+
|
||||
FILE *procf = fopen("/proc/sys/fs/pipe-max-size", "re");
|
||||
|
||||
if (procf != NULL) {
|
||||
diff --git a/man/man8/zfs.8 b/man/man8/zfs.8
|
||||
index fca1ba00d..a5c944169 100644
|
||||
--- a/man/man8/zfs.8
|
||||
+++ b/man/man8/zfs.8
|
||||
@@ -713,6 +713,14 @@ to use
|
||||
to mount ZFS datasets.
|
||||
This option is provided for backwards compatibility with older ZFS versions.
|
||||
.El
|
||||
+.Bl -tag -width "ZFS_SET_PIPE_MAX"
|
||||
+.It Sy ZFS_SET_PIPE_MAX
|
||||
+Tells
|
||||
+.Nm zfs
|
||||
+to set the maximum pipe size for sends/recieves.
|
||||
+Disabled by default on Linux
|
||||
+due to an unfixed deadlock in Linux's pipe size handling code.
|
||||
+.El
|
||||
.
|
||||
.Sh INTERFACE STABILITY
|
||||
.Sy Committed .
|
||||
@@ -1,91 +0,0 @@
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Ameer Hamza <ahamza@ixsystems.com>
|
||||
Date: Wed, 23 Nov 2022 01:28:13 +0500
|
||||
Subject: [PATCH] skip permission checks for extended attributes
|
||||
|
||||
zfs_zaccess_trivial() calls the generic_permission() to read
|
||||
xattr attributes. This causes deadlock if called from
|
||||
zpl_xattr_set_dir() context as xattr and the dent locks are
|
||||
already held in this scenario. This commit skips the permissions
|
||||
checks for extended attributes since the Linux VFS stack already
|
||||
checks it before passing us the control.
|
||||
|
||||
Signed-off-by: Ameer Hamza <ahamza@ixsystems.com>
|
||||
(cherry picked from commit 75fbe7eb99c3d20403c79c7e24a97997c424313a)
|
||||
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
|
||||
---
|
||||
module/os/linux/zfs/zfs_dir.c | 3 ---
|
||||
module/os/linux/zfs/zfs_vnops_os.c | 3 ++-
|
||||
module/os/linux/zfs/zpl_xattr.c | 2 +-
|
||||
tests/zfs-tests/tests/functional/acl/posix/posix_004_pos.ksh | 3 +++
|
||||
4 files changed, 6 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/module/os/linux/zfs/zfs_dir.c b/module/os/linux/zfs/zfs_dir.c
|
||||
index 82b32d1cc..8ad5454b5 100644
|
||||
--- a/module/os/linux/zfs/zfs_dir.c
|
||||
+++ b/module/os/linux/zfs/zfs_dir.c
|
||||
@@ -1066,9 +1066,6 @@ zfs_make_xattrdir(znode_t *zp, vattr_t *vap, znode_t **xzpp, cred_t *cr)
|
||||
|
||||
*xzpp = NULL;
|
||||
|
||||
- if ((error = zfs_zaccess(zp, ACE_WRITE_NAMED_ATTRS, 0, B_FALSE, cr)))
|
||||
- return (error);
|
||||
-
|
||||
if ((error = zfs_acl_ids_create(zp, IS_XATTR, vap, cr, NULL,
|
||||
&acl_ids)) != 0)
|
||||
return (error);
|
||||
diff --git a/module/os/linux/zfs/zfs_vnops_os.c b/module/os/linux/zfs/zfs_vnops_os.c
|
||||
index 796a86c25..ae0401e60 100644
|
||||
--- a/module/os/linux/zfs/zfs_vnops_os.c
|
||||
+++ b/module/os/linux/zfs/zfs_vnops_os.c
|
||||
@@ -579,6 +579,7 @@ zfs_create(znode_t *dzp, char *name, vattr_t *vap, int excl,
|
||||
boolean_t fuid_dirtied;
|
||||
boolean_t have_acl = B_FALSE;
|
||||
boolean_t waited = B_FALSE;
|
||||
+ boolean_t skip_acl = (flag & ATTR_NOACLCHECK) ? B_TRUE : B_FALSE;
|
||||
|
||||
/*
|
||||
* If we have an ephemeral id, ACL, or XVATTR then
|
||||
@@ -651,7 +652,7 @@ top:
|
||||
* Create a new file object and update the directory
|
||||
* to reference it.
|
||||
*/
|
||||
- if ((error = zfs_zaccess(dzp, ACE_ADD_FILE, 0, B_FALSE, cr))) {
|
||||
+ if ((error = zfs_zaccess(dzp, ACE_ADD_FILE, 0, skip_acl, cr))) {
|
||||
if (have_acl)
|
||||
zfs_acl_ids_free(&acl_ids);
|
||||
goto out;
|
||||
diff --git a/module/os/linux/zfs/zpl_xattr.c b/module/os/linux/zfs/zpl_xattr.c
|
||||
index bd5d5803f..9d758d2d0 100644
|
||||
--- a/module/os/linux/zfs/zpl_xattr.c
|
||||
+++ b/module/os/linux/zfs/zpl_xattr.c
|
||||
@@ -496,7 +496,7 @@ zpl_xattr_set_dir(struct inode *ip, const char *name, const void *value,
|
||||
vap->va_gid = crgetgid(cr);
|
||||
|
||||
error = -zfs_create(dxzp, (char *)name, vap, 0, 0644, &xzp,
|
||||
- cr, 0, NULL);
|
||||
+ cr, ATTR_NOACLCHECK, NULL);
|
||||
if (error)
|
||||
goto out;
|
||||
}
|
||||
diff --git a/tests/zfs-tests/tests/functional/acl/posix/posix_004_pos.ksh b/tests/zfs-tests/tests/functional/acl/posix/posix_004_pos.ksh
|
||||
index 6c6b592fb..8aa2cf496 100755
|
||||
--- a/tests/zfs-tests/tests/functional/acl/posix/posix_004_pos.ksh
|
||||
+++ b/tests/zfs-tests/tests/functional/acl/posix/posix_004_pos.ksh
|
||||
@@ -35,6 +35,7 @@
|
||||
# STRATEGY:
|
||||
# 1. Prepare an appropriate ACL on the test directory
|
||||
# 2. Change the owner of the directory
|
||||
+# 3. Reset and set the ACLs for test directory owned by the user
|
||||
#
|
||||
|
||||
verify_runnable "both"
|
||||
@@ -44,6 +45,8 @@ log_must setfacl -d -m u:$ZFS_ACL_STAFF1:rwx $TESTDIR
|
||||
log_must setfacl -b $TESTDIR
|
||||
|
||||
log_must chown $ZFS_ACL_STAFF1 $TESTDIR
|
||||
+log_must setfacl -b $TESTDIR
|
||||
+log_must setfacl -d -m u:$ZFS_ACL_STAFF1:rwx $TESTDIR
|
||||
log_must chown 0 $TESTDIR
|
||||
|
||||
log_pass "chown works with POSIX ACLs"
|
||||
@@ -1,137 +0,0 @@
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Antonio Russo <aerusso@aerusso.net>
|
||||
Date: Sat, 31 Dec 2022 07:51:32 -0700
|
||||
Subject: [PATCH] Linux 6.1 compat: open inside tmpfile()
|
||||
|
||||
Linux 863f144 modified the .tmpfile interface to pass a struct file,
|
||||
rather than a struct dentry, and expect the tmpfile implementation to
|
||||
open inside of tmpfile().
|
||||
|
||||
This patch implements a configuration test that checks for this new API
|
||||
and appropriately sets a HAVE_TMPFILE_DENTRY flag that tracks this old
|
||||
API. Contingent on this flag, the appropriate API is implemented.
|
||||
|
||||
Reviewed-by: Richard Yao <richard.yao@alumni.stonybrook.edu>
|
||||
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
|
||||
Signed-off-by: Antonio Russo <aerusso@aerusso.net>
|
||||
Closes #14301
|
||||
Closes #14343
|
||||
(cherry picked from commit d27c81847b43584483b5509ff352e7e727b0ce87)
|
||||
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
|
||||
---
|
||||
config/kernel-tmpfile.m4 | 32 +++++++++++++++++++++++++++-----
|
||||
module/os/linux/zfs/zpl_inode.c | 15 +++++++++++++++
|
||||
2 files changed, 42 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/config/kernel-tmpfile.m4 b/config/kernel-tmpfile.m4
|
||||
index 45c2e6cee..acb7ea1e8 100644
|
||||
--- a/config/kernel-tmpfile.m4
|
||||
+++ b/config/kernel-tmpfile.m4
|
||||
@@ -3,11 +3,25 @@ dnl # 3.11 API change
|
||||
dnl # Add support for i_op->tmpfile
|
||||
dnl #
|
||||
AC_DEFUN([ZFS_AC_KERNEL_SRC_TMPFILE], [
|
||||
+ dnl #
|
||||
+ dnl # 6.1 API change
|
||||
+ dnl # use struct file instead of struct dentry
|
||||
+ dnl #
|
||||
+ ZFS_LINUX_TEST_SRC([inode_operations_tmpfile], [
|
||||
+ #include <linux/fs.h>
|
||||
+ int tmpfile(struct user_namespace *userns,
|
||||
+ struct inode *inode, struct file *file,
|
||||
+ umode_t mode) { return 0; }
|
||||
+ static struct inode_operations
|
||||
+ iops __attribute__ ((unused)) = {
|
||||
+ .tmpfile = tmpfile,
|
||||
+ };
|
||||
+ ],[])
|
||||
dnl #
|
||||
dnl # 5.11 API change
|
||||
dnl # add support for userns parameter to tmpfile
|
||||
dnl #
|
||||
- ZFS_LINUX_TEST_SRC([inode_operations_tmpfile_userns], [
|
||||
+ ZFS_LINUX_TEST_SRC([inode_operations_tmpfile_dentry_userns], [
|
||||
#include <linux/fs.h>
|
||||
int tmpfile(struct user_namespace *userns,
|
||||
struct inode *inode, struct dentry *dentry,
|
||||
@@ -17,7 +31,7 @@ AC_DEFUN([ZFS_AC_KERNEL_SRC_TMPFILE], [
|
||||
.tmpfile = tmpfile,
|
||||
};
|
||||
],[])
|
||||
- ZFS_LINUX_TEST_SRC([inode_operations_tmpfile], [
|
||||
+ ZFS_LINUX_TEST_SRC([inode_operations_tmpfile_dentry], [
|
||||
#include <linux/fs.h>
|
||||
int tmpfile(struct inode *inode, struct dentry *dentry,
|
||||
umode_t mode) { return 0; }
|
||||
@@ -30,16 +44,24 @@ AC_DEFUN([ZFS_AC_KERNEL_SRC_TMPFILE], [
|
||||
|
||||
AC_DEFUN([ZFS_AC_KERNEL_TMPFILE], [
|
||||
AC_MSG_CHECKING([whether i_op->tmpfile() exists])
|
||||
- ZFS_LINUX_TEST_RESULT([inode_operations_tmpfile_userns], [
|
||||
+ ZFS_LINUX_TEST_RESULT([inode_operations_tmpfile], [
|
||||
AC_MSG_RESULT(yes)
|
||||
AC_DEFINE(HAVE_TMPFILE, 1, [i_op->tmpfile() exists])
|
||||
AC_DEFINE(HAVE_TMPFILE_USERNS, 1, [i_op->tmpfile() has userns])
|
||||
],[
|
||||
- ZFS_LINUX_TEST_RESULT([inode_operations_tmpfile], [
|
||||
+ ZFS_LINUX_TEST_RESULT([inode_operations_tmpfile_dentry_userns], [
|
||||
AC_MSG_RESULT(yes)
|
||||
AC_DEFINE(HAVE_TMPFILE, 1, [i_op->tmpfile() exists])
|
||||
+ AC_DEFINE(HAVE_TMPFILE_USERNS, 1, [i_op->tmpfile() has userns])
|
||||
+ AC_DEFINE(HAVE_TMPFILE_DENTRY, 1, [i_op->tmpfile() uses old dentry signature])
|
||||
],[
|
||||
- AC_MSG_RESULT(no)
|
||||
+ ZFS_LINUX_TEST_RESULT([inode_operations_tmpfile_dentry], [
|
||||
+ AC_MSG_RESULT(yes)
|
||||
+ AC_DEFINE(HAVE_TMPFILE, 1, [i_op->tmpfile() exists])
|
||||
+ AC_DEFINE(HAVE_TMPFILE_DENTRY, 1, [i_op->tmpfile() uses old dentry signature])
|
||||
+ ],[
|
||||
+ AC_MSG_RESULT(no)
|
||||
+ ])
|
||||
])
|
||||
])
|
||||
])
|
||||
diff --git a/module/os/linux/zfs/zpl_inode.c b/module/os/linux/zfs/zpl_inode.c
|
||||
index a0615af8d..fece7886e 100644
|
||||
--- a/module/os/linux/zfs/zpl_inode.c
|
||||
+++ b/module/os/linux/zfs/zpl_inode.c
|
||||
@@ -224,12 +224,17 @@ zpl_mknod(struct inode *dir, struct dentry *dentry, umode_t mode,
|
||||
|
||||
#ifdef HAVE_TMPFILE
|
||||
static int
|
||||
+#ifndef HAVE_TMPFILE_DENTRY
|
||||
+zpl_tmpfile(struct user_namespace *userns, struct inode *dir,
|
||||
+ struct file *file, umode_t mode)
|
||||
+#else
|
||||
#ifdef HAVE_TMPFILE_USERNS
|
||||
zpl_tmpfile(struct user_namespace *userns, struct inode *dir,
|
||||
struct dentry *dentry, umode_t mode)
|
||||
#else
|
||||
zpl_tmpfile(struct inode *dir, struct dentry *dentry, umode_t mode)
|
||||
#endif
|
||||
+#endif
|
||||
{
|
||||
cred_t *cr = CRED();
|
||||
struct inode *ip;
|
||||
@@ -252,11 +257,21 @@ zpl_tmpfile(struct inode *dir, struct dentry *dentry, umode_t mode)
|
||||
if (error == 0) {
|
||||
/* d_tmpfile will do drop_nlink, so we should set it first */
|
||||
set_nlink(ip, 1);
|
||||
+#ifndef HAVE_TMPFILE_DENTRY
|
||||
+ d_tmpfile(file, ip);
|
||||
+
|
||||
+ error = zpl_xattr_security_init(ip, dir,
|
||||
+ &file->f_path.dentry->d_name);
|
||||
+#else
|
||||
d_tmpfile(dentry, ip);
|
||||
|
||||
error = zpl_xattr_security_init(ip, dir, &dentry->d_name);
|
||||
+#endif
|
||||
if (error == 0)
|
||||
error = zpl_init_acl(ip, dir);
|
||||
+#ifndef HAVE_TMPFILE_DENTRY
|
||||
+ error = finish_open_simple(file, error);
|
||||
+#endif
|
||||
/*
|
||||
* don't need to handle error here, file is already in
|
||||
* unlinked set.
|
||||
Vendored
+5
-9
@@ -4,12 +4,8 @@
|
||||
0004-import-with-d-dev-disk-by-id-in-scan-service.patch
|
||||
0005-Enable-zed-emails.patch
|
||||
0006-dont-symlink-zed-scripts.patch
|
||||
0007-Use-installed-python3.patch
|
||||
0008-Add-systemd-unit-for-importing-specific-pools.patch
|
||||
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-Fix-legacy-mountpoint-rootfs.patch
|
||||
0013-Add-workaround-for-broken-Linux-pipes.patch
|
||||
0014-skip-permission-checks-for-extended-attributes.patch
|
||||
0015-Linux-6.1-compat-open-inside-tmpfile.patch
|
||||
0007-Add-systemd-unit-for-importing-specific-pools.patch
|
||||
0008-Patch-move-manpage-arcstat-1-to-arcstat-8.patch
|
||||
0009-arcstat-Fix-integer-division-with-python3.patch
|
||||
0010-arc-stat-summary-guard-access-to-l2arc-MFU-MRU-stats.patch
|
||||
0011-Avoid-save-restoring-AMX-registers-to-avoid-a-SPR-er.patch
|
||||
|
||||
Vendored
+1
-1
@@ -10,7 +10,7 @@ SPHINX_BUILD = $(shell dpkg -L python3-sphinx | grep -m 1 "/sphinx-build$$")
|
||||
export DEB_BUILD_MAINT_OPTIONS = hardening=+all
|
||||
|
||||
%:
|
||||
dh $@ --with autoreconf,python3,sphinxdoc --parallel
|
||||
dh $@ --with autoreconf,python3,sphinxdoc
|
||||
|
||||
adapt_meta_file:
|
||||
@# Embed the downstream version in the module.
|
||||
|
||||
+1
-1
@@ -60,7 +60,7 @@ do
|
||||
case "${ret}" in
|
||||
disable);;
|
||||
enable) trim_if_not_already_trimming "${pool}" ;;
|
||||
-|auto) pool_is_nvme_only "${pool}" && trim_if_not_already_trimming "${pool}" ;;
|
||||
-|auto) if pool_is_nvme_only "${pool}"; then trim_if_not_already_trimming "${pool}"; fi ;;
|
||||
*) 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.
|
||||
|
||||
Vendored
+2
@@ -31,6 +31,7 @@ sbin/zstream
|
||||
sbin/zstreamdump
|
||||
usr/bin/zvol_wait
|
||||
usr/lib/modules-load.d/ lib/
|
||||
usr/lib/zfs-linux/zfs_prepare_disk
|
||||
usr/lib/zfs-linux/zpool.d/
|
||||
usr/lib/zfs-linux/zpool_influxdb
|
||||
usr/sbin/arc_summary
|
||||
@@ -68,6 +69,7 @@ usr/share/man/man8/zfs-list.8
|
||||
usr/share/man/man8/zfs-load-key.8
|
||||
usr/share/man/man8/zfs-mount-generator.8
|
||||
usr/share/man/man8/zfs-mount.8
|
||||
usr/share/man/man8/zfs_prepare_disk.8
|
||||
usr/share/man/man8/zfs-program.8
|
||||
usr/share/man/man8/zfs-project.8
|
||||
usr/share/man/man8/zfs-projectspace.8
|
||||
|
||||
+1
-1
Submodule upstream updated: 21bd766133...fb6d532066
Reference in New Issue
Block a user