Compare commits
10 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 8748101cc1 | |||
| ff279e6b9b | |||
| 9b036161c8 | |||
| 407d5004a2 | |||
| b7ce537d24 | |||
| 6eb925bd8a | |||
| a542d21db8 | |||
| 19953df19b | |||
| 337bdb0b13 | |||
| bc8bb69f8c |
@@ -13,7 +13,7 @@ libpam-zfs_${ZFSPKGVER}_amd64.deb \
|
|||||||
libuutil3linux_${ZFSPKGVER}_amd64.deb \
|
libuutil3linux_${ZFSPKGVER}_amd64.deb \
|
||||||
libzfs4linux_${ZFSPKGVER}_amd64.deb \
|
libzfs4linux_${ZFSPKGVER}_amd64.deb \
|
||||||
libzfsbootenv1linux_${ZFSPKGVER}_amd64.deb \
|
libzfsbootenv1linux_${ZFSPKGVER}_amd64.deb \
|
||||||
libzpool5linux_${ZFSPKGVER}_amd64.deb \
|
libzpool4linux_${ZFSPKGVER}_amd64.deb \
|
||||||
zfs-test_${ZFSPKGVER}_amd64.deb \
|
zfs-test_${ZFSPKGVER}_amd64.deb \
|
||||||
zfsutils-linux_${ZFSPKGVER}_amd64.deb \
|
zfsutils-linux_${ZFSPKGVER}_amd64.deb \
|
||||||
zfs-zed_${ZFSPKGVER}_amd64.deb
|
zfs-zed_${ZFSPKGVER}_amd64.deb
|
||||||
@@ -79,4 +79,4 @@ distclean: clean
|
|||||||
|
|
||||||
.PHONY: upload
|
.PHONY: upload
|
||||||
upload: ${DEBS}
|
upload: ${DEBS}
|
||||||
tar -cf - ${DEBS} | ssh repoman@repo.proxmox.com -- upload --product pve,pmg,pbs --dist bullseye --arch amd64
|
tar -cf - ${DEBS} | ssh repoman@repo.proxmox.com -- upload --product pve,pmg,pbs --dist buster --arch amd64
|
||||||
|
|||||||
Vendored
+9
-65
@@ -1,76 +1,20 @@
|
|||||||
zfs-linux (2.1.7-pve3) bullseye; urgency=medium
|
zfs-linux (2.0.7-pve1) buster; urgency=medium
|
||||||
|
|
||||||
* backport a fix for as potentially hanging pipe when resizing it on recv
|
* update ZFS to 2.0.7
|
||||||
|
|
||||||
* backport a fix for setting extended attributes (xattr)
|
-- Proxmox Support Team <support@proxmox.com> Wed, 12 Jan 2022 18:46:26 +0100
|
||||||
|
|
||||||
* adapt to 6.1 changes for open syscall with TMPFILE option
|
zfs-linux (2.0.6-pve1~bpo10+1) buster; urgency=medium
|
||||||
|
|
||||||
-- Proxmox Support Team <support@proxmox.com> Sat, 07 Jan 2023 13:21:57 +0100
|
* update ZFS to 2.0.6
|
||||||
|
|
||||||
zfs-linux (2.1.7-pve2) bullseye; urgency=medium
|
-- Proxmox Support Team <support@proxmox.com> Tue, 28 Sep 2021 09:19:18 +0200
|
||||||
|
|
||||||
* backport fix for initramfs script when detecting rootfs legacy mountpoints
|
zfs-linux (2.0.5-pve1~bpo10+1) buster; urgency=medium
|
||||||
|
|
||||||
-- Proxmox Support Team <support@proxmox.com> Mon, 02 Jan 2023 17:07:18 +0100
|
* Rebuild for buster based releases
|
||||||
|
|
||||||
zfs-linux (2.1.7-pve1) bullseye; urgency=medium
|
-- Proxmox Support Team <support@proxmox.com> Wed, 21 Jul 2021 18:01:07 +0200
|
||||||
|
|
||||||
* update ZFS to 2.1.7
|
|
||||||
|
|
||||||
-- Proxmox Support Team <support@proxmox.com> Tue, 06 Dec 2022 16:41:31 +0100
|
|
||||||
|
|
||||||
zfs-linux (2.1.6-pve1) bullseye; urgency=medium
|
|
||||||
|
|
||||||
* update ZFS to 2.1.6
|
|
||||||
|
|
||||||
* symlink zpool_influxdb to /bin
|
|
||||||
|
|
||||||
* symlink zfs, zpool to /bin/ for non-root usage
|
|
||||||
|
|
||||||
-- Proxmox Support Team <support@proxmox.com> Tue, 04 Oct 2022 16:09:17 +0200
|
|
||||||
|
|
||||||
zfs-linux (2.1.5-pve1) bullseye; urgency=medium
|
|
||||||
|
|
||||||
* update ZFS to 2.1.5
|
|
||||||
|
|
||||||
* Build with libcurl for new keylocation=https://
|
|
||||||
|
|
||||||
* d/control: add new zfs-dracut package
|
|
||||||
|
|
||||||
-- Proxmox Support Team <support@proxmox.com> Tue, 28 Jun 2022 16:13:24 +0200
|
|
||||||
|
|
||||||
zfs-linux (2.1.4-pve1) bullseye; urgency=medium
|
|
||||||
|
|
||||||
* update ZFS to 2.1.4
|
|
||||||
|
|
||||||
-- Proxmox Support Team <support@proxmox.com> Thu, 24 Mar 2022 09:28:50 +0100
|
|
||||||
|
|
||||||
zfs-linux (2.1.3-pve1) bullseye; urgency=medium
|
|
||||||
|
|
||||||
* update ZFS to 2.1.3
|
|
||||||
|
|
||||||
-- Proxmox Support Team <support@proxmox.com> Fri, 11 Mar 2022 16:36:22 +0100
|
|
||||||
|
|
||||||
zfs-linux (2.1.2-pve1) bullseye; urgency=medium
|
|
||||||
|
|
||||||
* update ZFS to 2.1.2
|
|
||||||
|
|
||||||
-- Proxmox Support Team <support@proxmox.com> Tue, 11 Jan 2022 11:31:34 +0100
|
|
||||||
|
|
||||||
zfs-linux (2.1.1-pve3) bullseye; urgency=medium
|
|
||||||
|
|
||||||
* zfs-utils: arc stat/summary: guard access to l2arc MFU/MRU stats to avoid
|
|
||||||
bogus exception when checking the ARC stats/summary on a older, 2.0 based
|
|
||||||
ZFS kernel module with the newer, 2.1 based, user space tools.
|
|
||||||
|
|
||||||
-- Proxmox Support Team <support@proxmox.com> Wed, 10 Nov 2021 09:58:31 +0100
|
|
||||||
|
|
||||||
zfs-linux (2.1.1-pve1) bullseye; urgency=medium
|
|
||||||
|
|
||||||
* update ZFS to 2.1.1
|
|
||||||
|
|
||||||
-- Proxmox Support Team <support@proxmox.com> Tue, 28 Sep 2021 06:16:14 +0200
|
|
||||||
|
|
||||||
zfs-linux (2.0.5-pve1) bullseye; urgency=medium
|
zfs-linux (2.0.5-pve1) bullseye; urgency=medium
|
||||||
|
|
||||||
|
|||||||
Vendored
+5
-25
@@ -5,14 +5,11 @@ Maintainer: Proxmox Support Team <support@proxmox.com>
|
|||||||
Build-Depends: abigail-tools,
|
Build-Depends: abigail-tools,
|
||||||
debhelper-compat (= 12),
|
debhelper-compat (= 12),
|
||||||
dh-python,
|
dh-python,
|
||||||
libaio-dev,
|
|
||||||
libblkid-dev,
|
libblkid-dev,
|
||||||
libcurl4-openssl-dev | libcurl4-gnutls-dev,
|
|
||||||
libelf-dev,
|
libelf-dev,
|
||||||
libpam0g-dev,
|
libpam0g-dev,
|
||||||
libssl-dev | libssl1.0-dev,
|
libssl-dev | libssl1.0-dev,
|
||||||
libtool,
|
libtool,
|
||||||
libudev-dev,
|
|
||||||
lsb-release,
|
lsb-release,
|
||||||
python3-cffi,
|
python3-cffi,
|
||||||
python3-setuptools,
|
python3-setuptools,
|
||||||
@@ -73,7 +70,7 @@ Depends: libssl-dev | libssl1.0-dev,
|
|||||||
libuutil3linux (= ${binary:Version}),
|
libuutil3linux (= ${binary:Version}),
|
||||||
libzfs4linux (= ${binary:Version}),
|
libzfs4linux (= ${binary:Version}),
|
||||||
libzfsbootenv1linux (= ${binary:Version}),
|
libzfsbootenv1linux (= ${binary:Version}),
|
||||||
libzpool5linux (= ${binary:Version}),
|
libzpool4linux (= ${binary:Version}),
|
||||||
${misc:Depends}
|
${misc:Depends}
|
||||||
Provides: libnvpair-dev, libuutil-dev
|
Provides: libnvpair-dev, libuutil-dev
|
||||||
Description: OpenZFS filesystem development files for Linux
|
Description: OpenZFS filesystem development files for Linux
|
||||||
@@ -81,18 +78,15 @@ Description: OpenZFS filesystem development files for Linux
|
|||||||
libraries of OpenZFS filesystem.
|
libraries of OpenZFS filesystem.
|
||||||
.
|
.
|
||||||
This package includes the development files of libnvpair3, libuutil3,
|
This package includes the development files of libnvpair3, libuutil3,
|
||||||
libzpool5 and libzfs4, libzfsbootenv1.
|
libzpool4 and libzfs4.
|
||||||
|
|
||||||
Package: libzfs4linux
|
Package: libzfs4linux
|
||||||
Section: contrib/libs
|
Section: contrib/libs
|
||||||
Architecture: linux-any
|
Architecture: linux-any
|
||||||
Depends: ${misc:Depends}, ${shlibs:Depends}
|
Depends: ${misc:Depends}, ${shlibs:Depends}
|
||||||
# The libcurl4 is loaded through dlopen("libcurl.so.4").
|
|
||||||
# https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=988521
|
|
||||||
Recommends: libcurl4
|
|
||||||
Breaks: libzfs2, libzfs2linux, libzfs3linux, libzfs4
|
Breaks: libzfs2, libzfs2linux, libzfs3linux, libzfs4
|
||||||
Replaces: libzfs2, libzfs2linux, libzfs3linux, libzfs4
|
Replaces: libzfs2, libzfs2linux, libzfs3linux, libzfs4
|
||||||
Description: OpenZFS filesystem library for Linux - general support
|
Description: OpenZFS filesystem library for Linux
|
||||||
OpenZFS is a storage platform that encompasses the functionality of
|
OpenZFS is a storage platform that encompasses the functionality of
|
||||||
traditional filesystems and volume managers. It supports data checksums,
|
traditional filesystems and volume managers. It supports data checksums,
|
||||||
compression, encryption, snapshots, and more.
|
compression, encryption, snapshots, and more.
|
||||||
@@ -112,7 +106,7 @@ Description: OpenZFS filesystem library for Linux
|
|||||||
.
|
.
|
||||||
The zfsbootenv library provides support for modifying ZFS label information.
|
The zfsbootenv library provides support for modifying ZFS label information.
|
||||||
|
|
||||||
Package: libzpool5linux
|
Package: libzpool4linux
|
||||||
Section: contrib/libs
|
Section: contrib/libs
|
||||||
Architecture: linux-any
|
Architecture: linux-any
|
||||||
Depends: ${misc:Depends}, ${shlibs:Depends}
|
Depends: ${misc:Depends}, ${shlibs:Depends}
|
||||||
@@ -186,19 +180,6 @@ Description: OpenZFS root filesystem capabilities for Linux - initramfs
|
|||||||
This package adds OpenZFS to the system initramfs with a hook
|
This package adds OpenZFS to the system initramfs with a hook
|
||||||
for the initramfs-tools infrastructure.
|
for the initramfs-tools infrastructure.
|
||||||
|
|
||||||
Package: zfs-dracut
|
|
||||||
Architecture: all
|
|
||||||
Depends: dracut,
|
|
||||||
zfsutils-linux (>= ${source:Version}),
|
|
||||||
${misc:Depends}
|
|
||||||
Description: OpenZFS root filesystem capabilities for Linux - dracut
|
|
||||||
OpenZFS is a storage platform that encompasses the functionality of
|
|
||||||
traditional filesystems and volume managers. It supports data checksums,
|
|
||||||
compression, encryption, snapshots, and more.
|
|
||||||
.
|
|
||||||
This package adds OpenZFS to the system initramfs with a hook
|
|
||||||
for the dracut infrastructure.
|
|
||||||
|
|
||||||
Package: zfsutils-linux
|
Package: zfsutils-linux
|
||||||
Section: contrib/admin
|
Section: contrib/admin
|
||||||
Architecture: linux-any
|
Architecture: linux-any
|
||||||
@@ -223,7 +204,6 @@ Architecture: linux-any
|
|||||||
Depends: zfsutils-linux (>= ${binary:Version}),
|
Depends: zfsutils-linux (>= ${binary:Version}),
|
||||||
${misc:Depends},
|
${misc:Depends},
|
||||||
${shlibs:Depends}
|
${shlibs:Depends}
|
||||||
Recommends: bsd-mailx | mailutils
|
|
||||||
Description: OpenZFS Event Daemon
|
Description: OpenZFS Event Daemon
|
||||||
OpenZFS is a storage platform that encompasses the functionality of
|
OpenZFS is a storage platform that encompasses the functionality of
|
||||||
traditional filesystems and volume managers. It supports data checksums,
|
traditional filesystems and volume managers. It supports data checksums,
|
||||||
@@ -294,7 +274,7 @@ Suggests: libnvpair3linux-dbgsym,
|
|||||||
libuutil3linux-dbgsym,
|
libuutil3linux-dbgsym,
|
||||||
libzfs4linux-dbgsym,
|
libzfs4linux-dbgsym,
|
||||||
libzfsbootenv1linux-dbgsym,
|
libzfsbootenv1linux-dbgsym,
|
||||||
libzpool5linux-dbgsym,
|
libzpool4linux-dbgsym,
|
||||||
zfs-test-dbgsym,
|
zfs-test-dbgsym,
|
||||||
zfsutils-linux-dbgsym,
|
zfsutils-linux-dbgsym,
|
||||||
zfs-zed-dbgsym,
|
zfs-zed-dbgsym,
|
||||||
|
|||||||
+1
-1
@@ -1,2 +1,2 @@
|
|||||||
package-name-doesnt-match-sonames
|
package-name-doesnt-match-sonames
|
||||||
extra-license-file *usr/share/doc/libzfsbootenv1linux/LICENSE.gz*
|
extra-license-file usr/share/doc/libzfsbootenv1linux/LICENSE.gz
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
|
|||||||
1 file changed, 29 insertions(+), 5 deletions(-)
|
1 file changed, 29 insertions(+), 5 deletions(-)
|
||||||
|
|
||||||
diff --git a/config/zfs-meta.m4 b/config/zfs-meta.m4
|
diff --git a/config/zfs-meta.m4 b/config/zfs-meta.m4
|
||||||
index 20064a0fb..4d5f545ad 100644
|
index b3c1befaa..660d8ccb9 100644
|
||||||
--- a/config/zfs-meta.m4
|
--- a/config/zfs-meta.m4
|
||||||
+++ b/config/zfs-meta.m4
|
+++ b/config/zfs-meta.m4
|
||||||
@@ -1,9 +1,10 @@
|
@@ -1,9 +1,10 @@
|
||||||
@@ -67,4 +67,4 @@ index 20064a0fb..4d5f545ad 100644
|
|||||||
+ elif test ! -f ".nogitrelease" && git rev-parse --git-dir > /dev/null 2>&1; then
|
+ elif test ! -f ".nogitrelease" && git rev-parse --git-dir > /dev/null 2>&1; then
|
||||||
_match="${ZFS_META_NAME}-${ZFS_META_VERSION}"
|
_match="${ZFS_META_NAME}-${ZFS_META_VERSION}"
|
||||||
_alias=$(git describe --match=${_match} 2>/dev/null)
|
_alias=$(git describe --match=${_match} 2>/dev/null)
|
||||||
_release=$(echo ${_alias}|sed "s/${ZFS_META_NAME}//"|cut -f3- -d'-'|tr - _)
|
_release=$(echo ${_alias}|cut -f3- -d'-'|sed 's/-/_/g')
|
||||||
|
|||||||
@@ -14,15 +14,15 @@ Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
|
|||||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
diff --git a/etc/systemd/system/zfs-import-scan.service.in b/etc/systemd/system/zfs-import-scan.service.in
|
diff --git a/etc/systemd/system/zfs-import-scan.service.in b/etc/systemd/system/zfs-import-scan.service.in
|
||||||
index 598ef501b..e4f3a70c1 100644
|
index f0317e23e..9a5e9cb17 100644
|
||||||
--- a/etc/systemd/system/zfs-import-scan.service.in
|
--- a/etc/systemd/system/zfs-import-scan.service.in
|
||||||
+++ b/etc/systemd/system/zfs-import-scan.service.in
|
+++ b/etc/systemd/system/zfs-import-scan.service.in
|
||||||
@@ -13,7 +13,7 @@ ConditionPathIsDirectory=/sys/module/zfs
|
@@ -13,7 +13,7 @@ ConditionPathIsDirectory=/sys/module/zfs
|
||||||
[Service]
|
[Service]
|
||||||
Type=oneshot
|
Type=oneshot
|
||||||
RemainAfterExit=yes
|
RemainAfterExit=yes
|
||||||
-ExecStart=@sbindir@/zpool import -aN -o cachefile=none $ZPOOL_IMPORT_OPTS
|
-ExecStart=@sbindir@/zpool import -aN -o cachefile=none
|
||||||
+ExecStart=@sbindir@/zpool import -aN -d /dev/disk/by-id -o cachefile=none $ZPOOL_IMPORT_OPTS
|
+ExecStart=@sbindir@/zpool import -aN -d /dev/disk/by-id -o cachefile=none
|
||||||
|
|
||||||
[Install]
|
[Install]
|
||||||
WantedBy=zfs-import.target
|
WantedBy=zfs-import.target
|
||||||
|
|||||||
+13
-4
@@ -9,14 +9,23 @@ behavior of mdadm.
|
|||||||
|
|
||||||
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
|
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
|
||||||
---
|
---
|
||||||
cmd/zed/zed.d/zed.rc | 2 +-
|
cmd/zed/zed.d/zed.rc | 4 ++--
|
||||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
diff --git a/cmd/zed/zed.d/zed.rc b/cmd/zed/zed.d/zed.rc
|
diff --git a/cmd/zed/zed.d/zed.rc b/cmd/zed/zed.d/zed.rc
|
||||||
index 227b26c26..240d0dbfa 100644
|
index 1c278b2ef..41c075c09 100644
|
||||||
--- a/cmd/zed/zed.d/zed.rc
|
--- a/cmd/zed/zed.d/zed.rc
|
||||||
+++ b/cmd/zed/zed.d/zed.rc
|
+++ b/cmd/zed/zed.d/zed.rc
|
||||||
@@ -42,7 +42,7 @@ ZED_EMAIL_ADDR="root"
|
@@ -15,7 +15,7 @@
|
||||||
|
# Email will only be sent if ZED_EMAIL_ADDR is defined.
|
||||||
|
# Disabled by default; uncomment to enable.
|
||||||
|
#
|
||||||
|
-#ZED_EMAIL_ADDR="root"
|
||||||
|
+ZED_EMAIL_ADDR="root"
|
||||||
|
|
||||||
|
##
|
||||||
|
# Name or path of executable responsible for sending notifications via email;
|
||||||
|
@@ -41,7 +41,7 @@
|
||||||
##
|
##
|
||||||
# Minimum number of seconds between notifications for a similar event.
|
# Minimum number of seconds between notifications for a similar event.
|
||||||
#
|
#
|
||||||
|
|||||||
+2
-3
@@ -16,10 +16,10 @@ Forwarded: no need
|
|||||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
diff --git a/cmd/zed/zed.d/Makefile.am b/cmd/zed/zed.d/Makefile.am
|
diff --git a/cmd/zed/zed.d/Makefile.am b/cmd/zed/zed.d/Makefile.am
|
||||||
index 2c8173b3e..ad39292e4 100644
|
index 8b2d0c200..118c96547 100644
|
||||||
--- a/cmd/zed/zed.d/Makefile.am
|
--- a/cmd/zed/zed.d/Makefile.am
|
||||||
+++ b/cmd/zed/zed.d/Makefile.am
|
+++ b/cmd/zed/zed.d/Makefile.am
|
||||||
@@ -49,7 +49,7 @@ install-data-hook:
|
@@ -48,6 +48,6 @@ install-data-hook:
|
||||||
for f in $(zedconfdefaults); do \
|
for f in $(zedconfdefaults); do \
|
||||||
test -f "$(DESTDIR)$(zedconfdir)/$${f}" -o \
|
test -f "$(DESTDIR)$(zedconfdir)/$${f}" -o \
|
||||||
-L "$(DESTDIR)$(zedconfdir)/$${f}" || \
|
-L "$(DESTDIR)$(zedconfdir)/$${f}" || \
|
||||||
@@ -27,4 +27,3 @@ index 2c8173b3e..ad39292e4 100644
|
|||||||
+ echo "$${f}" >> "$(DESTDIR)$(zedexecdir)/DEFAULT-ENABLED" ; \
|
+ echo "$${f}" >> "$(DESTDIR)$(zedexecdir)/DEFAULT-ENABLED" ; \
|
||||||
done
|
done
|
||||||
chmod 0600 "$(DESTDIR)$(zedconfdir)/zed.rc"
|
chmod 0600 "$(DESTDIR)$(zedconfdir)/zed.rc"
|
||||||
|
|
||||||
|
|||||||
+2
-2
@@ -28,11 +28,11 @@ index 3788543b0..c7ee4ae9a 100755
|
|||||||
|
|
||||||
typeset -i cnt=0
|
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
|
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
|
index d52f0261a..18356b017 100755
|
||||||
--- a/tests/zfs-tests/tests/functional/rsend/send_encrypted_files.ksh
|
--- a/tests/zfs-tests/tests/functional/rsend/send_encrypted_files.ksh
|
||||||
+++ b/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
|
@@ -87,7 +87,7 @@ log_must xattrtest -f 10 -x 3 -s 32768 -r -k -p /$TESTPOOL/$TESTFS2/xattrsadir
|
||||||
# OpenZFS issue #7432
|
# ZoL issue #7432
|
||||||
log_must zfs set compression=on xattr=sa $TESTPOOL/$TESTFS2
|
log_must zfs set compression=on xattr=sa $TESTPOOL/$TESTFS2
|
||||||
log_must touch /$TESTPOOL/$TESTFS2/attrs
|
log_must touch /$TESTPOOL/$TESTFS2/attrs
|
||||||
-log_must eval "python -c 'print \"a\" * 4096' | \
|
-log_must eval "python -c 'print \"a\" * 4096' | \
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ index e4056a92c..030611419 100644
|
|||||||
enable zfs-mount.service
|
enable zfs-mount.service
|
||||||
enable zfs-share.service
|
enable zfs-share.service
|
||||||
diff --git a/etc/systemd/system/Makefile.am b/etc/systemd/system/Makefile.am
|
diff --git a/etc/systemd/system/Makefile.am b/etc/systemd/system/Makefile.am
|
||||||
index 35f833de5..af3ae597c 100644
|
index c374a52ac..25d1b99d7 100644
|
||||||
--- a/etc/systemd/system/Makefile.am
|
--- a/etc/systemd/system/Makefile.am
|
||||||
+++ b/etc/systemd/system/Makefile.am
|
+++ b/etc/systemd/system/Makefile.am
|
||||||
@@ -7,6 +7,7 @@ systemdunit_DATA = \
|
@@ -7,6 +7,7 @@ systemdunit_DATA = \
|
||||||
|
|||||||
@@ -8,44 +8,47 @@ Originally-By: Antonio Russo <aerusso@aerusso.net>
|
|||||||
|
|
||||||
Signed-off-by: Stoiko Ivanov <s.ivanov@proxmox.com>
|
Signed-off-by: Stoiko Ivanov <s.ivanov@proxmox.com>
|
||||||
---
|
---
|
||||||
man/Makefile.am | 2 +-
|
man/man1/Makefile.am | 2 +-
|
||||||
|
man/man8/Makefile.am | 1 +
|
||||||
man/{man1/arcstat.1 => man8/arcstat.8} | 2 +-
|
man/{man1/arcstat.1 => man8/arcstat.8} | 2 +-
|
||||||
2 files changed, 2 insertions(+), 2 deletions(-)
|
3 files changed, 3 insertions(+), 2 deletions(-)
|
||||||
rename man/{man1/arcstat.1 => man8/arcstat.8} (99%)
|
rename man/{man1/arcstat.1 => man8/arcstat.8} (99%)
|
||||||
|
|
||||||
diff --git a/man/Makefile.am b/man/Makefile.am
|
diff --git a/man/man1/Makefile.am b/man/man1/Makefile.am
|
||||||
index 64650c2b9..95a66a62f 100644
|
index 8d7457a3e..101af7b6c 100644
|
||||||
--- a/man/Makefile.am
|
--- a/man/man1/Makefile.am
|
||||||
+++ b/man/Makefile.am
|
+++ b/man/man1/Makefile.am
|
||||||
@@ -8,7 +8,6 @@ dist_man_MANS = \
|
@@ -1,4 +1,4 @@
|
||||||
man1/ztest.1 \
|
-dist_man_MANS = zhack.1 ztest.1 raidz_test.1 zvol_wait.1 arcstat.1
|
||||||
man1/raidz_test.1 \
|
+dist_man_MANS = zhack.1 ztest.1 raidz_test.1 zvol_wait.1
|
||||||
man1/zvol_wait.1 \
|
EXTRA_DIST = cstyle.1
|
||||||
- man1/arcstat.1 \
|
|
||||||
\
|
if BUILD_LINUX
|
||||||
man5/vdev_id.conf.5 \
|
diff --git a/man/man8/Makefile.am b/man/man8/Makefile.am
|
||||||
\
|
index 07f6aefa6..a757b1c62 100644
|
||||||
@@ -22,6 +21,7 @@ dist_man_MANS = \
|
--- a/man/man8/Makefile.am
|
||||||
man7/zpoolconcepts.7 \
|
+++ b/man/man8/Makefile.am
|
||||||
man7/zpoolprops.7 \
|
@@ -1,6 +1,7 @@
|
||||||
\
|
include $(top_srcdir)/config/Substfiles.am
|
||||||
+ man8/arcstat.8 \
|
|
||||||
man8/fsck.zfs.8 \
|
dist_man_MANS = \
|
||||||
man8/mount.zfs.8 \
|
+ arcstat.8 \
|
||||||
man8/vdev_id.8 \
|
fsck.zfs.8 \
|
||||||
|
mount.zfs.8 \
|
||||||
|
vdev_id.8 \
|
||||||
diff --git a/man/man1/arcstat.1 b/man/man8/arcstat.8
|
diff --git a/man/man1/arcstat.1 b/man/man8/arcstat.8
|
||||||
similarity index 99%
|
similarity index 99%
|
||||||
rename from man/man1/arcstat.1
|
rename from man/man1/arcstat.1
|
||||||
rename to man/man8/arcstat.8
|
rename to man/man8/arcstat.8
|
||||||
index a69cd8937..dfe9c971b 100644
|
index ca508b49c..0aa81849a 100644
|
||||||
--- a/man/man1/arcstat.1
|
--- a/man/man1/arcstat.1
|
||||||
+++ b/man/man8/arcstat.8
|
+++ b/man/man8/arcstat.8
|
||||||
@@ -13,7 +13,7 @@
|
@@ -13,7 +13,7 @@
|
||||||
|
.\" Copyright (c) 2015 by Delphix. All rights reserved.
|
||||||
.\" Copyright (c) 2020 by AJ Jordan. All rights reserved.
|
.\" Copyright (c) 2020 by AJ Jordan. All rights reserved.
|
||||||
.\"
|
.\"
|
||||||
.Dd May 26, 2021
|
-.TH ARCSTAT 1 "Oct 20, 2020" OpenZFS
|
||||||
-.Dt ARCSTAT 1
|
+.TH ARCSTAT 8 "Oct 20, 2020" OpenZFS
|
||||||
+.Dt ARCSTAT 8
|
.SH NAME
|
||||||
.Os
|
arcstat \- report ZFS ARC and L2ARC statistics
|
||||||
.
|
.SH SYNOPSIS
|
||||||
.Sh NAME
|
|
||||||
|
|||||||
@@ -1,134 +0,0 @@
|
|||||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Valmiky Arquissandas <kayvlim@gmail.com>
|
|
||||||
Date: Fri, 8 Oct 2021 16:32:27 +0100
|
|
||||||
Subject: [PATCH] arcstat: Fix integer division with python3
|
|
||||||
|
|
||||||
The arcstat script requests compatibility with python2 and python3, but
|
|
||||||
PEP 238 modified the / operator and results in erroneous output when
|
|
||||||
run under python3.
|
|
||||||
|
|
||||||
This commit replaces instances of / with //, yielding the expected
|
|
||||||
result in both versions of Python.
|
|
||||||
|
|
||||||
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
|
|
||||||
Reviewed-by: John Kennedy <john.kennedy@delphix.com>
|
|
||||||
Reviewed-by: Ryan Moeller <ryan@ixsystems.com>
|
|
||||||
Signed-off-by: Valmiky Arquissandas <foss@kayvlim.com>
|
|
||||||
Closes #12603
|
|
||||||
(cherry picked from commit 2d02bba23d83ae8fede8d281edc255f01ccd28e9)
|
|
||||||
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
|
|
||||||
---
|
|
||||||
cmd/arcstat/arcstat.in | 66 +++++++++++++++++++++---------------------
|
|
||||||
1 file changed, 33 insertions(+), 33 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/cmd/arcstat/arcstat.in b/cmd/arcstat/arcstat.in
|
|
||||||
index 425e52d1f..010f69ec0 100755
|
|
||||||
--- a/cmd/arcstat/arcstat.in
|
|
||||||
+++ b/cmd/arcstat/arcstat.in
|
|
||||||
@@ -441,73 +441,73 @@ def calculate():
|
|
||||||
|
|
||||||
v = dict()
|
|
||||||
v["time"] = time.strftime("%H:%M:%S", time.localtime())
|
|
||||||
- v["hits"] = d["hits"] / sint
|
|
||||||
- v["miss"] = d["misses"] / sint
|
|
||||||
+ v["hits"] = d["hits"] // sint
|
|
||||||
+ v["miss"] = d["misses"] // sint
|
|
||||||
v["read"] = v["hits"] + v["miss"]
|
|
||||||
- v["hit%"] = 100 * v["hits"] / v["read"] if v["read"] > 0 else 0
|
|
||||||
+ v["hit%"] = 100 * v["hits"] // v["read"] if v["read"] > 0 else 0
|
|
||||||
v["miss%"] = 100 - v["hit%"] if v["read"] > 0 else 0
|
|
||||||
|
|
||||||
- v["dhit"] = (d["demand_data_hits"] + d["demand_metadata_hits"]) / sint
|
|
||||||
- v["dmis"] = (d["demand_data_misses"] + d["demand_metadata_misses"]) / sint
|
|
||||||
+ v["dhit"] = (d["demand_data_hits"] + d["demand_metadata_hits"]) // sint
|
|
||||||
+ v["dmis"] = (d["demand_data_misses"] + d["demand_metadata_misses"]) // sint
|
|
||||||
|
|
||||||
v["dread"] = v["dhit"] + v["dmis"]
|
|
||||||
- v["dh%"] = 100 * v["dhit"] / v["dread"] if v["dread"] > 0 else 0
|
|
||||||
+ v["dh%"] = 100 * v["dhit"] // v["dread"] if v["dread"] > 0 else 0
|
|
||||||
v["dm%"] = 100 - v["dh%"] if v["dread"] > 0 else 0
|
|
||||||
|
|
||||||
- v["phit"] = (d["prefetch_data_hits"] + d["prefetch_metadata_hits"]) / sint
|
|
||||||
+ v["phit"] = (d["prefetch_data_hits"] + d["prefetch_metadata_hits"]) // sint
|
|
||||||
v["pmis"] = (d["prefetch_data_misses"] +
|
|
||||||
- d["prefetch_metadata_misses"]) / sint
|
|
||||||
+ d["prefetch_metadata_misses"]) // sint
|
|
||||||
|
|
||||||
v["pread"] = v["phit"] + v["pmis"]
|
|
||||||
- v["ph%"] = 100 * v["phit"] / v["pread"] if v["pread"] > 0 else 0
|
|
||||||
+ v["ph%"] = 100 * v["phit"] // v["pread"] if v["pread"] > 0 else 0
|
|
||||||
v["pm%"] = 100 - v["ph%"] if v["pread"] > 0 else 0
|
|
||||||
|
|
||||||
v["mhit"] = (d["prefetch_metadata_hits"] +
|
|
||||||
- d["demand_metadata_hits"]) / sint
|
|
||||||
+ d["demand_metadata_hits"]) // sint
|
|
||||||
v["mmis"] = (d["prefetch_metadata_misses"] +
|
|
||||||
- d["demand_metadata_misses"]) / sint
|
|
||||||
+ d["demand_metadata_misses"]) // sint
|
|
||||||
|
|
||||||
v["mread"] = v["mhit"] + v["mmis"]
|
|
||||||
- v["mh%"] = 100 * v["mhit"] / v["mread"] if v["mread"] > 0 else 0
|
|
||||||
+ v["mh%"] = 100 * v["mhit"] // v["mread"] if v["mread"] > 0 else 0
|
|
||||||
v["mm%"] = 100 - v["mh%"] if v["mread"] > 0 else 0
|
|
||||||
|
|
||||||
v["arcsz"] = cur["size"]
|
|
||||||
v["size"] = cur["size"]
|
|
||||||
v["c"] = cur["c"]
|
|
||||||
- v["mfu"] = d["mfu_hits"] / sint
|
|
||||||
- v["mru"] = d["mru_hits"] / sint
|
|
||||||
- v["mrug"] = d["mru_ghost_hits"] / sint
|
|
||||||
- v["mfug"] = d["mfu_ghost_hits"] / sint
|
|
||||||
- v["eskip"] = d["evict_skip"] / sint
|
|
||||||
- v["el2skip"] = d["evict_l2_skip"] / sint
|
|
||||||
- v["el2cach"] = d["evict_l2_cached"] / sint
|
|
||||||
- v["el2el"] = d["evict_l2_eligible"] / sint
|
|
||||||
- v["el2mfu"] = d["evict_l2_eligible_mfu"] / sint
|
|
||||||
- v["el2mru"] = d["evict_l2_eligible_mru"] / sint
|
|
||||||
- v["el2inel"] = d["evict_l2_ineligible"] / sint
|
|
||||||
- v["mtxmis"] = d["mutex_miss"] / sint
|
|
||||||
+ v["mfu"] = d["mfu_hits"] // sint
|
|
||||||
+ v["mru"] = d["mru_hits"] // sint
|
|
||||||
+ v["mrug"] = d["mru_ghost_hits"] // sint
|
|
||||||
+ v["mfug"] = d["mfu_ghost_hits"] // sint
|
|
||||||
+ v["eskip"] = d["evict_skip"] // sint
|
|
||||||
+ v["el2skip"] = d["evict_l2_skip"] // sint
|
|
||||||
+ v["el2cach"] = d["evict_l2_cached"] // sint
|
|
||||||
+ v["el2el"] = d["evict_l2_eligible"] // sint
|
|
||||||
+ v["el2mfu"] = d["evict_l2_eligible_mfu"] // sint
|
|
||||||
+ v["el2mru"] = d["evict_l2_eligible_mru"] // sint
|
|
||||||
+ v["el2inel"] = d["evict_l2_ineligible"] // sint
|
|
||||||
+ v["mtxmis"] = d["mutex_miss"] // sint
|
|
||||||
|
|
||||||
if l2exist:
|
|
||||||
- v["l2hits"] = d["l2_hits"] / sint
|
|
||||||
- v["l2miss"] = d["l2_misses"] / sint
|
|
||||||
+ v["l2hits"] = d["l2_hits"] // sint
|
|
||||||
+ v["l2miss"] = d["l2_misses"] // sint
|
|
||||||
v["l2read"] = v["l2hits"] + v["l2miss"]
|
|
||||||
- v["l2hit%"] = 100 * v["l2hits"] / v["l2read"] if v["l2read"] > 0 else 0
|
|
||||||
+ v["l2hit%"] = 100 * v["l2hits"] // v["l2read"] if v["l2read"] > 0 else 0
|
|
||||||
|
|
||||||
v["l2miss%"] = 100 - v["l2hit%"] if v["l2read"] > 0 else 0
|
|
||||||
v["l2asize"] = cur["l2_asize"]
|
|
||||||
v["l2size"] = cur["l2_size"]
|
|
||||||
- v["l2bytes"] = d["l2_read_bytes"] / sint
|
|
||||||
+ v["l2bytes"] = d["l2_read_bytes"] // sint
|
|
||||||
|
|
||||||
v["l2pref"] = cur["l2_prefetch_asize"]
|
|
||||||
v["l2mfu"] = cur["l2_mfu_asize"]
|
|
||||||
v["l2mru"] = cur["l2_mru_asize"]
|
|
||||||
v["l2data"] = cur["l2_bufc_data_asize"]
|
|
||||||
v["l2meta"] = cur["l2_bufc_metadata_asize"]
|
|
||||||
- v["l2pref%"] = 100 * v["l2pref"] / v["l2asize"]
|
|
||||||
- v["l2mfu%"] = 100 * v["l2mfu"] / v["l2asize"]
|
|
||||||
- v["l2mru%"] = 100 * v["l2mru"] / v["l2asize"]
|
|
||||||
- v["l2data%"] = 100 * v["l2data"] / v["l2asize"]
|
|
||||||
- v["l2meta%"] = 100 * v["l2meta"] / v["l2asize"]
|
|
||||||
+ v["l2pref%"] = 100 * v["l2pref"] // v["l2asize"]
|
|
||||||
+ v["l2mfu%"] = 100 * v["l2mfu"] // v["l2asize"]
|
|
||||||
+ v["l2mru%"] = 100 * v["l2mru"] // v["l2asize"]
|
|
||||||
+ v["l2data%"] = 100 * v["l2data"] // v["l2asize"]
|
|
||||||
+ v["l2meta%"] = 100 * v["l2meta"] // v["l2asize"]
|
|
||||||
|
|
||||||
v["grow"] = 0 if cur["arc_no_grow"] else 1
|
|
||||||
v["need"] = cur["arc_need_free"]
|
|
||||||
-112
@@ -1,112 +0,0 @@
|
|||||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Thomas Lamprecht <t.lamprecht@proxmox.com>
|
|
||||||
Date: Wed, 10 Nov 2021 09:29:47 +0100
|
|
||||||
Subject: [PATCH] arc stat/summary: guard access to l2arc MFU/MRU stats
|
|
||||||
|
|
||||||
commit 085321621e79a75bea41c2b6511da6ebfbf2ba0a added printing MFU
|
|
||||||
and MRU stats for 2.1 user space tools, but those keys are not
|
|
||||||
available in the 2.0 module. That means it may break the arcstat and
|
|
||||||
arc_summary tools after upgrade to 2.1 (user space), before a reboot
|
|
||||||
to the new 2.1 ZFS kernel-module happened, due to python raising a
|
|
||||||
KeyError on the dict access then.
|
|
||||||
|
|
||||||
Move those two keys to a .get accessor with `0` as fallback, as it
|
|
||||||
should be better to show some possible wrong data for new stat-keys
|
|
||||||
than throwing an exception.
|
|
||||||
|
|
||||||
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
|
|
||||||
|
|
||||||
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>
|
|
||||||
---
|
|
||||||
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
|
|
||||||
--- a/cmd/arc_summary/arc_summary3
|
|
||||||
+++ b/cmd/arc_summary/arc_summary3
|
|
||||||
@@ -617,13 +617,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:',
|
|
||||||
- f_perc(arc_stats['evict_l2_eligible_mfu'],
|
|
||||||
+ f_perc(arc_stats.get('evict_l2_eligible_mfu', 0), # 2.0 module compat
|
|
||||||
arc_stats['evict_l2_eligible']),
|
|
||||||
- f_bytes(arc_stats['evict_l2_eligible_mfu']))
|
|
||||||
+ f_bytes(arc_stats.get('evict_l2_eligible_mfu', 0)))
|
|
||||||
prt_i2('L2 eligible MRU evictions:',
|
|
||||||
- f_perc(arc_stats['evict_l2_eligible_mru'],
|
|
||||||
+ f_perc(arc_stats.get('evict_l2_eligible_mru', 0), # 2.0 module compat
|
|
||||||
arc_stats['evict_l2_eligible']),
|
|
||||||
- f_bytes(arc_stats['evict_l2_eligible_mru']))
|
|
||||||
+ f_bytes(arc_stats.get('evict_l2_eligible_mru', 0)))
|
|
||||||
prt_i1('L2 ineligible evictions:',
|
|
||||||
f_bytes(arc_stats['evict_l2_ineligible']))
|
|
||||||
print()
|
|
||||||
@@ -765,20 +765,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:',
|
|
||||||
- f_perc(arc_stats['l2_mfu_asize'], arc_stats['l2_asize']),
|
|
||||||
- f_bytes(arc_stats['l2_mfu_asize']))
|
|
||||||
+ f_perc(arc_stats.get('l2_mfu_asize', 0), arc_stats['l2_asize']),
|
|
||||||
+ f_bytes(arc_stats.get('l2_mfu_asize', 0))) # 2.0 module compat
|
|
||||||
prt_i2('MRU allocated size:',
|
|
||||||
- f_perc(arc_stats['l2_mru_asize'], arc_stats['l2_asize']),
|
|
||||||
- f_bytes(arc_stats['l2_mru_asize']))
|
|
||||||
+ f_perc(arc_stats.get('l2_mru_asize', 0), arc_stats['l2_asize']),
|
|
||||||
+ f_bytes(arc_stats.get('l2_mru_asize', 0))) # 2.0 module compat
|
|
||||||
prt_i2('Prefetch allocated size:',
|
|
||||||
- f_perc(arc_stats['l2_prefetch_asize'], arc_stats['l2_asize']),
|
|
||||||
- f_bytes(arc_stats['l2_prefetch_asize']))
|
|
||||||
+ f_perc(arc_stats.get('l2_prefetch_asize', 0), arc_stats['l2_asize']),
|
|
||||||
+ f_bytes(arc_stats.get('l2_prefetch_asize',0))) # 2.0 module compat
|
|
||||||
prt_i2('Data (buffer content) allocated size:',
|
|
||||||
- f_perc(arc_stats['l2_bufc_data_asize'], arc_stats['l2_asize']),
|
|
||||||
- f_bytes(arc_stats['l2_bufc_data_asize']))
|
|
||||||
+ f_perc(arc_stats.get('l2_bufc_data_asize', 0), arc_stats['l2_asize']),
|
|
||||||
+ f_bytes(arc_stats.get('l2_bufc_data_asize', 0))) # 2.0 module compat
|
|
||||||
prt_i2('Metadata (buffer content) allocated size:',
|
|
||||||
- f_perc(arc_stats['l2_bufc_metadata_asize'], arc_stats['l2_asize']),
|
|
||||||
- f_bytes(arc_stats['l2_bufc_metadata_asize']))
|
|
||||||
+ f_perc(arc_stats.get('l2_bufc_metadata_asize', 0), arc_stats['l2_asize']),
|
|
||||||
+ f_bytes(arc_stats.get('l2_bufc_metadata_asize', 0))) # 2.0 module compat
|
|
||||||
|
|
||||||
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
|
|
||||||
--- a/cmd/arcstat/arcstat.in
|
|
||||||
+++ b/cmd/arcstat/arcstat.in
|
|
||||||
@@ -482,8 +482,8 @@ def calculate():
|
|
||||||
v["el2skip"] = d["evict_l2_skip"] // sint
|
|
||||||
v["el2cach"] = d["evict_l2_cached"] // sint
|
|
||||||
v["el2el"] = d["evict_l2_eligible"] // sint
|
|
||||||
- v["el2mfu"] = d["evict_l2_eligible_mfu"] // sint
|
|
||||||
- v["el2mru"] = d["evict_l2_eligible_mru"] // sint
|
|
||||||
+ v["el2mfu"] = d.get("evict_l2_eligible_mfu", 0) // sint
|
|
||||||
+ v["el2mru"] = d.get("evict_l2_eligible_mru", 0) // sint
|
|
||||||
v["el2inel"] = d["evict_l2_ineligible"] // sint
|
|
||||||
v["mtxmis"] = d["mutex_miss"] // sint
|
|
||||||
|
|
||||||
@@ -498,11 +498,11 @@ def calculate():
|
|
||||||
v["l2size"] = cur["l2_size"]
|
|
||||||
v["l2bytes"] = d["l2_read_bytes"] // sint
|
|
||||||
|
|
||||||
- v["l2pref"] = cur["l2_prefetch_asize"]
|
|
||||||
- v["l2mfu"] = cur["l2_mfu_asize"]
|
|
||||||
- v["l2mru"] = cur["l2_mru_asize"]
|
|
||||||
- v["l2data"] = cur["l2_bufc_data_asize"]
|
|
||||||
- v["l2meta"] = cur["l2_bufc_metadata_asize"]
|
|
||||||
+ v["l2pref"] = cur.get("l2_prefetch_asize", 0)
|
|
||||||
+ v["l2mfu"] = cur.get("l2_mfu_asize", 0)
|
|
||||||
+ v["l2mru"] = cur.get("l2_mru_asize", 0)
|
|
||||||
+ v["l2data"] = cur.get("l2_bufc_data_asize", 0)
|
|
||||||
+ v["l2meta"] = cur.get("l2_bufc_metadata_asize", 0)
|
|
||||||
v["l2pref%"] = 100 * v["l2pref"] // v["l2asize"]
|
|
||||||
v["l2mfu%"] = 100 * v["l2mfu"] // v["l2asize"]
|
|
||||||
v["l2mru%"] = 100 * v["l2mru"] // v["l2asize"]
|
|
||||||
@@ -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
-6
@@ -7,9 +7,3 @@
|
|||||||
0007-Use-installed-python3.patch
|
0007-Use-installed-python3.patch
|
||||||
0008-Add-systemd-unit-for-importing-specific-pools.patch
|
0008-Add-systemd-unit-for-importing-specific-pools.patch
|
||||||
0009-Patch-move-manpage-arcstat-1-to-arcstat-8.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
|
|
||||||
|
|||||||
+26
-35
@@ -1,4 +1,4 @@
|
|||||||
#!/bin/sh -u
|
#!/bin/sh -eu
|
||||||
|
|
||||||
# directly exit successfully when zfs module is not loaded
|
# directly exit successfully when zfs module is not loaded
|
||||||
if ! [ -d /sys/module/zfs ]; then
|
if ! [ -d /sys/module/zfs ]; then
|
||||||
@@ -14,56 +14,47 @@ get_property () {
|
|||||||
# since they're not available on pools https://github.com/openzfs/zfs/pull/11680
|
# 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.
|
# TODO: use zpool user-defined property when such feature is available.
|
||||||
pool="$1"
|
pool="$1"
|
||||||
zfs get -H -o value "${PROPERTY_NAME}" "${pool}" 2>/dev/null
|
zfs get -H -o value "${PROPERTY_NAME}" "${pool}" 2>/dev/null || return 1
|
||||||
}
|
}
|
||||||
|
|
||||||
trim_if_not_already_trimming () {
|
trim_if_not_already_trimming () {
|
||||||
pool="$1"
|
pool="$1"
|
||||||
if ! zpool status "${pool}" | grep -q "trimming"; then
|
if ! zpool status "${pool}" | grep -q "trimming"; then
|
||||||
# This will error on HDD-only pools: doesn't matter
|
# Ignore errors (i.e. HDD pools),
|
||||||
zpool trim "${pool}"
|
# and continue with trimming other pools.
|
||||||
|
zpool trim "${pool}" || true
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
# Walk up the kernel parent names:
|
zpool_is_nvme_only () {
|
||||||
# this will catch devices from LVM &a.
|
zpool=$1
|
||||||
get_transp () {
|
# get a list of devices attached to the specified zpool
|
||||||
dev="$1"
|
zpool list -vHPL "${zpool}" |
|
||||||
while pd="$(lsblk -dnr -o PKNAME "$dev")"; do
|
awk -F'\t' '$2 ~ /^\/dev\// {
|
||||||
if [ -z "$pd" ]; then
|
if($2 !~ /^\/dev\/nvme/)
|
||||||
break
|
exit 1
|
||||||
else
|
}'
|
||||||
dev="/dev/$pd"
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
lsblk -dnr -o TRAN "$dev"
|
|
||||||
}
|
|
||||||
|
|
||||||
pool_is_nvme_only () {
|
|
||||||
pool="$1"
|
|
||||||
# get a list of devices attached to the specified pool
|
|
||||||
zpool list -vHP "${pool}" | \
|
|
||||||
awk -F'\t' '$2 ~ "^/dev/" {print $2}' | \
|
|
||||||
while read -r dev
|
|
||||||
do
|
|
||||||
[ "$(get_transp "$dev")" = "nvme" ] || return
|
|
||||||
done
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# TRIM all healthy pools that are not already trimming as per their configs.
|
# TRIM all healthy pools that are not already trimming as per their configs.
|
||||||
zpool list -H -o health,name 2>&1 | \
|
zpool list -H -o health,name 2>&1 | \
|
||||||
awk -F'\t' '$1 == "ONLINE" {print $2}' | \
|
awk -F'\t' '$1 == "ONLINE" {print $2}' | \
|
||||||
while read -r pool
|
while read pool
|
||||||
do
|
do
|
||||||
# read user-defined config
|
# read user-defined config
|
||||||
ret=$(get_property "${pool}") || continue
|
ret=$(get_property "${pool}")
|
||||||
case "${ret}" in
|
if [ $? -ne 0 ] || [ "disable" = "${ret}" ]; then
|
||||||
disable);;
|
:
|
||||||
enable) trim_if_not_already_trimming "${pool}" ;;
|
elif [ "enable" = "${ret}" ]; then
|
||||||
-|auto) pool_is_nvme_only "${pool}" && trim_if_not_already_trimming "${pool}" ;;
|
trim_if_not_already_trimming "${pool}"
|
||||||
*) cat > /dev/stderr <<EOF
|
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: [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.
|
$0: Acceptable choices for this property are: auto, enable, disable. The default is auto.
|
||||||
EOF
|
EOF
|
||||||
esac
|
fi
|
||||||
done
|
done
|
||||||
|
|||||||
Vendored
-2
@@ -1,2 +0,0 @@
|
|||||||
usr/lib/dracut
|
|
||||||
usr/share/man/man7/dracut.zfs.7
|
|
||||||
-1
@@ -1 +0,0 @@
|
|||||||
executable-not-elf-or-script *usr/share/initramfs-tools/scripts/zfs*
|
|
||||||
Vendored
+9
-9
@@ -1,13 +1,13 @@
|
|||||||
arch-dependent-file-in-usr-share
|
arch-dependent-file-in-usr-share
|
||||||
|
script-not-executable usr/share/zfs/common.sh
|
||||||
command-in-sbin-has-manpage-in-incorrect-section
|
command-in-sbin-has-manpage-in-incorrect-section
|
||||||
arch-dep-package-has-big-usr-share
|
arch-dep-package-has-big-usr-share
|
||||||
manpage-without-executable
|
manpage-without-executable
|
||||||
national-encoding *usr/share/zfs/zfs-tests/tests/functional/channel_program/lua_core/tst.lib_table.lua*
|
national-encoding usr/share/zfs/zfs-tests/tests/functional/channel_program/lua_core/tst.lib_table.lua
|
||||||
executable-not-elf-or-script *usr/share/zfs/zfs-tests/tests/functional/cli_root/zfs_jail/jail.conf*
|
executable-not-elf-or-script usr/share/zfs/zfs-tests/tests/functional/cli_root/zfs_jail/jail.conf
|
||||||
package-contains-documentation-outside-usr-share-doc *usr/share/zfs/zfs-tests/*
|
script-not-executable usr/share/zfs/zfs-tests/include/default.cfg
|
||||||
script-not-executable *usr/share/zfs/common.sh*
|
script-not-executable usr/share/zfs/zfs-tests/tests/functional/cli_root/zfs_wait/zfs_wait.kshlib
|
||||||
script-not-executable *usr/share/zfs/zfs-tests/include/default.cfg*
|
script-not-executable usr/share/zfs/zfs-tests/tests/functional/cli_root/zpool_wait/zpool_wait.kshlib
|
||||||
script-not-executable *usr/share/zfs/zfs-tests/tests/functional/cli_root/zfs_wait/zfs_wait.kshlib*
|
script-not-executable usr/share/zfs/zfs-tests/tests/functional/persist_l2arc/persist_l2arc.cfg
|
||||||
script-not-executable *usr/share/zfs/zfs-tests/tests/functional/cli_root/zpool_wait/zpool_wait.kshlib*
|
script-not-executable usr/share/zfs/zfs-tests/tests/functional/redacted_send/redacted.kshlib
|
||||||
script-not-executable *usr/share/zfs/zfs-tests/tests/functional/l2arc/l2arc.cfg*
|
package-contains-documentation-outside-usr-share-doc usr/share/zfs/zfs-tests/*
|
||||||
script-not-executable *usr/share/zfs/zfs-tests/tests/functional/redacted_send/redacted.kshlib*
|
|
||||||
|
|||||||
Vendored
+4
-14
@@ -8,11 +8,7 @@ lib/systemd/system/zfs-import-scan.service
|
|||||||
lib/systemd/system/zfs-import@.service
|
lib/systemd/system/zfs-import@.service
|
||||||
lib/systemd/system/zfs-import.target
|
lib/systemd/system/zfs-import.target
|
||||||
lib/systemd/system/zfs-import.service
|
lib/systemd/system/zfs-import.service
|
||||||
lib/systemd/system/zfs-load-key.service
|
|
||||||
lib/systemd/system/zfs-mount.service
|
lib/systemd/system/zfs-mount.service
|
||||||
lib/systemd/system/zfs-scrub-monthly@.timer
|
|
||||||
lib/systemd/system/zfs-scrub-weekly@.timer
|
|
||||||
lib/systemd/system/zfs-scrub@.service
|
|
||||||
lib/systemd/system/zfs-share.service
|
lib/systemd/system/zfs-share.service
|
||||||
lib/systemd/system/zfs-volume-wait.service
|
lib/systemd/system/zfs-volume-wait.service
|
||||||
lib/systemd/system/zfs-volumes.target
|
lib/systemd/system/zfs-volumes.target
|
||||||
@@ -32,7 +28,6 @@ sbin/zstreamdump
|
|||||||
usr/bin/zvol_wait
|
usr/bin/zvol_wait
|
||||||
usr/lib/modules-load.d/ lib/
|
usr/lib/modules-load.d/ lib/
|
||||||
usr/lib/zfs-linux/zpool.d/
|
usr/lib/zfs-linux/zpool.d/
|
||||||
usr/lib/zfs-linux/zpool_influxdb
|
|
||||||
usr/sbin/arc_summary
|
usr/sbin/arc_summary
|
||||||
usr/sbin/arcstat
|
usr/sbin/arcstat
|
||||||
usr/sbin/dbufstat
|
usr/sbin/dbufstat
|
||||||
@@ -40,14 +35,7 @@ usr/share/bash-completion/completions
|
|||||||
usr/share/man/man8/arcstat.8
|
usr/share/man/man8/arcstat.8
|
||||||
usr/share/man/man1/zhack.1
|
usr/share/man/man1/zhack.1
|
||||||
usr/share/man/man1/zvol_wait.1
|
usr/share/man/man1/zvol_wait.1
|
||||||
usr/share/man/man4/zfs.4
|
|
||||||
usr/share/man/man4/spl.4
|
|
||||||
usr/share/man/man5/
|
usr/share/man/man5/
|
||||||
usr/share/man/man7/zfsconcepts.7
|
|
||||||
usr/share/man/man7/zfsprops.7
|
|
||||||
usr/share/man/man7/zpoolconcepts.7
|
|
||||||
usr/share/man/man7/zpoolprops.7
|
|
||||||
usr/share/man/man7/zpool-features.7
|
|
||||||
usr/share/man/man8/fsck.zfs.8
|
usr/share/man/man8/fsck.zfs.8
|
||||||
usr/share/man/man8/mount.zfs.8
|
usr/share/man/man8/mount.zfs.8
|
||||||
usr/share/man/man8/vdev_id.8
|
usr/share/man/man8/vdev_id.8
|
||||||
@@ -91,6 +79,8 @@ usr/share/man/man8/zfs-userspace.8
|
|||||||
usr/share/man/man8/zfs-wait.8
|
usr/share/man/man8/zfs-wait.8
|
||||||
usr/share/man/man8/zfs.8
|
usr/share/man/man8/zfs.8
|
||||||
usr/share/man/man8/zfs_ids_to_path.8
|
usr/share/man/man8/zfs_ids_to_path.8
|
||||||
|
usr/share/man/man8/zfsconcepts.8
|
||||||
|
usr/share/man/man8/zfsprops.8
|
||||||
usr/share/man/man8/zgenhostid.8
|
usr/share/man/man8/zgenhostid.8
|
||||||
usr/share/man/man8/zpool-add.8
|
usr/share/man/man8/zpool-add.8
|
||||||
usr/share/man/man8/zpool-attach.8
|
usr/share/man/man8/zpool-attach.8
|
||||||
@@ -104,7 +94,6 @@ usr/share/man/man8/zpool-export.8
|
|||||||
usr/share/man/man8/zpool-get.8
|
usr/share/man/man8/zpool-get.8
|
||||||
usr/share/man/man8/zpool-history.8
|
usr/share/man/man8/zpool-history.8
|
||||||
usr/share/man/man8/zpool-import.8
|
usr/share/man/man8/zpool-import.8
|
||||||
usr/share/man/man8/zpool_influxdb.8
|
|
||||||
usr/share/man/man8/zpool-initialize.8
|
usr/share/man/man8/zpool-initialize.8
|
||||||
usr/share/man/man8/zpool-iostat.8
|
usr/share/man/man8/zpool-iostat.8
|
||||||
usr/share/man/man8/zpool-labelclear.8
|
usr/share/man/man8/zpool-labelclear.8
|
||||||
@@ -125,6 +114,7 @@ usr/share/man/man8/zpool-trim.8
|
|||||||
usr/share/man/man8/zpool-upgrade.8
|
usr/share/man/man8/zpool-upgrade.8
|
||||||
usr/share/man/man8/zpool-wait.8
|
usr/share/man/man8/zpool-wait.8
|
||||||
usr/share/man/man8/zpool.8
|
usr/share/man/man8/zpool.8
|
||||||
|
usr/share/man/man8/zpoolconcepts.8
|
||||||
|
usr/share/man/man8/zpoolprops.8
|
||||||
usr/share/man/man8/zstream.8
|
usr/share/man/man8/zstream.8
|
||||||
usr/share/man/man8/zstreamdump.8
|
usr/share/man/man8/zstreamdump.8
|
||||||
usr/share/zfs/compatibility.d/
|
|
||||||
|
|||||||
Vendored
-3
@@ -1,3 +0,0 @@
|
|||||||
sbin/zfs bin/zfs
|
|
||||||
sbin/zpool bin/zpool
|
|
||||||
usr/lib/zfs-linux/zpool_influxdb bin/zpool_influxdb
|
|
||||||
+8
-7
@@ -1,13 +1,14 @@
|
|||||||
spare-manual-page
|
spare-manual-page
|
||||||
systemd-service-file-refers-to-unusual-wantedby-target
|
systemd-service-file-refers-to-unusual-wantedby-target
|
||||||
binary-without-manpage *usr/sbin/dbufstat*
|
binary-without-manpage usr/sbin/dbufstat
|
||||||
binary-without-manpage *usr/sbin/arc_summary*
|
binary-without-manpage usr/sbin/arc_summary
|
||||||
manpage-has-errors-from-man
|
manpage-has-errors-from-man
|
||||||
appstream-metadata-missing-modalias-provide
|
appstream-metadata-missing-modalias-provide
|
||||||
command-in-sbin-has-manpage-in-incorrect-section
|
command-in-sbin-has-manpage-in-incorrect-section
|
||||||
package-supports-alternative-init-but-no-init.d-script *lib/systemd/system/zfs-import-cache.service*
|
package-supports-alternative-init-but-no-init.d-script lib/systemd/system/zfs-import-cache.service
|
||||||
package-supports-alternative-init-but-no-init.d-script *lib/systemd/system/zfs-import-scan.service*
|
package-supports-alternative-init-but-no-init.d-script lib/systemd/system/zfs-import-scan.service
|
||||||
spelling-error-in-manpage
|
spelling-error-in-manpage
|
||||||
package-supports-alternative-init-but-no-init.d-script *lib/systemd/system/zfs-volume-wait.service*
|
package-supports-alternative-init-but-no-init.d-script lib/systemd/system/zfs-volume-wait.service
|
||||||
systemd-service-file-missing-documentation-key *lib/systemd/system/zfs-volume-wait.service*
|
systemd-service-file-missing-documentation-key lib/systemd/system/zfs-volume-wait.service
|
||||||
extra-license-file *usr/share/doc/zfsutils-linux/LICENSE.gz*
|
extra-license-file usr/share/doc/zfsutils-linux/LICENSE.gz
|
||||||
|
package-supports-alternative-init-but-no-init.d-script lib/systemd/system/zfs-load-module.service
|
||||||
|
|||||||
+1
-1
Submodule upstream updated: 21bd766133...ad81baab77
Reference in New Issue
Block a user