Compare commits
39 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| a18306641a | |||
| 8f11c72175 | |||
| 45fdd1f323 | |||
| 7c8450b4b1 | |||
| 34f271eaf0 | |||
| 97bcaf4bef | |||
| 955a8beadf | |||
| 08743f90d9 | |||
| 33e3621234 | |||
| 69255727d0 | |||
| 457c4458a2 | |||
| 9cad433df9 | |||
| d1002ffe2c | |||
| f43dbfa752 | |||
| ee9e6a91e5 | |||
| a14f5e761c | |||
| 79736c677e | |||
| 7ef1f901d7 | |||
| f3e3232bf4 | |||
| 49538a61c8 | |||
| 63bd3935c7 | |||
| ae14379f41 | |||
| 13d410f1ab | |||
| 886e4c966e | |||
| 9e02600b0c | |||
| da2c3b42fa | |||
| 402acca54f | |||
| 146da5ad07 | |||
| 92886af5c5 | |||
| 512fb2e4a9 | |||
| 5b9cd1ad57 | |||
| 4114f700a9 | |||
| d551e00492 | |||
| 5dccc94923 | |||
| e4f11a69e8 | |||
| d56eab879e | |||
| 58608b5f2e | |||
| 8c9433c855 | |||
| 88b4c00190 |
+1
-4
@@ -1,6 +1,3 @@
|
||||
[submodule "zfs/upstream"]
|
||||
path = zfs/upstream
|
||||
path = upstream
|
||||
url = ../mirror_zfs
|
||||
[submodule "spl/upstream"]
|
||||
path = spl/upstream
|
||||
url = ../mirror_spl
|
||||
|
||||
@@ -1,22 +1,10 @@
|
||||
RELEASE=5.1
|
||||
|
||||
# source form https://github.com/zfsonlinux/
|
||||
|
||||
SPLDIR=spl-linux_${ZFSVER}
|
||||
SPLSRC=spl/upstream
|
||||
SPLPKG=spl/debian
|
||||
ZFSDIR=zfs-linux_${ZFSVER}
|
||||
ZFSSRC=zfs/upstream
|
||||
ZFSPKG=zfs/debian
|
||||
|
||||
ZFSPKG=debian
|
||||
ZFSVER != dpkg-parsechangelog -l ${ZFSPKG}/changelog -Sversion | cut -d- -f1
|
||||
|
||||
ZFSPKGVER != dpkg-parsechangelog -l ${ZFSPKG}/changelog -Sversion
|
||||
SPLPKGVER != dpkg-parsechangelog -l ${SPLPKG}/changelog -Sversion
|
||||
|
||||
SPL_DEB = \
|
||||
spl_${SPLPKGVER}_amd64.deb
|
||||
SPL_DSC = spl-linux_${SPLPKGVER}.dsc
|
||||
ZFSDIR=zfs-linux_${ZFSVER}
|
||||
ZFSSRC=upstream
|
||||
|
||||
ZFS_DEB1= libnvpair1linux_${ZFSPKGVER}_amd64.deb
|
||||
ZFS_DEB2= \
|
||||
@@ -32,20 +20,17 @@ zfsutils-linux_${ZFSPKGVER}_amd64.deb
|
||||
ZFS_DEBS= $(ZFS_DEB1) $(ZFS_DEB2)
|
||||
ZFS_DSC = zfs-linux_${ZFSPKGVER}.dsc
|
||||
|
||||
DEBS=${SPL_DEB} ${ZFS_DEBS}
|
||||
DSCS=${SPL_DSC} ${ZFS_DSC}
|
||||
|
||||
all: deb
|
||||
.PHONY: deb
|
||||
deb: ${DEBS}
|
||||
deb: ${ZFS_DEBS}
|
||||
.PHONY: dsc
|
||||
dsc: ${DSCS}
|
||||
dsc: ${ZFS_DSC}
|
||||
|
||||
# called from pve-kernel's Makefile to get patched sources
|
||||
.PHONY: kernel
|
||||
kernel: dsc
|
||||
dpkg-source -x ${SPL_DSC} ../pkg-spl
|
||||
dpkg-source -x ${ZFS_DSC} ../pkg-zfs
|
||||
$(MAKE) -C ../pkg-zfs -f debian/rules adapt_meta_file
|
||||
|
||||
.PHONY: dinstall
|
||||
dinstall: ${DEBS}
|
||||
@@ -53,25 +38,8 @@ dinstall: ${DEBS}
|
||||
|
||||
.PHONY: submodule
|
||||
submodule:
|
||||
test -f "${ZFSSRC}/README.markdown" || git submodule update --init
|
||||
test -f "${SPLSRC}/README.markdown" || git submodule update --init
|
||||
|
||||
.PHONY: spl
|
||||
spl: ${SPL_DEB}
|
||||
${SPL_DEB}: ${SPLDIR}
|
||||
cd ${SPLDIR}; dpkg-buildpackage -b -uc -us
|
||||
lintian ${SPL_DEB}
|
||||
|
||||
${SPL_DSC}: ${SPLDIR}
|
||||
tar czf spl-linux_${ZFSVER}.orig.tar.gz ${SPLDIR}
|
||||
cd ${SPLDIR}; dpkg-buildpackage -S -uc -us -d
|
||||
lintian $@
|
||||
|
||||
${SPLDIR}: ${SPLSRC} ${SPLPKG}
|
||||
rm -rf ${SPLDIR}
|
||||
mkdir ${SPLDIR}
|
||||
cp -a ${SPLSRC}/* ${SPLDIR}/
|
||||
cp -a ${SPLPKG} ${SPLDIR}/debian
|
||||
test -f "$(ZFSSRC)/README.md" || git submodule update --init
|
||||
$(ZFSSRC)/README.md: submodule
|
||||
|
||||
.PHONY: zfs
|
||||
zfs: $(ZFS_DEBS)
|
||||
@@ -85,20 +53,20 @@ ${ZFS_DSC}: ${ZFSDIR}
|
||||
cd ${ZFSDIR}; dpkg-buildpackage -S -uc -us -d
|
||||
lintian $@
|
||||
|
||||
${ZFSDIR}: $(ZFSSRC) ${ZFSPKG}
|
||||
rm -rf ${ZFSDIR}
|
||||
mkdir ${ZFSDIR}
|
||||
cp -a ${ZFSSRC}/* ${ZFSDIR}/
|
||||
cp -a ${ZFSPKG} ${ZFSDIR}/debian
|
||||
${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}
|
||||
|
||||
|
||||
.PHONY: clean
|
||||
clean:
|
||||
rm -rf *~ *.deb *.changes *.buildinfo *.dsc *.orig.tar.* *.debian.tar.* ${ZFSDIR} ${SPLDIR}
|
||||
rm -rf *~ *.deb *.changes *.buildinfo *.dsc *.orig.tar.* *.debian.tar.* ${ZFSDIR}
|
||||
|
||||
.PHONY: distclean
|
||||
distclean: clean
|
||||
|
||||
.PHONY: upload
|
||||
upload: ${DEBS}
|
||||
tar -cf - ${DEBS} | ssh repoman@repo.proxmox.com -- upload --product pve,pmg --dist stretch --arch amd64
|
||||
tar -cf - ${DEBS} | ssh repoman@repo.proxmox.com -- upload --product pve,pmg --dist buster --arch amd64
|
||||
|
||||
+55
@@ -1,3 +1,58 @@
|
||||
zfs-linux (0.8.2-pve2) pve pmg; urgency=medium
|
||||
|
||||
* save and restore the FPU state using ZFS dedicated per-cpu FPU state
|
||||
variables.
|
||||
|
||||
-- Proxmox Support Team <support@proxmox.com> Wed, 23 Oct 2019 17:14:22 +0200
|
||||
|
||||
zfs-linux (0.8.2-pve1) pve pmg; urgency=medium
|
||||
|
||||
* update to new 0.8.2 upstream stable release
|
||||
|
||||
-- Proxmox Support Team <support@proxmox.com> Sat, 28 Sep 2019 08:34:53 +0200
|
||||
|
||||
zfs-linux (0.8.1-pve3) pve pmg; urgency=medium
|
||||
|
||||
* [SIMD]: FPU register save/restore is also required on 5.0 kernel.
|
||||
strict kernel module release, user space tooling is not touched
|
||||
|
||||
-- Proxmox Support Team <support@proxmox.com> Fri, 27 Sep 2019 14:37:32 +0200
|
||||
|
||||
zfs-linux (0.8.1-pve2) pve pmg; urgency=medium
|
||||
|
||||
* cherry-pick parallel mount fix
|
||||
|
||||
* cherry-pick SIMD compat patches
|
||||
|
||||
-- Proxmox Support Team <support@proxmox.com> Tue, 20 Aug 2019 17:10:11 +0200
|
||||
|
||||
zfs-linux (0.8.1-pve1) pve pmg; urgency=medium
|
||||
|
||||
* update ZFS to 0.8.1
|
||||
|
||||
-- Proxmox Support Team <support@proxmox.com> Fri, 14 Jun 2019 20:43:10 +0200
|
||||
|
||||
zfs-linux (0.8.0-pve1) pve pmg; urgency=medium
|
||||
|
||||
* update ZFS to 0.8.0
|
||||
|
||||
* SPL is now included in upstream ZFS packaging.
|
||||
Build dummy spl and spl-dkms packages to ease transition on upgrades.
|
||||
|
||||
* Build pyzfs+documentation package
|
||||
|
||||
* Use arc_summary3.py to provide arc_summary.
|
||||
|
||||
* shipped python scripts now use python3
|
||||
|
||||
-- Proxmox Support Team <support@proxmox.com> Fri, 24 May 2019 12:05:22 +0200
|
||||
|
||||
zfs-linux (0.7.13-pve2~bpo2) pve pmg; urgency=medium
|
||||
|
||||
* rebuild for PVE 6.0 / Debian Buster
|
||||
|
||||
-- Proxmox Support Team <support@proxmox.com> Tue, 21 May 2019 20:08:45 +0200
|
||||
|
||||
zfs-linux (0.7.13-pve1~bpo2) unstable; urgency=medium
|
||||
|
||||
* remove conflict with insserv (<< 1.18)
|
||||
Vendored
+73
-8
@@ -2,20 +2,20 @@ Source: zfs-linux
|
||||
Section: contrib/kernel
|
||||
Priority: optional
|
||||
Maintainer: Proxmox Support Team <support@proxmox.com>
|
||||
Build-Depends: autotools-dev,
|
||||
debhelper (>= 10~),
|
||||
dh-autoreconf,
|
||||
Build-Depends: debhelper (>= 10~),
|
||||
dh-python,
|
||||
libattr1-dev,
|
||||
libblkid-dev,
|
||||
libselinux1-dev,
|
||||
libssl-dev | libssl1.0-dev,
|
||||
libtool,
|
||||
lsb-release,
|
||||
python3,
|
||||
python3-cffi,
|
||||
python3-setuptools,
|
||||
python3-sphinx,
|
||||
python3-all-dev,
|
||||
uuid-dev,
|
||||
zlib1g-dev
|
||||
Standards-Version: 4.1.2
|
||||
Homepage: http://www.zfsonlinux.org/
|
||||
Homepage: https://www.zfsonlinux.org/
|
||||
Vcs-Git: https://git.proxmox.com/git/zfsonlinux.git
|
||||
Vcs-Browser: https://git.proxmox.com/?p=zfsonlinux.git;a=summary
|
||||
|
||||
@@ -89,6 +89,51 @@ Description: OpenZFS pool library for Linux
|
||||
.
|
||||
This zpool library provides support for managing zpools.
|
||||
|
||||
Package: python3-pyzfs
|
||||
Section: contrib/python
|
||||
Architecture: linux-any
|
||||
Depends: ${misc:Depends},
|
||||
${python3:Depends},
|
||||
python3-cffi,
|
||||
zfsutils-linux (= ${binary:Version})
|
||||
Description: wrapper for libzfs_core C library
|
||||
libzfs_core is intended to be a stable interface for programmatic
|
||||
administration of ZFS. This wrapper provides one-to-one wrappers for
|
||||
libzfs_core API functions, but the signatures and types are more natural to
|
||||
Python.
|
||||
.
|
||||
nvlists are wrapped as dictionaries or lists depending on their usage.
|
||||
Some parameters have default values depending on typical use for
|
||||
increased convenience. Enumerations and bit flags become strings and lists
|
||||
of strings in Python. Errors are reported as exceptions rather than integer
|
||||
errno-style error codes. The wrapper takes care to provide one-to-many
|
||||
mapping of the error codes to the exceptions by interpreting a context
|
||||
in which the error code is produced.
|
||||
|
||||
Package: pyzfs-doc
|
||||
Section: contrib/doc
|
||||
Architecture: all
|
||||
Depends:
|
||||
${sphinxdoc:Depends},
|
||||
${misc:Depends}
|
||||
Recommends:
|
||||
python3-pyzfs
|
||||
Description: wrapper for libzfs_core C library (documentation)
|
||||
libzfs_core is intended to be a stable interface for programmatic
|
||||
administration of ZFS. This wrapper provides one-to-one wrappers for
|
||||
libzfs_core API functions, but the signatures and types are more natural to
|
||||
Python.
|
||||
.
|
||||
nvlists are wrapped as dictionaries or lists depending on their usage.
|
||||
Some parameters have default values depending on typical use for
|
||||
increased convenience. Enumerations and bit flags become strings and lists
|
||||
of strings in Python. Errors are reported as exceptions rather than integer
|
||||
errno-style error codes. The wrapper takes care to provide one-to-many
|
||||
mapping of the error codes to the exceptions by interpreting a context
|
||||
in which the error code is produced.
|
||||
.
|
||||
This package contains the documentation.
|
||||
|
||||
Package: zfs-initramfs
|
||||
Architecture: all
|
||||
Depends: busybox-initramfs | busybox-static | busybox,
|
||||
@@ -146,7 +191,8 @@ Depends: acl,
|
||||
lsscsi,
|
||||
mdadm,
|
||||
parted,
|
||||
python,
|
||||
python3,
|
||||
python3-pyzfs,
|
||||
sudo,
|
||||
sysstat,
|
||||
zfsutils-linux (>=${binary:Version}),
|
||||
@@ -182,3 +228,22 @@ Description: Debugging symbols for OpenZFS userland libraries and tools
|
||||
.
|
||||
This package contains the debugging symbols for libzpool2linux, libzfs2linux,
|
||||
libnvpair1linux, libuutil1linux, zfs-zed and zfsutils-linux.
|
||||
|
||||
Package: spl
|
||||
Section: contrib/metapackages
|
||||
Architecture: all
|
||||
Depends: ${misc:Depends},
|
||||
Suggests: zfs-test
|
||||
Description: Solaris Porting Layer user-space utilities for Linux (dummy)
|
||||
The Solaris Porting Layer (SPL) is a Linux kernel module which provides
|
||||
many of the Solaris kernel APIs. This shim layer makes it possible to
|
||||
run Solaris kernel code in the Linux kernel with relatively minimal
|
||||
modification. The Solaris Porting LAyer Tests (SPLAT) is a Linux kernel
|
||||
module which provides a testing harness for the SPL module.
|
||||
.
|
||||
SPL can be particularly useful when you want to track upstream Illumos
|
||||
(or any other OpenSolaris fork) development closely and don't want the
|
||||
overhead of maintaining a large patch which converts Solaris primitives
|
||||
to Linux primitives.
|
||||
.
|
||||
This is a transitional dummy package. It can safely be removed.
|
||||
+1
-1
@@ -154,7 +154,7 @@ Copyright: 2010, 2013, Aneurin Price <aneurin.price@gmail.com>
|
||||
License: Expat
|
||||
|
||||
Files: debian/rules
|
||||
Copyright: OPENSOLARIS.LICENSE README.markdown
|
||||
Copyright: LICENSE README.markdown
|
||||
License: UNKNOWN
|
||||
Please fill license UNKNOWN from header of debian/rules
|
||||
|
||||
Vendored
+2
@@ -0,0 +1,2 @@
|
||||
COPYRIGHT
|
||||
LICENSE
|
||||
Vendored
+2
@@ -0,0 +1,2 @@
|
||||
COPYRIGHT
|
||||
LICENSE
|
||||
Vendored
+2
@@ -0,0 +1,2 @@
|
||||
COPYRIGHT
|
||||
LICENSE
|
||||
Vendored
+2
@@ -0,0 +1,2 @@
|
||||
COPYRIGHT
|
||||
LICENSE
|
||||
Vendored
+2
@@ -0,0 +1,2 @@
|
||||
COPYRIGHT
|
||||
LICENSE
|
||||
+3
-2
@@ -4,12 +4,13 @@ From: Debian ZFS on Linux maintainers
|
||||
Date: Wed, 30 Jan 2019 15:12:04 +0100
|
||||
Subject: [PATCH] Check-for-META-and-DCH-consistency-in-autoconf
|
||||
|
||||
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
|
||||
---
|
||||
config/zfs-meta.m4 | 34 +++++++++++++++++++++++++++++-----
|
||||
1 file changed, 29 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/config/zfs-meta.m4 b/config/zfs-meta.m4
|
||||
index 3e1429d99..b8e26c492 100644
|
||||
index aa0fc1420..f525e2010 100644
|
||||
--- a/config/zfs-meta.m4
|
||||
+++ b/config/zfs-meta.m4
|
||||
@@ -1,9 +1,10 @@
|
||||
@@ -35,7 +36,7 @@ index 3e1429d99..b8e26c492 100644
|
||||
|
||||
ZFS_META_NAME=_ZFS_AC_META_GETVAL([(Name|Project|Package)]);
|
||||
if test -n "$ZFS_META_NAME"; then
|
||||
@@ -66,8 +68,30 @@ AC_DEFUN([ZFS_AC_META], [
|
||||
@@ -69,8 +71,30 @@ AC_DEFUN([ZFS_AC_META], [
|
||||
AC_SUBST([ZFS_META_VERSION])
|
||||
fi
|
||||
|
||||
+1
@@ -13,6 +13,7 @@ not actually used.
|
||||
|
||||
Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
|
||||
Signed-off-by: Stoiko Ivanov <s.ivanov@proxmox.com>
|
||||
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
|
||||
---
|
||||
etc/modules-load.d/zfs.conf.in | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
+5
-3
@@ -6,16 +6,18 @@ Subject: [PATCH] Fix the path to the zed binary on the systemd unit.
|
||||
We install zed into /usr/sbin manually meanwhile the upstream default is
|
||||
installing it into /sbin. Ubuntu packages also install zed to /usr/sbin, but
|
||||
they ship their own zfs-zed unit.
|
||||
|
||||
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
|
||||
---
|
||||
etc/systemd/system/zfs-zed.service.in | 2 +-
|
||||
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 e3dec3dca..0b85f169a 100644
|
||||
index f4313625e..444e776fd 100644
|
||||
--- a/etc/systemd/system/zfs-zed.service.in
|
||||
+++ b/etc/systemd/system/zfs-zed.service.in
|
||||
@@ -5,7 +5,7 @@ After=zfs-import-cache.service
|
||||
After=zfs-import-scan.service
|
||||
@@ -3,7 +3,7 @@ Description=ZFS Event Daemon (zed)
|
||||
Documentation=man:zed(8)
|
||||
|
||||
[Service]
|
||||
-ExecStart=@sbindir@/zed -F
|
||||
+3
-2
@@ -8,15 +8,16 @@ Content-Transfer-Encoding: 8bit
|
||||
|
||||
Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
|
||||
Signed-off-by: Stoiko Ivanov <s.ivanov@proxmox.com>
|
||||
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
|
||||
---
|
||||
etc/systemd/system/zfs-import-scan.service.in | 2 +-
|
||||
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
|
||||
index e7b1d8862..060540f63 100644
|
||||
index 4aae9f06e..ec5c45e63 100644
|
||||
--- a/etc/systemd/system/zfs-import-scan.service.in
|
||||
+++ b/etc/systemd/system/zfs-import-scan.service.in
|
||||
@@ -12,7 +12,7 @@ ConditionPathExists=!@sysconfdir@/zfs/zpool.cache
|
||||
@@ -11,7 +11,7 @@ ConditionPathExists=!@sysconfdir@/zfs/zpool.cache
|
||||
[Service]
|
||||
Type=oneshot
|
||||
RemainAfterExit=yes
|
||||
Vendored
+3
-1
@@ -6,12 +6,14 @@ Subject: [PATCH] Enable zed emails
|
||||
The OpenZFS event daemon monitors pools. This patch enables the email sending
|
||||
function by default (if zed is installed). This is consistent with the default
|
||||
behavior of mdadm.
|
||||
|
||||
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
|
||||
---
|
||||
cmd/zed/zed.d/zed.rc | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/cmd/zed/zed.d/zed.rc b/cmd/zed/zed.d/zed.rc
|
||||
index 35a4d1275..c6c106b06 100644
|
||||
index 0ef706849..50632bfcb 100644
|
||||
--- a/cmd/zed/zed.d/zed.rc
|
||||
+++ b/cmd/zed/zed.d/zed.rc
|
||||
@@ -15,7 +15,7 @@
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,333 @@
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Brian Behlendorf <behlendorf1@llnl.gov>
|
||||
Date: Thu, 3 Oct 2019 00:03:20 +0000
|
||||
Subject: [PATCH] Linux 4.14, 4.19, 5.0+ compat: SIMD save/restore
|
||||
|
||||
Contrary to initial testing we cannot rely on these kernels to
|
||||
invalidate the per-cpu FPU state and restore the FPU registers.
|
||||
Therefore, the kfpu_begin() and kfpu_end() functions have been
|
||||
updated to unconditionally save and restore the FPU state.
|
||||
|
||||
Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
|
||||
Issue #9346
|
||||
(cherry picked from commit 813fd014a90229127f80b970a8fef5049fd4c713)
|
||||
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
|
||||
---
|
||||
config/kernel-fpu.m4 | 82 +++++++++++----------
|
||||
include/linux/simd_x86.h | 152 ++++++++++++++++++++++++++++-----------
|
||||
2 files changed, 155 insertions(+), 79 deletions(-)
|
||||
|
||||
diff --git a/config/kernel-fpu.m4 b/config/kernel-fpu.m4
|
||||
index a2c47d65a..9ed9b14ad 100644
|
||||
--- a/config/kernel-fpu.m4
|
||||
+++ b/config/kernel-fpu.m4
|
||||
@@ -2,15 +2,9 @@ dnl #
|
||||
dnl # Handle differences in kernel FPU code.
|
||||
dnl #
|
||||
dnl # Kernel
|
||||
-dnl # 5.2: The fpu->initialized flag was replaced by TIF_NEED_FPU_LOAD.
|
||||
-dnl # HAVE_KERNEL_TIF_NEED_FPU_LOAD
|
||||
-dnl #
|
||||
-dnl # 5.0: As an optimization SIMD operations performed by kernel
|
||||
-dnl # threads can skip saving and restoring their FPU context.
|
||||
-dnl # Wrappers have been introduced to determine the running
|
||||
-dnl # context and use either the SIMD or generic implementation.
|
||||
+dnl # 5.0: Wrappers have been introduced to save/restore the FPU state.
|
||||
dnl # This change was made to the 4.19.38 and 4.14.120 LTS kernels.
|
||||
-dnl # HAVE_KERNEL_FPU_INITIALIZED
|
||||
+dnl # HAVE_KERNEL_FPU_INTERNAL
|
||||
dnl #
|
||||
dnl # 4.2: Use __kernel_fpu_{begin,end}()
|
||||
dnl # HAVE_UNDERSCORE_KERNEL_FPU & KERNEL_EXPORTS_X86_FPU
|
||||
@@ -61,22 +55,47 @@ AC_DEFUN([ZFS_AC_KERNEL_SRC_FPU], [
|
||||
__kernel_fpu_end();
|
||||
], [], [$ZFS_META_LICENSE])
|
||||
|
||||
- ZFS_LINUX_TEST_SRC([fpu_initialized], [
|
||||
- #include <linux/module.h>
|
||||
+ ZFS_LINUX_TEST_SRC([fpu_internal], [
|
||||
+ #if defined(__x86_64) || defined(__x86_64__) || \
|
||||
+ defined(__i386) || defined(__i386__)
|
||||
+ #if !defined(__x86)
|
||||
+ #define __x86
|
||||
+ #endif
|
||||
+ #endif
|
||||
+
|
||||
+ #if !defined(__x86)
|
||||
+ #error Unsupported architecture
|
||||
+ #endif
|
||||
+
|
||||
#include <linux/sched.h>
|
||||
- ],[
|
||||
- struct fpu *fpu = ¤t->thread.fpu;
|
||||
- if (fpu->initialized) { return (0); };
|
||||
- ])
|
||||
|
||||
- ZFS_LINUX_TEST_SRC([tif_need_fpu_load], [
|
||||
- #include <linux/module.h>
|
||||
- #include <asm/thread_info.h>
|
||||
+ #if !defined(PF_KTHREAD)
|
||||
+ #error PF_KTHREAD not defined
|
||||
+ #endif
|
||||
|
||||
- #if !defined(TIF_NEED_FPU_LOAD)
|
||||
- #error "TIF_NEED_FPU_LOAD undefined"
|
||||
+ #ifdef HAVE_KERNEL_FPU_API_HEADER
|
||||
+ #include <asm/fpu/api.h>
|
||||
+ #include <asm/fpu/internal.h>
|
||||
+ #else
|
||||
+ #include <asm/i387.h>
|
||||
+ #include <asm/xcr.h>
|
||||
+ #endif
|
||||
+
|
||||
+ #if !defined(XSTATE_XSAVE)
|
||||
+ #error XSTATE_XSAVE not defined
|
||||
+ #endif
|
||||
+
|
||||
+ #if !defined(XSTATE_XRESTORE)
|
||||
+ #error XSTATE_XRESTORE not defined
|
||||
#endif
|
||||
- ],[])
|
||||
+ ],[
|
||||
+ struct fpu *fpu = ¤t->thread.fpu;
|
||||
+ union fpregs_state *st = &fpu->state;
|
||||
+ struct fregs_state *fr __attribute__ ((unused)) = &st->fsave;
|
||||
+ struct fxregs_state *fxr __attribute__ ((unused)) = &st->fxsave;
|
||||
+ struct xregs_state *xr __attribute__ ((unused)) = &st->xsave;
|
||||
+ fpu->last_cpu = -1;
|
||||
+ ])
|
||||
])
|
||||
|
||||
AC_DEFUN([ZFS_AC_KERNEL_FPU], [
|
||||
@@ -104,25 +123,12 @@ AC_DEFUN([ZFS_AC_KERNEL_FPU], [
|
||||
AC_DEFINE(KERNEL_EXPORTS_X86_FPU, 1,
|
||||
[kernel exports FPU functions])
|
||||
],[
|
||||
- dnl #
|
||||
- dnl # Linux 5.0 kernel
|
||||
- dnl #
|
||||
- ZFS_LINUX_TEST_RESULT([fpu_initialized], [
|
||||
- AC_MSG_RESULT(fpu.initialized)
|
||||
- AC_DEFINE(HAVE_KERNEL_FPU_INITIALIZED, 1,
|
||||
- [kernel fpu.initialized exists])
|
||||
+ ZFS_LINUX_TEST_RESULT([fpu_internal], [
|
||||
+ AC_MSG_RESULT(internal)
|
||||
+ AC_DEFINE(HAVE_KERNEL_FPU_INTERNAL, 1,
|
||||
+ [kernel fpu internal])
|
||||
],[
|
||||
- dnl #
|
||||
- dnl # Linux 5.2 kernel
|
||||
- dnl #
|
||||
- ZFS_LINUX_TEST_RESULT([tif_need_fpu_load], [
|
||||
- AC_MSG_RESULT(TIF_NEED_FPU_LOAD)
|
||||
- AC_DEFINE(
|
||||
- HAVE_KERNEL_TIF_NEED_FPU_LOAD, 1,
|
||||
- [kernel TIF_NEED_FPU_LOAD exists])
|
||||
- ],[
|
||||
- AC_MSG_RESULT(unavailable)
|
||||
- ])
|
||||
+ AC_MSG_RESULT(unavailable)
|
||||
])
|
||||
])
|
||||
])
|
||||
diff --git a/include/linux/simd_x86.h b/include/linux/simd_x86.h
|
||||
index 641f43955..d1ded3af2 100644
|
||||
--- a/include/linux/simd_x86.h
|
||||
+++ b/include/linux/simd_x86.h
|
||||
@@ -126,38 +126,68 @@
|
||||
#endif
|
||||
|
||||
#else /* defined(KERNEL_EXPORTS_X86_FPU) */
|
||||
+
|
||||
/*
|
||||
* When the kernel_fpu_* symbols are unavailable then provide our own
|
||||
* versions which allow the FPU to be safely used in kernel threads.
|
||||
* In practice, this is not a significant restriction for ZFS since the
|
||||
* vast majority of SIMD operations are performed by the IO pipeline.
|
||||
*/
|
||||
+#if defined(HAVE_KERNEL_FPU_INTERNAL)
|
||||
|
||||
/*
|
||||
- * Returns non-zero if FPU operations are allowed in the current context.
|
||||
+ * FPU usage only allowed in dedicated kernel threads.
|
||||
*/
|
||||
-#if defined(HAVE_KERNEL_TIF_NEED_FPU_LOAD)
|
||||
-#define kfpu_allowed() ((current->flags & PF_KTHREAD) && \
|
||||
- test_thread_flag(TIF_NEED_FPU_LOAD))
|
||||
-#elif defined(HAVE_KERNEL_FPU_INITIALIZED)
|
||||
-#define kfpu_allowed() ((current->flags & PF_KTHREAD) && \
|
||||
- current->thread.fpu.initialized)
|
||||
-#else
|
||||
-#define kfpu_allowed() 0
|
||||
-#endif
|
||||
+#define kfpu_allowed() (current->flags & PF_KTHREAD)
|
||||
+#define ex_handler_fprestore ex_handler_default
|
||||
+
|
||||
+/*
|
||||
+ * FPU save and restore instructions.
|
||||
+ */
|
||||
+#define __asm __asm__ __volatile__
|
||||
+#define kfpu_fxsave(addr) __asm("fxsave %0" : "=m" (*(addr)))
|
||||
+#define kfpu_fxsaveq(addr) __asm("fxsaveq %0" : "=m" (*(addr)))
|
||||
+#define kfpu_fnsave(addr) __asm("fnsave %0; fwait" : "=m" (*(addr)))
|
||||
+#define kfpu_fxrstor(addr) __asm("fxrstor %0" : : "m" (*(addr)))
|
||||
+#define kfpu_fxrstorq(addr) __asm("fxrstorq %0" : : "m" (*(addr)))
|
||||
+#define kfpu_frstor(addr) __asm("frstor %0" : : "m" (*(addr)))
|
||||
+#define kfpu_fxsr_clean(rval) __asm("fnclex; emms; fildl %P[addr]" \
|
||||
+ : : [addr] "m" (rval));
|
||||
|
||||
static inline void
|
||||
kfpu_initialize(void)
|
||||
{
|
||||
WARN_ON_ONCE(!(current->flags & PF_KTHREAD));
|
||||
|
||||
-#if defined(HAVE_KERNEL_TIF_NEED_FPU_LOAD)
|
||||
- __fpu_invalidate_fpregs_state(¤t->thread.fpu);
|
||||
- set_thread_flag(TIF_NEED_FPU_LOAD);
|
||||
-#elif defined(HAVE_KERNEL_FPU_INITIALIZED)
|
||||
- __fpu_invalidate_fpregs_state(¤t->thread.fpu);
|
||||
- current->thread.fpu.initialized = 1;
|
||||
-#endif
|
||||
+ /* Invalidate the task's FPU state */
|
||||
+ current->thread.fpu.last_cpu = -1;
|
||||
+}
|
||||
+
|
||||
+static inline void
|
||||
+kfpu_save_xsave(struct xregs_state *addr, uint64_t mask)
|
||||
+{
|
||||
+ uint32_t low, hi;
|
||||
+ int err;
|
||||
+
|
||||
+ low = mask;
|
||||
+ hi = mask >> 32;
|
||||
+ XSTATE_XSAVE(addr, low, hi, err);
|
||||
+ WARN_ON_ONCE(err);
|
||||
+}
|
||||
+
|
||||
+static inline void
|
||||
+kfpu_save_fxsr(struct fxregs_state *addr)
|
||||
+{
|
||||
+ if (IS_ENABLED(CONFIG_X86_32))
|
||||
+ kfpu_fxsave(addr);
|
||||
+ else
|
||||
+ kfpu_fxsaveq(addr);
|
||||
+}
|
||||
+
|
||||
+static inline void
|
||||
+kfpu_save_fsave(struct fregs_state *addr)
|
||||
+{
|
||||
+ kfpu_fnsave(addr);
|
||||
}
|
||||
|
||||
static inline void
|
||||
@@ -172,46 +202,86 @@ kfpu_begin(void)
|
||||
preempt_disable();
|
||||
local_irq_disable();
|
||||
|
||||
-#if defined(HAVE_KERNEL_TIF_NEED_FPU_LOAD)
|
||||
/*
|
||||
* The current FPU registers need to be preserved by kfpu_begin()
|
||||
- * and restored by kfpu_end(). This is required because we can
|
||||
- * not call __cpu_invalidate_fpregs_state() to invalidate the
|
||||
- * per-cpu FPU state and force them to be restored during a
|
||||
- * context switch.
|
||||
+ * and restored by kfpu_end(). This is always required because we
|
||||
+ * can not call __cpu_invalidate_fpregs_state() to invalidate the
|
||||
+ * per-cpu FPU state and force them to be restored. Furthermore,
|
||||
+ * this implementation relies on the space provided in the task
|
||||
+ * structure to store the user FPU state. As such, it can only
|
||||
+ * be used with dedicated kernels which by definition will never
|
||||
+ * store user FPU state.
|
||||
*/
|
||||
- copy_fpregs_to_fpstate(¤t->thread.fpu);
|
||||
-#elif defined(HAVE_KERNEL_FPU_INITIALIZED)
|
||||
+ if (static_cpu_has(X86_FEATURE_XSAVE)) {
|
||||
+ kfpu_save_xsave(¤t->thread.fpu.state.xsave, ~0);
|
||||
+ } else if (static_cpu_has(X86_FEATURE_FXSR)) {
|
||||
+ kfpu_save_fxsr(¤t->thread.fpu.state.fxsave);
|
||||
+ } else {
|
||||
+ kfpu_save_fsave(¤t->thread.fpu.state.fsave);
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+static inline void
|
||||
+kfpu_restore_xsave(struct xregs_state *addr, uint64_t mask)
|
||||
+{
|
||||
+ uint32_t low, hi;
|
||||
+
|
||||
+ low = mask;
|
||||
+ hi = mask >> 32;
|
||||
+ XSTATE_XRESTORE(addr, low, hi);
|
||||
+}
|
||||
+
|
||||
+static inline void
|
||||
+kfpu_restore_fxsr(struct fxregs_state *addr)
|
||||
+{
|
||||
/*
|
||||
- * There is no need to preserve and restore the FPU registers.
|
||||
- * They will always be restored from the task's stored FPU state
|
||||
- * when switching contexts.
|
||||
+ * On AuthenticAMD K7 and K8 processors the fxrstor instruction only
|
||||
+ * restores the _x87 FOP, FIP, and FDP registers when an exception
|
||||
+ * is pending. Clean the _x87 state to force the restore.
|
||||
*/
|
||||
- WARN_ON_ONCE(current->thread.fpu.initialized == 0);
|
||||
-#endif
|
||||
+ if (unlikely(static_cpu_has_bug(X86_BUG_FXSAVE_LEAK)))
|
||||
+ kfpu_fxsr_clean(addr);
|
||||
+
|
||||
+ if (IS_ENABLED(CONFIG_X86_32)) {
|
||||
+ kfpu_fxrstor(addr);
|
||||
+ } else {
|
||||
+ kfpu_fxrstorq(addr);
|
||||
+ }
|
||||
}
|
||||
|
||||
static inline void
|
||||
-kfpu_end(void)
|
||||
+kfpu_restore_fsave(struct fregs_state *addr)
|
||||
{
|
||||
-#if defined(HAVE_KERNEL_TIF_NEED_FPU_LOAD)
|
||||
- union fpregs_state *state = ¤t->thread.fpu.state;
|
||||
- int error;
|
||||
+ kfpu_frstor(addr);
|
||||
+}
|
||||
|
||||
- if (use_xsave()) {
|
||||
- error = copy_kernel_to_xregs_err(&state->xsave, -1);
|
||||
- } else if (use_fxsr()) {
|
||||
- error = copy_kernel_to_fxregs_err(&state->fxsave);
|
||||
+static inline void
|
||||
+kfpu_end(void)
|
||||
+{
|
||||
+ if (static_cpu_has(X86_FEATURE_XSAVE)) {
|
||||
+ kfpu_restore_xsave(¤t->thread.fpu.state.xsave, ~0);
|
||||
+ } else if (static_cpu_has(X86_FEATURE_FXSR)) {
|
||||
+ kfpu_restore_fxsr(¤t->thread.fpu.state.fxsave);
|
||||
} else {
|
||||
- error = copy_kernel_to_fregs_err(&state->fsave);
|
||||
+ kfpu_restore_fsave(¤t->thread.fpu.state.fsave);
|
||||
}
|
||||
- WARN_ON_ONCE(error);
|
||||
-#endif
|
||||
|
||||
local_irq_enable();
|
||||
preempt_enable();
|
||||
}
|
||||
-#endif /* defined(HAVE_KERNEL_FPU) */
|
||||
+
|
||||
+#else
|
||||
+
|
||||
+/*
|
||||
+ * FPU support is unavailable.
|
||||
+ */
|
||||
+#define kfpu_allowed() 0
|
||||
+#define kfpu_initialize(tsk) do {} while (0)
|
||||
+#define kfpu_begin() do {} while (0)
|
||||
+#define kfpu_end() do {} while (0)
|
||||
+
|
||||
+#endif /* defined(HAVE_KERNEL_FPU_INTERNAL) */
|
||||
+#endif /* defined(KERNEL_EXPORTS_X86_FPU) */
|
||||
|
||||
#else /* defined(_KERNEL) */
|
||||
/*
|
||||
@@ -0,0 +1,40 @@
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Brian Behlendorf <behlendorf1@llnl.gov>
|
||||
Date: Wed, 17 Jul 2019 09:14:36 -0700
|
||||
Subject: [PATCH] Fix CONFIG_X86_DEBUG_FPU build failure
|
||||
|
||||
When CONFIG_X86_DEBUG_FPU is defined the alternatives_patched symbol
|
||||
is pulled in as a dependency which results in a build failure. To
|
||||
prevent this undefine CONFIG_X86_DEBUG_FPU to disable the WARN_ON_FPU()
|
||||
macro and rely on WARN_ON_ONCE debugging checks which were previously
|
||||
added.
|
||||
|
||||
Reviewed-by: Tony Hutter <hutter2@llnl.gov>
|
||||
Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
|
||||
Closes #9041
|
||||
Closes #9049
|
||||
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
|
||||
---
|
||||
include/linux/simd_x86.h | 9 +++++++++
|
||||
1 file changed, 9 insertions(+)
|
||||
|
||||
diff --git a/include/linux/simd_x86.h b/include/linux/simd_x86.h
|
||||
index d1ded3af2..b32bccc41 100644
|
||||
--- a/include/linux/simd_x86.h
|
||||
+++ b/include/linux/simd_x86.h
|
||||
@@ -84,6 +84,15 @@
|
||||
|
||||
#if defined(_KERNEL)
|
||||
|
||||
+/*
|
||||
+ * Disable the WARN_ON_FPU() macro to prevent additional dependencies
|
||||
+ * when providing the kfpu_* functions. Relevant warnings are included
|
||||
+ * as appropriate and are unconditionally enabled.
|
||||
+ */
|
||||
+#if defined(CONFIG_X86_DEBUG_FPU) && !defined(KERNEL_EXPORTS_X86_FPU)
|
||||
+#undef CONFIG_X86_DEBUG_FPU
|
||||
+#endif
|
||||
+
|
||||
#if defined(HAVE_KERNEL_FPU_API_HEADER)
|
||||
#include <asm/fpu/api.h>
|
||||
#include <asm/fpu/internal.h>
|
||||
+2433
File diff suppressed because it is too large
Load Diff
+327
@@ -0,0 +1,327 @@
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Brian Behlendorf <behlendorf1@llnl.gov>
|
||||
Date: Wed, 9 Oct 2019 22:36:19 +0000
|
||||
Subject: [PATCH] Allow FPU usage in user and kernel thread contexts
|
||||
|
||||
Even for dedicated kernel threads we apparently cannot be
|
||||
guaranteed that the kernel won't modify the FPU state which
|
||||
we saved in the task struck. Allocate our own per-cpu state
|
||||
to preserve the saved register state. Aside from correctness,
|
||||
this allows use of the FPU in user threads again.
|
||||
|
||||
Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
|
||||
(cherry picked from commit 11170d9073edcbb613f5a4c992293cbb4e3c8e31)
|
||||
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
|
||||
---
|
||||
config/kernel-fpu.m4 | 7 --
|
||||
include/os/linux/kernel/linux/simd.h | 1 -
|
||||
include/os/linux/kernel/linux/simd_aarch64.h | 2 -
|
||||
include/os/linux/kernel/linux/simd_x86.h | 87 +++++++++++++-------
|
||||
module/spl/spl-taskq.c | 2 -
|
||||
module/spl/spl-thread.c | 2 -
|
||||
module/zcommon/zfs_prop.c | 18 ++++
|
||||
7 files changed, 73 insertions(+), 46 deletions(-)
|
||||
|
||||
diff --git a/config/kernel-fpu.m4 b/config/kernel-fpu.m4
|
||||
index 9ed9b14ad..15bea3c22 100644
|
||||
--- a/config/kernel-fpu.m4
|
||||
+++ b/config/kernel-fpu.m4
|
||||
@@ -67,12 +67,6 @@ AC_DEFUN([ZFS_AC_KERNEL_SRC_FPU], [
|
||||
#error Unsupported architecture
|
||||
#endif
|
||||
|
||||
- #include <linux/sched.h>
|
||||
-
|
||||
- #if !defined(PF_KTHREAD)
|
||||
- #error PF_KTHREAD not defined
|
||||
- #endif
|
||||
-
|
||||
#ifdef HAVE_KERNEL_FPU_API_HEADER
|
||||
#include <asm/fpu/api.h>
|
||||
#include <asm/fpu/internal.h>
|
||||
@@ -94,7 +88,6 @@ AC_DEFUN([ZFS_AC_KERNEL_SRC_FPU], [
|
||||
struct fregs_state *fr __attribute__ ((unused)) = &st->fsave;
|
||||
struct fxregs_state *fxr __attribute__ ((unused)) = &st->fxsave;
|
||||
struct xregs_state *xr __attribute__ ((unused)) = &st->xsave;
|
||||
- fpu->last_cpu = -1;
|
||||
])
|
||||
])
|
||||
|
||||
diff --git a/include/os/linux/kernel/linux/simd.h b/include/os/linux/kernel/linux/simd.h
|
||||
index 1f6574a90..5138a908b 100644
|
||||
--- a/include/os/linux/kernel/linux/simd.h
|
||||
+++ b/include/os/linux/kernel/linux/simd.h
|
||||
@@ -33,7 +33,6 @@
|
||||
#else
|
||||
|
||||
#define kfpu_allowed() 0
|
||||
-#define kfpu_initialize(tsk) do {} while (0)
|
||||
#define kfpu_begin() do {} while (0)
|
||||
#define kfpu_end() do {} while (0)
|
||||
|
||||
diff --git a/include/os/linux/kernel/linux/simd_aarch64.h b/include/os/linux/kernel/linux/simd_aarch64.h
|
||||
index ac530d920..f6cf3c377 100644
|
||||
--- a/include/os/linux/kernel/linux/simd_aarch64.h
|
||||
+++ b/include/os/linux/kernel/linux/simd_aarch64.h
|
||||
@@ -27,7 +27,6 @@
|
||||
*
|
||||
* Kernel fpu methods:
|
||||
* kfpu_allowed()
|
||||
- * kfpu_initialize()
|
||||
* kfpu_begin()
|
||||
* kfpu_end()
|
||||
*/
|
||||
@@ -43,7 +42,6 @@
|
||||
#include <asm/neon.h>
|
||||
|
||||
#define kfpu_allowed() 1
|
||||
-#define kfpu_initialize(tsk) do {} while (0)
|
||||
#define kfpu_begin() kernel_neon_begin()
|
||||
#define kfpu_end() kernel_neon_end()
|
||||
|
||||
diff --git a/include/os/linux/kernel/linux/simd_x86.h b/include/os/linux/kernel/linux/simd_x86.h
|
||||
index 486e31845..c42ea918e 100644
|
||||
--- a/include/os/linux/kernel/linux/simd_x86.h
|
||||
+++ b/include/os/linux/kernel/linux/simd_x86.h
|
||||
@@ -27,7 +27,6 @@
|
||||
*
|
||||
* Kernel fpu methods:
|
||||
* kfpu_allowed()
|
||||
- * kfpu_initialize()
|
||||
* kfpu_begin()
|
||||
* kfpu_end()
|
||||
*
|
||||
@@ -99,7 +98,6 @@
|
||||
#if defined(KERNEL_EXPORTS_X86_FPU)
|
||||
|
||||
#define kfpu_allowed() 1
|
||||
-#define kfpu_initialize(tsk) do {} while (0)
|
||||
|
||||
#if defined(HAVE_UNDERSCORE_KERNEL_FPU)
|
||||
#define kfpu_begin() \
|
||||
@@ -129,16 +127,52 @@
|
||||
|
||||
/*
|
||||
* When the kernel_fpu_* symbols are unavailable then provide our own
|
||||
- * versions which allow the FPU to be safely used in kernel threads.
|
||||
- * In practice, this is not a significant restriction for ZFS since the
|
||||
- * vast majority of SIMD operations are performed by the IO pipeline.
|
||||
+ * versions which allow the FPU to be safely used.
|
||||
*/
|
||||
#if defined(HAVE_KERNEL_FPU_INTERNAL)
|
||||
|
||||
+extern struct fpu **zfs_kfpu_fpregs;
|
||||
+
|
||||
/*
|
||||
- * FPU usage only allowed in dedicated kernel threads.
|
||||
+ * Initialize per-cpu variables to store FPU state.
|
||||
*/
|
||||
-#define kfpu_allowed() (current->flags & PF_KTHREAD)
|
||||
+static inline void
|
||||
+kfpu_fini(void)
|
||||
+{
|
||||
+ int cpu;
|
||||
+
|
||||
+ for_each_possible_cpu(cpu) {
|
||||
+ if (zfs_kfpu_fpregs[cpu] != NULL) {
|
||||
+ kfree(zfs_kfpu_fpregs[cpu]);
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ kfree(zfs_kfpu_fpregs);
|
||||
+}
|
||||
+
|
||||
+static inline int
|
||||
+kfpu_init(void)
|
||||
+{
|
||||
+ int cpu;
|
||||
+
|
||||
+ zfs_kfpu_fpregs = kzalloc(num_possible_cpus() *
|
||||
+ sizeof (struct fpu *), GFP_KERNEL);
|
||||
+ if (zfs_kfpu_fpregs == NULL)
|
||||
+ return (ENOMEM);
|
||||
+
|
||||
+ for_each_possible_cpu(cpu) {
|
||||
+ zfs_kfpu_fpregs[cpu] = kmalloc_node(sizeof (struct fpu),
|
||||
+ GFP_KERNEL, cpu_to_node(cpu));
|
||||
+ if (zfs_kfpu_fpregs[cpu] == NULL) {
|
||||
+ kfpu_fini();
|
||||
+ return (ENOMEM);
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ return (0);
|
||||
+}
|
||||
+
|
||||
+#define kfpu_allowed() 1
|
||||
#define ex_handler_fprestore ex_handler_default
|
||||
|
||||
/*
|
||||
@@ -154,15 +188,6 @@
|
||||
#define kfpu_fxsr_clean(rval) __asm("fnclex; emms; fildl %P[addr]" \
|
||||
: : [addr] "m" (rval));
|
||||
|
||||
-static inline void
|
||||
-kfpu_initialize(void)
|
||||
-{
|
||||
- WARN_ON_ONCE(!(current->flags & PF_KTHREAD));
|
||||
-
|
||||
- /* Invalidate the task's FPU state */
|
||||
- current->thread.fpu.last_cpu = -1;
|
||||
-}
|
||||
-
|
||||
static inline void
|
||||
kfpu_save_xsave(struct xregs_state *addr, uint64_t mask)
|
||||
{
|
||||
@@ -193,8 +218,6 @@ kfpu_save_fsave(struct fregs_state *addr)
|
||||
static inline void
|
||||
kfpu_begin(void)
|
||||
{
|
||||
- WARN_ON_ONCE(!kfpu_allowed());
|
||||
-
|
||||
/*
|
||||
* Preemption and interrupts must be disabled for the critical
|
||||
* region where the FPU state is being modified.
|
||||
@@ -204,20 +227,18 @@ kfpu_begin(void)
|
||||
|
||||
/*
|
||||
* The current FPU registers need to be preserved by kfpu_begin()
|
||||
- * and restored by kfpu_end(). This is always required because we
|
||||
- * can not call __cpu_invalidate_fpregs_state() to invalidate the
|
||||
- * per-cpu FPU state and force them to be restored. Furthermore,
|
||||
- * this implementation relies on the space provided in the task
|
||||
- * structure to store the user FPU state. As such, it can only
|
||||
- * be used with dedicated kernels which by definition will never
|
||||
- * store user FPU state.
|
||||
+ * and restored by kfpu_end(). They are stored in a dedicated
|
||||
+ * per-cpu variable, not in the task struct, this allows any user
|
||||
+ * FPU state to be correctly preserved and restored.
|
||||
*/
|
||||
+ struct fpu *fpu = zfs_kfpu_fpregs[smp_processor_id()];
|
||||
+
|
||||
if (static_cpu_has(X86_FEATURE_XSAVE)) {
|
||||
- kfpu_save_xsave(¤t->thread.fpu.state.xsave, ~0);
|
||||
+ kfpu_save_xsave(&fpu->state.xsave, ~0);
|
||||
} else if (static_cpu_has(X86_FEATURE_FXSR)) {
|
||||
- kfpu_save_fxsr(¤t->thread.fpu.state.fxsave);
|
||||
+ kfpu_save_fxsr(&fpu->state.fxsave);
|
||||
} else {
|
||||
- kfpu_save_fsave(¤t->thread.fpu.state.fsave);
|
||||
+ kfpu_save_fsave(&fpu->state.fsave);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -258,12 +279,14 @@ kfpu_restore_fsave(struct fregs_state *addr)
|
||||
static inline void
|
||||
kfpu_end(void)
|
||||
{
|
||||
+ struct fpu *fpu = zfs_kfpu_fpregs[smp_processor_id()];
|
||||
+
|
||||
if (static_cpu_has(X86_FEATURE_XSAVE)) {
|
||||
- kfpu_restore_xsave(¤t->thread.fpu.state.xsave, ~0);
|
||||
+ kfpu_restore_xsave(&fpu->state.xsave, ~0);
|
||||
} else if (static_cpu_has(X86_FEATURE_FXSR)) {
|
||||
- kfpu_restore_fxsr(¤t->thread.fpu.state.fxsave);
|
||||
+ kfpu_restore_fxsr(&fpu->state.fxsave);
|
||||
} else {
|
||||
- kfpu_restore_fsave(¤t->thread.fpu.state.fsave);
|
||||
+ kfpu_restore_fsave(&fpu->state.fsave);
|
||||
}
|
||||
|
||||
local_irq_enable();
|
||||
@@ -276,7 +299,6 @@ kfpu_end(void)
|
||||
* FPU support is unavailable.
|
||||
*/
|
||||
#define kfpu_allowed() 0
|
||||
-#define kfpu_initialize(tsk) do {} while (0)
|
||||
#define kfpu_begin() do {} while (0)
|
||||
#define kfpu_end() do {} while (0)
|
||||
|
||||
@@ -286,6 +308,7 @@ kfpu_end(void)
|
||||
/*
|
||||
* Linux kernel provides an interface for CPU feature testing.
|
||||
*/
|
||||
+
|
||||
/*
|
||||
* Detect register set support
|
||||
*/
|
||||
diff --git a/module/spl/spl-taskq.c b/module/spl/spl-taskq.c
|
||||
index 90e1d0a4d..a39f94e4c 100644
|
||||
--- a/module/spl/spl-taskq.c
|
||||
+++ b/module/spl/spl-taskq.c
|
||||
@@ -28,7 +28,6 @@
|
||||
#include <sys/taskq.h>
|
||||
#include <sys/kmem.h>
|
||||
#include <sys/tsd.h>
|
||||
-#include <sys/simd.h>
|
||||
|
||||
int spl_taskq_thread_bind = 0;
|
||||
module_param(spl_taskq_thread_bind, int, 0644);
|
||||
@@ -854,7 +853,6 @@ taskq_thread(void *args)
|
||||
sigfillset(&blocked);
|
||||
sigprocmask(SIG_BLOCK, &blocked, NULL);
|
||||
flush_signals(current);
|
||||
- kfpu_initialize();
|
||||
|
||||
tsd_set(taskq_tsd, tq);
|
||||
spin_lock_irqsave_nested(&tq->tq_lock, flags, tq->tq_lock_class);
|
||||
diff --git a/module/spl/spl-thread.c b/module/spl/spl-thread.c
|
||||
index 29de9252a..0352a31ea 100644
|
||||
--- a/module/spl/spl-thread.c
|
||||
+++ b/module/spl/spl-thread.c
|
||||
@@ -27,7 +27,6 @@
|
||||
#include <sys/thread.h>
|
||||
#include <sys/kmem.h>
|
||||
#include <sys/tsd.h>
|
||||
-#include <sys/simd.h>
|
||||
|
||||
/*
|
||||
* Thread interfaces
|
||||
@@ -55,7 +54,6 @@ thread_generic_wrapper(void *arg)
|
||||
args = tp->tp_args;
|
||||
set_current_state(tp->tp_state);
|
||||
set_user_nice((kthread_t *)current, PRIO_TO_NICE(tp->tp_pri));
|
||||
- kfpu_initialize();
|
||||
kmem_free(tp->tp_name, tp->tp_name_size);
|
||||
kmem_free(tp, sizeof (thread_priv_t));
|
||||
|
||||
diff --git a/module/zcommon/zfs_prop.c b/module/zcommon/zfs_prop.c
|
||||
index dab749138..b5fa1c2f4 100644
|
||||
--- a/module/zcommon/zfs_prop.c
|
||||
+++ b/module/zcommon/zfs_prop.c
|
||||
@@ -853,10 +853,27 @@ zfs_prop_align_right(zfs_prop_t prop)
|
||||
#endif
|
||||
|
||||
#if defined(_KERNEL)
|
||||
+
|
||||
+#if defined(HAVE_KERNEL_FPU_INTERNAL)
|
||||
+#include <linux/simd.h>
|
||||
+
|
||||
+struct fpu **zfs_kfpu_fpregs;
|
||||
+EXPORT_SYMBOL(zfs_kfpu_fpregs);
|
||||
+
|
||||
+#else
|
||||
+#define kfpu_init() 0
|
||||
+#define kfpu_fini() ((void) 0)
|
||||
+#endif /* HAVE_KERNEL_FPU_INTERNAL */
|
||||
+
|
||||
static int __init
|
||||
zcommon_init(void)
|
||||
{
|
||||
+ int error = kfpu_init();
|
||||
+ if (error)
|
||||
+ return (-error);
|
||||
+
|
||||
fletcher_4_init();
|
||||
+
|
||||
return (0);
|
||||
}
|
||||
|
||||
@@ -864,6 +881,7 @@ static void __exit
|
||||
zcommon_fini(void)
|
||||
{
|
||||
fletcher_4_fini();
|
||||
+ kfpu_fini();
|
||||
}
|
||||
|
||||
module_init(zcommon_init);
|
||||
Vendored
+11
@@ -0,0 +1,11 @@
|
||||
0001-Check-for-META-and-DCH-consistency-in-autoconf.patch
|
||||
0002-always-load-ZFS-module-on-boot.patch
|
||||
0003-Fix-the-path-to-the-zed-binary-on-the-systemd-unit.patch
|
||||
0004-import-with-d-dev-disk-by-id-in-scan-service.patch
|
||||
0005-Enable-zed-emails.patch
|
||||
0006-Linux-5.0-compat-SIMD-compatibility.patch
|
||||
0007-Perform-KABI-checks-in-parallel.patch
|
||||
0008-Linux-4.14-4.19-5.0-compat-SIMD-save-restore.patch
|
||||
0009-Fix-CONFIG_X86_DEBUG_FPU-build-failure.patch
|
||||
0010-OpenZFS-restructuring-move-platform-specific-headers.patch
|
||||
0011-Allow-FPU-usage-in-user-and-kernel-thread-contexts.patch
|
||||
Vendored
+1
@@ -0,0 +1 @@
|
||||
usr/lib/python3*
|
||||
Vendored
+30
-8
@@ -2,15 +2,25 @@
|
||||
|
||||
include /usr/share/dpkg/default.mk
|
||||
|
||||
VERSION := $(DEB_VERSION_UPSTREAM)
|
||||
REVISION := $(shell echo $(DEB_VERSION) | cut -d- -f2)
|
||||
|
||||
SPHINX_BUILD = $(shell dpkg -L python3-sphinx | grep "sphinx-build$$")
|
||||
|
||||
export DEB_BUILD_MAINT_OPTIONS = hardening=+all
|
||||
|
||||
%:
|
||||
dh $@ --with autoreconf,python3,systemd --parallel
|
||||
dh $@ --with autoreconf,python3,systemd,sphinxdoc --parallel
|
||||
|
||||
override_dh_autoreconf:
|
||||
adapt_meta_file:
|
||||
@# Embed the downstream version in the module.
|
||||
@sed -e 's/^Version:.*/Version: $(DEB_VERSION_UPSTREAM)/' -i.orig META
|
||||
@sed \
|
||||
-e 's/^Version:.*/Version: $(VERSION)/' \
|
||||
-e 's/^Release:.*/Release: $(REVISION)/' \
|
||||
-i.orig META
|
||||
|
||||
|
||||
override_dh_autoreconf: adapt_meta_file
|
||||
dh_autoreconf
|
||||
|
||||
override_dh_auto_configure:
|
||||
@@ -20,9 +30,12 @@ override_dh_auto_configure:
|
||||
--sbindir=/sbin \
|
||||
--libdir=/lib \
|
||||
--with-udevdir=/lib/udev \
|
||||
--with-zfsexecdir=/usr/lib/zfs-linux \
|
||||
--enable-systemd \
|
||||
--enable-pyzfs \
|
||||
--with-systemdunitdir=/lib/systemd/system \
|
||||
--with-systemdpresetdir=/lib/systemd/system-preset \
|
||||
--with-systemdgeneratordir=/lib/systemd/system-generators \
|
||||
--with-config=user
|
||||
|
||||
override_dh_auto_test:
|
||||
@@ -41,9 +54,9 @@ override_dh_auto_install:
|
||||
# Remove suffix (.py) as per policy 10.4 - Scripts
|
||||
# https://www.debian.org/doc/debian-policy/ch-files.html#s-scripts
|
||||
mkdir -p '$(CURDIR)/debian/tmp/usr/sbin/'
|
||||
mv '$(CURDIR)/debian/tmp/usr/bin/arc_summary.py' '$(CURDIR)/debian/tmp/usr/sbin/arc_summary'
|
||||
mv '$(CURDIR)/debian/tmp/usr/bin/arcstat.py' '$(CURDIR)/debian/tmp/usr/sbin/arcstat'
|
||||
mv '$(CURDIR)/debian/tmp/usr/bin/dbufstat.py' '$(CURDIR)/debian/tmp/usr/sbin/dbufstat'
|
||||
mv '$(CURDIR)/debian/tmp/usr/bin/arc_summary' '$(CURDIR)/debian/tmp/usr/sbin/arc_summary'
|
||||
mv '$(CURDIR)/debian/tmp/usr/bin/arcstat' '$(CURDIR)/debian/tmp/usr/sbin/arcstat'
|
||||
mv '$(CURDIR)/debian/tmp/usr/bin/dbufstat' '$(CURDIR)/debian/tmp/usr/sbin/dbufstat'
|
||||
|
||||
@# Zed has dependencies outside of the system root.
|
||||
mv '$(CURDIR)/debian/tmp/sbin/zed' '$(CURDIR)/debian/tmp/usr/sbin/zed'
|
||||
@@ -58,6 +71,9 @@ override_dh_auto_install:
|
||||
chmod a-x '$(CURDIR)/debian/tmp/etc/default/zfs'
|
||||
chmod a-x '$(CURDIR)/debian/tmp/usr/share/bash-completion/completions/zfs'
|
||||
|
||||
override_dh_python3:
|
||||
dh_python3 -p python3-pyzfs
|
||||
|
||||
override_dh_makeshlibs:
|
||||
dh_makeshlibs -a -V
|
||||
ifeq ($(BUILD_UDEB), true)
|
||||
@@ -77,9 +93,15 @@ override_dh_auto_clean:
|
||||
dh_auto_clean
|
||||
@if test -e META.orig; then mv META.orig META; fi
|
||||
|
||||
override_dh_install:
|
||||
override_dh_missing:
|
||||
find . -name lib*.la -delete
|
||||
dh_install --fail-missing
|
||||
dh_missing --fail-missing
|
||||
|
||||
override_dh_installdocs:
|
||||
dh_installdocs
|
||||
ifeq (,$(findstring nodoc, $(DEB_BUILD_OPTIONS)))
|
||||
http_proxy='127.0.0.1:9' $(SPHINX_BUILD) -N -bhtml "$(CURDIR)/contrib/pyzfs/docs/source/" debian/pyzfs-doc/usr/share/doc/pyzfs-doc/html/
|
||||
endif
|
||||
|
||||
# ------------
|
||||
|
||||
Vendored
Vendored
@@ -1,21 +1,15 @@
|
||||
sbin/zinject
|
||||
sbin/zpios
|
||||
sbin/ztest
|
||||
usr/bin/raidz_test
|
||||
usr/share/man/man1/raidz_test.1
|
||||
usr/share/man/man1/test-runner.1
|
||||
usr/share/man/man1/zpios.1
|
||||
usr/share/man/man1/ztest.1
|
||||
usr/share/man/man8/zinject.8
|
||||
usr/share/zfs/common.sh
|
||||
usr/share/zfs/runfiles/
|
||||
usr/share/zfs/smb.sh
|
||||
usr/share/zfs/test-runner
|
||||
usr/share/zfs/zfs-tests.sh
|
||||
usr/share/zfs/zfs-tests/
|
||||
usr/share/zfs/zfs.sh
|
||||
usr/share/zfs/zimport.sh
|
||||
usr/share/zfs/zloop.sh
|
||||
usr/share/zfs/zpios*
|
||||
usr/share/zfs/zpool-config/
|
||||
usr/share/zfs/zpool-create.sh
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
etc/zfs/zed.d/*
|
||||
lib/systemd/system/zfs-zed.service
|
||||
usr/lib/*/zfs/zed.d/*
|
||||
usr/lib/zfs-linux/zed.d/*
|
||||
usr/sbin/zed
|
||||
usr/share/man/man8/zed.8
|
||||
Vendored
+2
@@ -0,0 +1,2 @@
|
||||
COPYRIGHT
|
||||
LICENSE
|
||||
@@ -8,7 +8,10 @@ lib/systemd/system/zfs-import-scan.service
|
||||
lib/systemd/system/zfs-import.target
|
||||
lib/systemd/system/zfs-mount.service
|
||||
lib/systemd/system/zfs-share.service
|
||||
lib/systemd/system/zfs-volume-wait.service
|
||||
lib/systemd/system/zfs-volumes.target
|
||||
lib/systemd/system/zfs.target
|
||||
lib/systemd/system-generators/zfs-mount-generator
|
||||
lib/udev/
|
||||
sbin/fsck.zfs
|
||||
sbin/mount.zfs
|
||||
@@ -18,6 +21,7 @@ sbin/zhack
|
||||
sbin/zpool
|
||||
sbin/zstreamdump
|
||||
usr/bin/zgenhostid
|
||||
usr/bin/zvol_wait
|
||||
usr/lib/modules-load.d/ lib/
|
||||
usr/lib/zfs-linux/zpool.d/
|
||||
usr/sbin/arc_summary
|
||||
@@ -25,12 +29,15 @@ usr/sbin/arcstat
|
||||
usr/sbin/dbufstat
|
||||
usr/share/bash-completion/completions
|
||||
usr/share/man/man1/zhack.1
|
||||
usr/share/man/man1/zvol_wait.1
|
||||
usr/share/man/man5/
|
||||
usr/share/man/man8/fsck.zfs.8
|
||||
usr/share/man/man8/mount.zfs.8
|
||||
usr/share/man/man8/vdev_id.8
|
||||
usr/share/man/man8/zdb.8
|
||||
usr/share/man/man8/zfs.8
|
||||
usr/share/man/man8/zfs-mount-generator.8
|
||||
usr/share/man/man8/zfs-program.8
|
||||
usr/share/man/man8/zgenhostid.8
|
||||
usr/share/man/man8/zpool.8
|
||||
usr/share/man/man8/zstreamdump.8
|
||||
Vendored
+19
@@ -0,0 +1,19 @@
|
||||
#!/bin/sh
|
||||
set -e
|
||||
# The hostname and hostid of the last system to access a ZFS pool are stored in
|
||||
# the ZFS pool itself. A pool is foreign if, during `zpool import`, the
|
||||
# current hostname and hostid are different than the stored values thereof.
|
||||
#
|
||||
# The only way of having a stable hostid is to define it in /etc/hostid.
|
||||
# This postinst helper will check if we already have the hostid stabilized by
|
||||
# checking the existence of the file /etc/hostid to be 4 bytes at least.
|
||||
# If this file don't already exists on our system or has less than 4 bytes, then
|
||||
# a new (random) value is generated with zgenhostid (8) and stored in
|
||||
# /etc/hostid
|
||||
|
||||
if [ ! -f /etc/hostid ] || [ "$(stat -c %s /etc/hostid)" -lt 4 ] ; then
|
||||
zgenhostid
|
||||
fi
|
||||
|
||||
#DEBHELPER#
|
||||
|
||||
@@ -1,380 +0,0 @@
|
||||
spl-linux (0.7.13-pve1~bpo2) unstable; urgency=medium
|
||||
|
||||
* update SPL to 0.7.13
|
||||
|
||||
* base spl-linux on upstream ZOL instead of debian
|
||||
|
||||
-- Proxmox Support Team <support@proxmox.com> Fri, 08 Mar 2019 06:53:13 +0100
|
||||
|
||||
spl-linux (0.7.12-pve1~bpo1) unstable; urgency=medium
|
||||
|
||||
* update SPL to 0.7.12
|
||||
|
||||
-- Proxmox Support Team <support@proxmox.com> Wed, 14 Nov 2018 17:51:59 +0100
|
||||
|
||||
spl-linux (0.7.11-pve2~bpo1) unstable; urgency=medium
|
||||
|
||||
* update SPL to debian/0.7.11
|
||||
|
||||
* Backport deadlock fix between mm_sem and tx assign in zfs_write() and page
|
||||
fault
|
||||
|
||||
-- Proxmox Support Team <support@proxmox.com> Mon, 29 Oct 2018 13:47:39 +0100
|
||||
|
||||
spl-linux (0.7.11-pve1~bpo1) unstable; urgency=medium
|
||||
|
||||
* update SPL to 0.7.11
|
||||
|
||||
-- Proxmox Support Team <support@proxmox.com> Mon, 10 Sep 2018 15:47:06 +0200
|
||||
|
||||
spl-linux (0.7.9-pve1~bpo9) unstable; urgency=medium
|
||||
|
||||
* update SPL to 0.7.9
|
||||
|
||||
-- Proxmox Support Team <support@proxmox.com> Fri, 18 May 2018 13:49:09 +0200
|
||||
|
||||
spl-linux (0.7.8-pve1~bpo9) unstable; urgency=medium
|
||||
|
||||
* update SPL to 0.7.8 (no changes)
|
||||
|
||||
-- Proxmox Support Team <support@proxmox.com> Mon, 30 Apr 2018 13:47:22 +0200
|
||||
|
||||
spl-linux (0.7.7-pve1~bpo9) unstable; urgency=medium
|
||||
|
||||
* update SPL to 0.7.7
|
||||
|
||||
-- Proxmox Support Team <support@proxmox.com> Tue, 3 Apr 2018 14:28:35 +0200
|
||||
|
||||
spl-linux (0.7.6-pve1~bpo9) unstable; urgency=medium
|
||||
|
||||
* update SPL to 0.7.6
|
||||
|
||||
-- Proxmox Support Team <support@proxmox.com> Wed, 21 Feb 2018 09:47:54 +0100
|
||||
|
||||
spl-linux (0.7.4-pve1~bpo9) unstable; urgency=medium
|
||||
|
||||
* update SPL to 0.7.4
|
||||
|
||||
-- Proxmox Support Team <support@proxmox.com> Tue, 19 Dec 2017 12:52:42 +0100
|
||||
|
||||
spl-linux (0.7.3-pve1~bpo9) unstable; urgency=medium
|
||||
|
||||
* update spl to 0.7.3
|
||||
|
||||
-- Proxmox Support Team <support@proxmox.com> Mon, 6 Nov 2017 09:14:19 +0100
|
||||
|
||||
spl-linux (0.7.2-pve1~bpo90) unstable; urgency=medium
|
||||
|
||||
* update spl to 0.7.2
|
||||
|
||||
* clean up man pages
|
||||
|
||||
-- Proxmox Support Team <support@proxmox.com> Thu, 12 Oct 2017 13:33:04 +0200
|
||||
|
||||
spl-linux (0.6.5.11-pve10~bpo90) unstable; urgency=medium
|
||||
|
||||
* update spl to debian/0.6.5.11-1
|
||||
|
||||
-- Proxmox Support Team <support@proxmox.com> Thu, 27 Jul 2017 13:11:45 +0200
|
||||
|
||||
spl-linux (0.6.5.9-pve9~bpo90) unstable; urgency=medium
|
||||
|
||||
* rebuild for PVE 5.0 / Debian Stretch
|
||||
|
||||
-- Proxmox Support Team <support@proxmox.com> Fri, 10 Mar 2017 09:45:52 +0100
|
||||
|
||||
spl-linux (0.6.5.9-pve8~bpo80) unstable; urgency=medium
|
||||
|
||||
* update spl to debian/0.6.5.9-1
|
||||
|
||||
-- Proxmox Support Team <support@proxmox.com> Mon, 6 Feb 2017 12:39:35 +0100
|
||||
|
||||
spl-linux (0.6.5.8-pve7~bpo80) unstable; urgency=medium
|
||||
|
||||
* update spl to debian/0.6.5.8-2
|
||||
|
||||
* switch package upstream sources to Debian (Jessie)
|
||||
|
||||
-- Proxmox Support Team <support@proxmox.com> Wed, 12 Oct 2016 11:16:02 +0200
|
||||
|
||||
spl-linux (0.6.5.7-pve6~bpo80) unstable; urgency=medium
|
||||
|
||||
* update pkg-spl to jessie/0.6.5.7-5
|
||||
|
||||
* change package versioning to allow upgrades from PVE3/wheezy
|
||||
|
||||
-- Proxmox Support Team <support@proxmox.com> Tue, 28 Jun 2016 09:50:00 +0200
|
||||
|
||||
spl-linux (0.6.5-pve5~jessie) unstable; urgency=medium
|
||||
|
||||
* Update pkg-spl to jessie/0.6.5.6-3
|
||||
|
||||
-- Proxmox Support Team <support@proxmox.com> Fri, 15 Apr 2016 11:11:59 +0200
|
||||
|
||||
spl-linux (0.6.5-pve4~jessie) unstable; urgency=medium
|
||||
|
||||
* update to 0.6.5.6
|
||||
|
||||
-- Proxmox Support Team <support@proxmox.com> Wed, 30 Mar 2016 10:49:49 +0200
|
||||
|
||||
spl-linux (0.6.5-pve3~jessie) unstable; urgency=medium
|
||||
|
||||
* update to 0.6.5.4
|
||||
|
||||
-- Proxmox Support Team <support@proxmox.com> Thu, 14 Jan 2016 11:00:40 +0100
|
||||
|
||||
spl-linux (0.6.5-pve2~jessie) unstable; urgency=medium
|
||||
|
||||
* update to 0.6.5.3
|
||||
|
||||
-- Proxmox Support Team <support@proxmox.com> Wed, 04 Nov 2015 17:40:58 +0100
|
||||
|
||||
spl-linux (0.6.5-pve1~jessie) unstable; urgency=medium
|
||||
|
||||
* update to master/debian/jessie/0.6.5-1
|
||||
|
||||
-- Proxmox Support Team <support@proxmox.com> Mon, 21 Sep 2015 10:04:23 +0200
|
||||
|
||||
spl-linux (0.6.4-pve3~jessie) unstable; urgency=medium
|
||||
|
||||
* update to snapshot/debian/jessie/0.6.4-8-8ac6ff
|
||||
|
||||
-- Proxmox Support Team <support@proxmox.com> Mon, 24 Aug 2015 06:14:12 +0200
|
||||
|
||||
spl-linux (0.6.4-pve2~jessie) unstable; urgency=medium
|
||||
|
||||
* update to 0.6.4.2 (snapshot/debian/jessie/0.6.4-6-37d7cd)
|
||||
|
||||
-- Proxmox Support Team <support@proxmox.com> Tue, 21 Jul 2015 11:02:31 +0200
|
||||
|
||||
spl-linux (0.6.4-pve1~jessie) unstable; urgency=medium
|
||||
|
||||
* update to 0.6.4 (use upstream zol package definitions)
|
||||
|
||||
-- Proxmox Support Team <support@proxmox.com> Tue, 14 Apr 2015 10:17:26 +0200
|
||||
|
||||
spl-linux (0.6.3-pve1~jessie) unstable; urgency=medium
|
||||
|
||||
* recompile for jessie
|
||||
|
||||
-- Proxmox Support Team <support@proxmox.com> Sat, 28 Feb 2015 16:03:01 +0100
|
||||
|
||||
spl-linux (0.6.3-pve1~wheezy) unstable; urgency=low
|
||||
|
||||
* first version for Proxmox VE
|
||||
|
||||
-- Proxmox Support Team <support@proxmox.com> Sat, 10 Jan 2015 14:06:34 +0100
|
||||
|
||||
spl-linux (0.7.12-1) unstable; urgency=medium
|
||||
|
||||
* New upstream version 0.7.12
|
||||
* Bump linux compatibility to 4.19 .
|
||||
|
||||
-- Mo Zhou <cdluminate@gmail.com> Mon, 19 Nov 2018 11:25:53 +0000
|
||||
|
||||
spl-linux (0.7.11-1) unstable; urgency=medium
|
||||
|
||||
[ Nicolas Braud-Santoni ]
|
||||
* control: Use a canonical URI for Vcs-Git
|
||||
* copyright: Use HTTPs Format URI in copyright
|
||||
* debian/rules: Enable build hardening
|
||||
* debian/rules: Use DEB_VERSION* instead of manually parsing.
|
||||
|
||||
[ Mo Zhou ]
|
||||
* New upstream version 0.7.11 (Closes: #908483)
|
||||
* Append myself to Uploaders.
|
||||
* Suggests linux-libc-dev (<< LINUX_NEXT~) instead of (<< LINUX_NEXT).
|
||||
* Replace get_next.sh with one-liner awk script in rules.
|
||||
* Bump linux_compat to 4.18 .
|
||||
* Fix debian-rules-sets-dpkg-architecture-variable.
|
||||
* Fix debian-watch-uses-insecure-uri.
|
||||
|
||||
-- Mo Zhou <cdluminate@gmail.com> Wed, 19 Sep 2018 04:13:01 +0000
|
||||
|
||||
spl-linux (0.7.9-3) unstable; urgency=medium
|
||||
|
||||
* d/control: migrate to alioth-lists (Closes: #899692)
|
||||
|
||||
-- Aron Xu <aron@debian.org> Mon, 28 May 2018 18:05:37 +0800
|
||||
|
||||
spl-linux (0.7.9-2) unstable; urgency=medium
|
||||
|
||||
[ Aron Xu ]
|
||||
* New upstream version 0.7.9
|
||||
* Fix lintian obsolete-relation-form-in-source
|
||||
* Bump supported linux version to 4.16
|
||||
|
||||
[ Antonio Russo ]
|
||||
* Reduce dependency on spl, and move documentation (Closes: #894608)
|
||||
|
||||
-- Aron Xu <aron@debian.org> Wed, 16 May 2018 21:36:17 +0800
|
||||
|
||||
spl-linux (0.7.6-1) unstable; urgency=medium
|
||||
|
||||
* New upstream release (Closes: #891235)
|
||||
* Update VCS-* URL to salsa.debian.org
|
||||
* Apply wrap-and-sort to control*
|
||||
* Recommends: linux-libc-dev (< ${LINUX_NEXT}):
|
||||
Tries to prevent unexpected upgrades of kernel that is not known
|
||||
to be supported by the packaged version of ZFS/SPL.
|
||||
|
||||
-- Aron Xu <aron@debian.org> Mon, 26 Feb 2018 16:29:50 +0800
|
||||
|
||||
spl-linux (0.7.5-1) unstable; urgency=medium
|
||||
|
||||
* Add libelf-dev to Depends (Closes: #886453)
|
||||
* New upstream version 0.7.5 (Closes: #886453)
|
||||
|
||||
-- Aron Xu <aron@debian.org> Fri, 19 Jan 2018 15:23:26 +0800
|
||||
|
||||
spl-linux (0.7.4-1) unstable; urgency=medium
|
||||
|
||||
* New upstream version 0.7.4 (Closes: #883830)
|
||||
* Update stdver to 4.1.2, no change required
|
||||
|
||||
-- Aron Xu <aron@debian.org> Mon, 18 Dec 2017 22:05:32 +0800
|
||||
|
||||
spl-linux (0.7.3-1) unstable; urgency=medium
|
||||
|
||||
* New upstream version 0.7.3
|
||||
|
||||
-- Aron Xu <aron@debian.org> Tue, 31 Oct 2017 17:29:08 +0800
|
||||
|
||||
spl-linux (0.6.5.11-1) unstable; urgency=medium
|
||||
|
||||
* Imported Upstream version 0.6.5.11
|
||||
|
||||
-- Aron Xu <aron@debian.org> Fri, 14 Jul 2017 14:39:21 +0800
|
||||
|
||||
spl-linux (0.6.5.10-1) unstable; urgency=medium
|
||||
|
||||
* New upstream version 0.6.5.10
|
||||
|
||||
-- Aron Xu <aron@debian.org> Wed, 05 Jul 2017 18:00:58 +0800
|
||||
|
||||
spl-linux (0.6.5.9-1) unstable; urgency=medium
|
||||
|
||||
* Imported Upstream version 0.6.5.9
|
||||
|
||||
-- Aron Xu <aron@debian.org> Mon, 06 Feb 2017 15:52:47 +0800
|
||||
|
||||
spl-linux (0.6.5.8-3) unstable; urgency=medium
|
||||
|
||||
* Fix Linux 4.9 compatibility (Closes: #851352)
|
||||
Thanks to Fabian Grünbichler!
|
||||
|
||||
-- Aron Xu <aron@debian.org> Tue, 17 Jan 2017 20:57:13 +0800
|
||||
|
||||
spl-linux (0.6.5.8-2) unstable; urgency=medium
|
||||
|
||||
[ Petter Reinholdtsen ]
|
||||
* Added d/gbp.conf to enforce the use of pristine-tar.
|
||||
* Added extra autopkgtest script check.sh from the Ubuntu package.
|
||||
|
||||
[ Aron Xu ]
|
||||
* Make use of dh-autoreconf
|
||||
* Deal with /etc/hostid in postinst of spl package
|
||||
* Add lintian-overrides: extra-license-file
|
||||
* Simplify rules by merging Ubuntu one
|
||||
* Handle the case /etc/hostid is being wrongly marked as conffile
|
||||
* Install man pages for spl
|
||||
* Move command-with-path-in-maintainer-script override to spl
|
||||
|
||||
-- Aron Xu <aron@debian.org> Wed, 28 Sep 2016 05:02:06 +0800
|
||||
|
||||
spl-linux (0.6.5.8-1) unstable; urgency=medium
|
||||
|
||||
[ Petter Reinholdtsen ]
|
||||
* Fix invalid command in dkms (Closes: #836578)
|
||||
|
||||
[ Zhou Mo ]
|
||||
* control: bump standards version to 3.9.8
|
||||
|
||||
[ Aron Xu ]
|
||||
* Imported Upstream version 0.6.5.8 (Closes: #835992)
|
||||
* rules: allow parallel building
|
||||
|
||||
-- Aron Xu <aron@debian.org> Sun, 18 Sep 2016 01:06:04 +0800
|
||||
|
||||
spl-linux (0.6.5.7-1) unstable; urgency=medium
|
||||
|
||||
* Imported Upstream version 0.6.5.7
|
||||
|
||||
-- Aron Xu <aron@debian.org> Wed, 25 May 2016 12:17:05 +0800
|
||||
|
||||
spl-linux (0.6.5.6-2) unstable; urgency=medium
|
||||
|
||||
* Add license names to entries missing it.
|
||||
* Added autopkgtest using code from Ubuntu using dkms >= 2.2.0.3-3~.
|
||||
|
||||
-- Petter Reinholdtsen <pere@hungry.com> Thu, 28 Apr 2016 20:21:29 +0800
|
||||
|
||||
spl-linux (0.6.5.6-1) unstable; urgency=medium
|
||||
|
||||
* New upstream release
|
||||
|
||||
-- Aron Xu <aron@debian.org> Thu, 24 Mar 2016 07:14:47 +0800
|
||||
|
||||
spl-linux (0.6.5.5-1) unstable; urgency=medium
|
||||
|
||||
* New upstream release
|
||||
|
||||
-- Aron Xu <aron@debian.org> Sun, 20 Mar 2016 22:50:26 +0800
|
||||
|
||||
spl-linux (0.6.5.4-1) unstable; urgency=medium
|
||||
|
||||
* New upstream release
|
||||
|
||||
-- Aron Xu <aron@debian.org> Sun, 10 Jan 2016 20:13:15 +0800
|
||||
|
||||
spl-linux (0.6.5.3-1) unstable; urgency=medium
|
||||
|
||||
* New upstream release
|
||||
|
||||
-- Aron Xu <aron@debian.org> Thu, 05 Nov 2015 21:08:25 +0800
|
||||
|
||||
spl-linux (0.6.5.2-1) unstable; urgency=medium
|
||||
|
||||
* Imported Upstream version 0.6.5.2
|
||||
* Add conflicts to splat (Closes: #769147)
|
||||
|
||||
-- Aron Xu <aron@debian.org> Tue, 13 Oct 2015 15:26:33 +0100
|
||||
|
||||
spl-linux (0.6.4.2-1) experimental; urgency=medium
|
||||
|
||||
* New upstream release.
|
||||
|
||||
-- Aron Xu <aron@debian.org> Thu, 13 Aug 2015 19:58:26 +0800
|
||||
|
||||
spl-linux (0.6.4.1-1) experimental; urgency=medium
|
||||
|
||||
* New upstream release.
|
||||
|
||||
-- Aron Xu <aron@debian.org> Sun, 17 May 2015 05:47:51 +0800
|
||||
|
||||
spl-linux (0.6.2-2) experimental; urgency=low
|
||||
|
||||
* Add file and libc-dev to Depends of spl-dkms (Closes: #717565).
|
||||
|
||||
-- Aron Xu <aron@debian.org> Sun, 25 Aug 2013 02:02:15 +0800
|
||||
|
||||
spl-linux (0.6.2-1) experimental; urgency=low
|
||||
|
||||
* New upstream release.
|
||||
|
||||
-- Aron Xu <aron@debian.org> Sat, 24 Aug 2013 14:30:25 +0800
|
||||
|
||||
spl-linux (0.6.1-2) experimental; urgency=low
|
||||
|
||||
* Add license info for scripts/kmodtool
|
||||
* Add linux 3.10 compatibility patch from upstream. (Closes: #717565)
|
||||
* Add facility to build udeb and binary modules, thanks Turbo Fredriksson
|
||||
for the work.
|
||||
|
||||
-- Aron Xu <aron@debian.org> Mon, 29 Jul 2013 16:04:24 +0800
|
||||
|
||||
spl-linux (0.6.1-1) experimental; urgency=low
|
||||
|
||||
* Initial Release (Closes: #686453)
|
||||
|
||||
-- Aron Xu <aron@debian.org> Tue, 02 Apr 2013 01:03:05 +0200
|
||||
@@ -1,32 +0,0 @@
|
||||
Source: spl-linux
|
||||
Section: kernel
|
||||
Priority: optional
|
||||
Maintainer: Proxmox Support Team <support@proxmox.com>
|
||||
Build-Depends: autogen,
|
||||
autotools-dev,
|
||||
debhelper (>= 10~),
|
||||
dh-autoreconf,
|
||||
libtool
|
||||
Standards-Version: 4.1.2
|
||||
Homepage: http://www.zfsonlinux.org/
|
||||
Vcs-Git: https://git.proxmox.com/git/zfsonlinux.git
|
||||
Vcs-Browser: https://git.proxmox.com/?p=zfsonlinux.git;a=summary
|
||||
|
||||
Package: spl
|
||||
Architecture: linux-any
|
||||
Conflicts: spl-dev, splat
|
||||
Depends: ${misc:Depends}, ${shlibs:Depends}
|
||||
Description: Solaris Porting Layer user-space utilities for Linux
|
||||
The Solaris Porting Layer (SPL) is a Linux kernel module which provides
|
||||
many of the Solaris kernel APIs. This shim layer makes it possible to
|
||||
run Solaris kernel code in the Linux kernel with relatively minimal
|
||||
modification. The Solaris Porting LAyer Tests (SPLAT) is a Linux kernel
|
||||
module which provides a testing harness for the SPL module.
|
||||
.
|
||||
SPL can be particularly useful when you want to track upstream Illumos
|
||||
(or any other OpenSolaris fork) development closely and don't want the
|
||||
overhead of maintaining a large patch which converts Solaris primitives
|
||||
to Linux primitives.
|
||||
.
|
||||
This package includes the user space utilities needed to test and debug
|
||||
the SPL and SPLAT kernel modules.
|
||||
@@ -1,189 +0,0 @@
|
||||
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
|
||||
Upstream-Name: Solaris Porting Layer for Linux
|
||||
Upstream-Contact: Brian Behlendorf <behlendorf1@llnl.gov>
|
||||
Source: https://github.com/zfsonlinux/spl/
|
||||
Disclaimer:
|
||||
This work was produced at the Lawrence Livermore National Laboratory
|
||||
(LLNL) under Contract No. DE-AC52-07NA27344 (Contract 44) between
|
||||
the U.S. Department of Energy (DOE) and Lawrence Livermore National
|
||||
Security, LLC (LLNS) for the operation of LLNL.
|
||||
.
|
||||
This work was prepared as an account of work sponsored by an agency of
|
||||
the United States Government. Neither the United States Government nor
|
||||
Lawrence Livermore National Security, LLC nor any of their employees,
|
||||
makes any warranty, express or implied, or assumes any liability or
|
||||
responsibility for the accuracy, completeness, or usefulness of any
|
||||
information, apparatus, product, or process disclosed, or represents
|
||||
that its use would not infringe privately-owned rights.
|
||||
.
|
||||
Reference herein to any specific commercial products, process, or
|
||||
services by trade name, trademark, manufacturer or otherwise does
|
||||
not necessarily constitute or imply its endorsement, recommendation,
|
||||
or favoring by the United States Government or Lawrence Livermore
|
||||
National Security, LLC. The views and opinions of authors expressed
|
||||
herein do not necessarily state or reflect those of the Untied States
|
||||
Government or Lawrence Livermore National Security, LLC, and shall
|
||||
not be used for advertising or product endorsement purposes.
|
||||
|
||||
Files: *
|
||||
Copyright: Lawrence Livermore National Security, LLC.
|
||||
The Regents of the University of California
|
||||
License: GPL-2+
|
||||
|
||||
Files: config/config.guess
|
||||
Copyright: Free Software Foundation, Inc.
|
||||
License: GPL-2+
|
||||
|
||||
Files: config/config.sub
|
||||
Copyright: Free Software Foundation, Inc.
|
||||
License: GPL-2+
|
||||
|
||||
Files: config/deb.am
|
||||
Copyright: Lawrence Livermore National Security, LLC.
|
||||
License: GPL-2+
|
||||
|
||||
Files: config/depcomp
|
||||
Copyright: Free Software Foundation, Inc.
|
||||
License: GPL-2+
|
||||
|
||||
Files: config/install-sh
|
||||
Copyright: 1994 X Consortium
|
||||
License: X11-install-sh
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to
|
||||
deal in the Software without restriction, including without limitation the
|
||||
rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
sell copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
.
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
.
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
|
||||
AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
|
||||
TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
.
|
||||
Except as contained in this notice, the name of the X Consortium shall not
|
||||
be used in advertising or otherwise to promote the sale, use or other deal-
|
||||
ings in this Software without prior written authorization from the X Consor-
|
||||
tium.
|
||||
|
||||
Files: config/ltmain.sh
|
||||
Copyright: Free Software Foundation, Inc.
|
||||
License: GPL-2+
|
||||
|
||||
Files: config/missing
|
||||
Copyright: Free Software Foundation, Inc.
|
||||
License: GPL-2+
|
||||
|
||||
Files: config/tgz.am
|
||||
Copyright: Lawrence Livermore National Security, LLC.
|
||||
License: GPL-2+
|
||||
|
||||
Files: debian/*
|
||||
Copyright: Darik Horn <dajhorn@vanadac.com>
|
||||
Carlos Alberto Lopez Perez <clopez@igalia.com>
|
||||
Aron Xu <aron@debian.org>
|
||||
License: GPL-2+
|
||||
|
||||
Files: include/linux/zlib_compat.h
|
||||
Copyright: Lawrence Livermore National Security, LLC.
|
||||
License: GPL-2+
|
||||
|
||||
Files: include/rpc/xdr.h
|
||||
Copyright: Sun Microsystems, Inc.
|
||||
License: GPL-2+
|
||||
|
||||
Files: include/sys/extdirent.h
|
||||
Copyright: Lawrence Livermore National Security, LLC.
|
||||
License: GPL-2+
|
||||
|
||||
Files: include/sys/fcntl.h
|
||||
Copyright: Lawrence Livermore National Security, LLC.
|
||||
License: GPL-2+
|
||||
|
||||
Files: include/sys/idmap.h
|
||||
Copyright: Lawrence Livermore National Security, LLC.
|
||||
License: GPL-2+
|
||||
|
||||
Files: include/sys/tsd.h
|
||||
Copyright: Lawrence Livermore National Security, LLC.
|
||||
License: GPL-2+
|
||||
|
||||
Files: include/sys/zmod.h
|
||||
Copyright: Jean-loup Gailly
|
||||
Mark Adler
|
||||
License: zmod
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any damages
|
||||
arising from the use of this software.
|
||||
.
|
||||
Permission is granted to anyone to use this software for any purpose,
|
||||
including commercial applications, and to alter it and redistribute it
|
||||
freely, subject to the following restrictions:
|
||||
.
|
||||
1. The origin of this software must not be misrepresented; you must not
|
||||
claim that you wrote the original software. If you use this software
|
||||
in a product, an acknowledgment in the product documentation would be
|
||||
appreciated but is not required.
|
||||
.
|
||||
2. Altered source versions must be plainly marked as such, and must not be
|
||||
misrepresented as being the original software.
|
||||
.
|
||||
3. This notice may not be removed or altered from any source distribution.
|
||||
|
||||
Files: module/spl/spl-tsd.c
|
||||
Copyright: Lawrence Livermore National Security, LLC.
|
||||
License: GPL-2+
|
||||
|
||||
Files: module/spl/spl-xdr.c
|
||||
Copyright: Sun Microsystems, Inc.
|
||||
License: GPL-2+
|
||||
|
||||
Files: module/splat/splat-linux.c
|
||||
Copyright: Lawrence Livermore National Security, LLC.
|
||||
License: GPL-2+
|
||||
|
||||
Files: scripts/kmodtool
|
||||
Copyright: 2003-2012 Ville Skyttä <ville.skytta@iki.fi>
|
||||
Thorsten Leemhuis <fedora@leemhuis.info>
|
||||
Nicolas Chauvet <kwizart@gmail.com>
|
||||
License: BSD-like
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of this software and associated documentation files (the
|
||||
"Software"), to deal in the Software without restriction, including
|
||||
without limitation the rights to use, copy, modify, merge, publish,
|
||||
distribute, sublicense, and/or sell copies of the Software, and to
|
||||
permit persons to whom the Software is furnished to do so, subject to
|
||||
the following conditions:
|
||||
.
|
||||
The above copyright notice and this permission notice shall be
|
||||
included in all copies or substantial portions of the Software.
|
||||
.
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
||||
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
||||
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
License: GPL-2+
|
||||
This program is free software; you can redistribute it and/or modify it under
|
||||
the terms of the GNU General Public License as published by the Free Software
|
||||
Foundation; either version 2 of the License, or (at your option) any later
|
||||
version.
|
||||
.
|
||||
This program is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
||||
FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||
.
|
||||
You should have received a copy of the GNU General Public License along with
|
||||
this package; if not, write to the Free Software Foundation, Inc., 51 Franklin
|
||||
St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
.
|
||||
On Debian systems, the full text of the GNU General Public License version 2
|
||||
can be found in the file /usr/share/common-licenses/GPL-2.
|
||||
@@ -1,33 +0,0 @@
|
||||
#!/usr/bin/make -f
|
||||
|
||||
include /usr/share/dpkg/pkg-info.mk
|
||||
|
||||
VERSION := $(DEB_VERSION_UPSTREAM)
|
||||
REVISION := $(shell echo $(DEB_VERSION) | cut -d- -f2)
|
||||
|
||||
export DEB_BUILD_MAINT_OPTIONS = hardening=+all
|
||||
|
||||
%:
|
||||
dh $@ --with autoreconf --parallel
|
||||
|
||||
override_dh_auto_configure:
|
||||
@# Embed the downstream version in the module.
|
||||
@sed \
|
||||
-e 's/^Version:.*/Version: $(VERSION)/' \
|
||||
-e 's/^Release:.*/Release: $(REVISION)/' \
|
||||
-i.orig META
|
||||
|
||||
@# Build the userland, but don't build the kernel modules.
|
||||
dh_auto_configure -- --with-config=user --disable-debug-kmem
|
||||
|
||||
override_dh_auto_test:
|
||||
# scripts/check.sh tries insmod and rmmod, so it cannot
|
||||
# run in an unprivileged build environment.
|
||||
|
||||
override_dh_auto_install:
|
||||
@# Install the utilities.
|
||||
$(MAKE) install DESTDIR='$(CURDIR)/debian/tmp'
|
||||
|
||||
override_dh_auto_clean:
|
||||
dh_auto_clean
|
||||
@if test -e META.orig; then mv META.orig META; fi
|
||||
@@ -1 +0,0 @@
|
||||
extend-diff-ignore='.*'
|
||||
@@ -1,2 +0,0 @@
|
||||
usr/sbin
|
||||
usr/share/man/man1/splat.1
|
||||
@@ -1 +0,0 @@
|
||||
spl: command-with-path-in-maintainer-script
|
||||
@@ -1,49 +0,0 @@
|
||||
#!/bin/sh
|
||||
set -e
|
||||
# The hostname and hostid of the last system to access a ZFS pool are stored in
|
||||
# the ZFS pool itself. A pool is foreign if, during `zpool import`, the
|
||||
# current hostname and hostid are different than the stored values thereof.
|
||||
#
|
||||
# The hostid on Solaris is intrinsic, but is not on Linux (see #595790), so the
|
||||
# spl kernel module invokes /usr/bin/hostid from the userland in its initialization
|
||||
# routine.
|
||||
#
|
||||
# /usr/bin/hostid will return the 4 first bytes of the file /etc/hostid.
|
||||
# If this file is not present or contains less than 4 bytes, then /usr/bin/hostid
|
||||
# will return the bytes of the IP address of $(hostname) flipped, or zero if
|
||||
# such IP couldn't be obtained
|
||||
#
|
||||
# This means that things like a DHCP lease change can affect the hostid.
|
||||
#
|
||||
# Therefore the only way of having a stable hostid is to define it on /etc/hostid.
|
||||
# This postinst helper will check if we already have the hostid stabilized by
|
||||
# checking the existence of the file /etc/hostid to be 4 bytes at least.
|
||||
# If this file don't already exists on our system or has less than 4 bytes, then
|
||||
# we will stabilize our current hostid by writing its value to /etc/hostid
|
||||
|
||||
# Detect if /etc/hostid is a conffile of previous spl package, migrate if yes
|
||||
# hostid file should preserve even when package is purged
|
||||
if $(dpkg-query --showformat='${Conffiles}\n' --show spl >/dev/null 2>&1); then
|
||||
dpkg-maintscript-helper rm_conffile /etc/hostid -- "$@"
|
||||
fi
|
||||
|
||||
if [ ! -f /etc/hostid ] || [ $(stat -c %s /etc/hostid) -lt 4 ] ; then
|
||||
|
||||
# Write our current hostid to /etc/hostid
|
||||
HOSTID=$(hostid)
|
||||
AA=$(echo $HOSTID | cut -b 1,2)
|
||||
BB=$(echo $HOSTID | cut -b 3,4)
|
||||
CC=$(echo $HOSTID | cut -b 5,6)
|
||||
DD=$(echo $HOSTID | cut -b 7,8)
|
||||
|
||||
# Big Endian
|
||||
if [ $(echo -n I | od -to2 | awk 'FNR==1{ print substr($2,6,1)}' 2>/dev/null) = 0 ]; then
|
||||
# Invoke the printf from coreutils. shell builtin lacks the byte format.
|
||||
/usr/bin/printf "\x$AA\x$BB\x$CC\x$DD" >/etc/hostid
|
||||
else
|
||||
# Little Endian
|
||||
/usr/bin/printf "\x$DD\x$CC\x$BB\x$AA" >/etc/hostid
|
||||
fi
|
||||
fi
|
||||
|
||||
#DEBHELPER#
|
||||
@@ -1,10 +0,0 @@
|
||||
#!/bin/sh
|
||||
set -e
|
||||
|
||||
# Detect if /etc/hostid is a conffile of previous spl package, migrate if yes
|
||||
# hostid file should preserve even when package is purged
|
||||
if $(dpkg-query --showformat='${Conffiles}\n' --show spl >/dev/null 2>&1); then
|
||||
dpkg-maintscript-helper rm_conffile /etc/hostid -- "$@"
|
||||
fi
|
||||
|
||||
#DEBHELPER#
|
||||
@@ -1,10 +0,0 @@
|
||||
#!/bin/sh
|
||||
set -e
|
||||
|
||||
# Detect if /etc/hostid is a conffile of previous spl package, migrate if yes
|
||||
# hostid file should preserve even when package is purged
|
||||
if $(dpkg-query --showformat='${Conffiles}\n' --show spl >/dev/null 2>&1); then
|
||||
dpkg-maintscript-helper rm_conffile /etc/hostid -- "$@"
|
||||
fi
|
||||
|
||||
#DEBHELPER#
|
||||
@@ -1,2 +0,0 @@
|
||||
version=3
|
||||
https://zfsonlinux.org/ .*spl-([\d\.]+)\.tar\.gz$
|
||||
-1
Submodule spl/upstream deleted from d665632350
Submodule
+1
Submodule upstream added at 1222e921c9
@@ -1 +0,0 @@
|
||||
10
|
||||
@@ -1,2 +0,0 @@
|
||||
COPYRIGHT
|
||||
OPENSOLARIS.LICENSE
|
||||
@@ -1,2 +0,0 @@
|
||||
COPYRIGHT
|
||||
OPENSOLARIS.LICENSE
|
||||
@@ -1,2 +0,0 @@
|
||||
COPYRIGHT
|
||||
OPENSOLARIS.LICENSE
|
||||
@@ -1,2 +0,0 @@
|
||||
COPYRIGHT
|
||||
OPENSOLARIS.LICENSE
|
||||
@@ -1,2 +0,0 @@
|
||||
COPYRIGHT
|
||||
OPENSOLARIS.LICENSE
|
||||
@@ -1,37 +0,0 @@
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Debian ZFS on Linux maintainers
|
||||
<pkg-zfsonlinux-devel@alioth-lists.debian.net>
|
||||
Date: Wed, 30 Jan 2019 15:12:04 +0100
|
||||
Subject: [PATCH] Add-libuutil-to-LIBADD-for-libzfs-and-libzfs_core
|
||||
|
||||
---
|
||||
lib/libzfs/Makefile.am | 1 +
|
||||
lib/libzfs_core/Makefile.am | 3 ++-
|
||||
2 files changed, 3 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/lib/libzfs/Makefile.am b/lib/libzfs/Makefile.am
|
||||
index f1260ea71..5b07b9d9d 100644
|
||||
--- a/lib/libzfs/Makefile.am
|
||||
+++ b/lib/libzfs/Makefile.am
|
||||
@@ -31,6 +31,7 @@ nodist_libzfs_la_SOURCES = \
|
||||
|
||||
libzfs_la_LIBADD = \
|
||||
$(top_builddir)/lib/libzfs_core/libzfs_core.la \
|
||||
+ $(top_builddir)/lib/libuutil/libuutil.la \
|
||||
$(top_builddir)/lib/libshare/libshare.la \
|
||||
$(top_builddir)/lib/libnvpair/libnvpair.la \
|
||||
$(top_builddir)/lib/libzpool/libzpool.la
|
||||
diff --git a/lib/libzfs_core/Makefile.am b/lib/libzfs_core/Makefile.am
|
||||
index 5eafc25c0..10d6de3d6 100644
|
||||
--- a/lib/libzfs_core/Makefile.am
|
||||
+++ b/lib/libzfs_core/Makefile.am
|
||||
@@ -16,7 +16,8 @@ nodist_libzfs_core_la_SOURCES = \
|
||||
$(KERNEL_C)
|
||||
|
||||
libzfs_core_la_LIBADD = \
|
||||
- $(top_builddir)/lib/libnvpair/libnvpair.la
|
||||
+ $(top_builddir)/lib/libnvpair/libnvpair.la \
|
||||
+ $(top_builddir)/lib/libuutil/libuutil.la
|
||||
|
||||
libzfs_core_la_LDFLAGS = -version-info 1:0:0
|
||||
|
||||
@@ -1,60 +0,0 @@
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Fabian=20Gr=C3=BCnbichler?= <f.gruenbichler@proxmox.com>
|
||||
Date: Mon, 4 Sep 2017 10:59:32 +0200
|
||||
Subject: [PATCH] add man page reference to systemd units
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
|
||||
---
|
||||
etc/systemd/system/zfs-import-cache.service.in | 1 +
|
||||
etc/systemd/system/zfs-import-scan.service.in | 1 +
|
||||
etc/systemd/system/zfs-mount.service.in | 1 +
|
||||
etc/systemd/system/zfs-share.service.in | 1 +
|
||||
4 files changed, 4 insertions(+)
|
||||
|
||||
diff --git a/etc/systemd/system/zfs-import-cache.service.in b/etc/systemd/system/zfs-import-cache.service.in
|
||||
index 97808dee7..cb4358fb4 100644
|
||||
--- a/etc/systemd/system/zfs-import-cache.service.in
|
||||
+++ b/etc/systemd/system/zfs-import-cache.service.in
|
||||
@@ -1,5 +1,6 @@
|
||||
[Unit]
|
||||
Description=Import ZFS pools by cache file
|
||||
+Documentation=man:zpool(8)
|
||||
DefaultDependencies=no
|
||||
Requires=systemd-udev-settle.service
|
||||
After=systemd-udev-settle.service
|
||||
diff --git a/etc/systemd/system/zfs-import-scan.service.in b/etc/systemd/system/zfs-import-scan.service.in
|
||||
index c097e3852..e7b1d8862 100644
|
||||
--- a/etc/systemd/system/zfs-import-scan.service.in
|
||||
+++ b/etc/systemd/system/zfs-import-scan.service.in
|
||||
@@ -1,5 +1,6 @@
|
||||
[Unit]
|
||||
Description=Import ZFS pools by device scanning
|
||||
+Documentation=man:zpool(8)
|
||||
DefaultDependencies=no
|
||||
Requires=systemd-udev-settle.service
|
||||
After=systemd-udev-settle.service
|
||||
diff --git a/etc/systemd/system/zfs-mount.service.in b/etc/systemd/system/zfs-mount.service.in
|
||||
index 728fc630c..8a73716f5 100644
|
||||
--- a/etc/systemd/system/zfs-mount.service.in
|
||||
+++ b/etc/systemd/system/zfs-mount.service.in
|
||||
@@ -1,5 +1,6 @@
|
||||
[Unit]
|
||||
Description=Mount ZFS filesystems
|
||||
+Documentation=man:zfs(8)
|
||||
DefaultDependencies=no
|
||||
After=systemd-udev-settle.service
|
||||
After=zfs-import.target
|
||||
diff --git a/etc/systemd/system/zfs-share.service.in b/etc/systemd/system/zfs-share.service.in
|
||||
index 494f5cbef..d0c93a3e6 100644
|
||||
--- a/etc/systemd/system/zfs-share.service.in
|
||||
+++ b/etc/systemd/system/zfs-share.service.in
|
||||
@@ -1,5 +1,6 @@
|
||||
[Unit]
|
||||
Description=ZFS file system shares
|
||||
+Documentation=man:zfs(8)
|
||||
After=nfs-server.service nfs-kernel-server.service
|
||||
After=smb.service
|
||||
After=zfs-mount.service
|
||||
@@ -1,38 +0,0 @@
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Fabian=20Gr=C3=BCnbichler?= <f.gruenbichler@proxmox.com>
|
||||
Date: Thu, 12 Oct 2017 08:57:48 +0200
|
||||
Subject: [PATCH] fix install path of zpool.d scripts
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
|
||||
---
|
||||
cmd/zpool/Makefile.am | 6 +++---
|
||||
1 file changed, 3 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/cmd/zpool/Makefile.am b/cmd/zpool/Makefile.am
|
||||
index d07f8d616..5d26f326e 100644
|
||||
--- a/cmd/zpool/Makefile.am
|
||||
+++ b/cmd/zpool/Makefile.am
|
||||
@@ -22,11 +22,11 @@ zpool_LDADD = \
|
||||
-lm $(LIBBLKID)
|
||||
|
||||
zpoolconfdir = $(sysconfdir)/zfs/zpool.d
|
||||
-zpoolexecdir = $(libexecdir)/zfs/zpool.d
|
||||
+zpoollibdir = /usr/lib/zfs-linux/zpool.d
|
||||
|
||||
EXTRA_DIST = zpool.d/README
|
||||
|
||||
-dist_zpoolexec_SCRIPTS = \
|
||||
+dist_zpoollib_SCRIPTS = \
|
||||
zpool.d/enc \
|
||||
zpool.d/encdev \
|
||||
zpool.d/fault_led \
|
||||
@@ -119,5 +119,5 @@ install-data-hook:
|
||||
for f in $(zpoolconfdefaults); do \
|
||||
test -f "$(DESTDIR)$(zpoolconfdir)/$${f}" -o \
|
||||
-L "$(DESTDIR)$(zpoolconfdir)/$${f}" || \
|
||||
- ln -s "$(zpoolexecdir)/$${f}" "$(DESTDIR)$(zpoolconfdir)"; \
|
||||
+ ln -s "$(zpoollibdir)/$${f}" "$(DESTDIR)$(zpoolconfdir)"; \
|
||||
done
|
||||
@@ -1,41 +0,0 @@
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Colin Ian King <colin.king@canonical.com>
|
||||
Date: Mon, 17 Oct 2016 14:30:56 +0800
|
||||
Subject: [PATCH] Use python3 for arcstat.py, arc_summary.py & dbufstat.py
|
||||
|
||||
---
|
||||
cmd/arc_summary/arc_summary.py | 2 +-
|
||||
cmd/arcstat/arcstat.py | 2 +-
|
||||
cmd/dbufstat/dbufstat.py | 2 +-
|
||||
3 files changed, 3 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/cmd/arc_summary/arc_summary.py b/cmd/arc_summary/arc_summary.py
|
||||
index f6dbb9bfb..723c2e5a6 100755
|
||||
--- a/cmd/arc_summary/arc_summary.py
|
||||
+++ b/cmd/arc_summary/arc_summary.py
|
||||
@@ -1,4 +1,4 @@
|
||||
-#!/usr/bin/python
|
||||
+#!/usr/bin/python3
|
||||
#
|
||||
# $Id: arc_summary.pl,v 388:e27800740aa2 2011-07-08 02:53:29Z jhell $
|
||||
#
|
||||
diff --git a/cmd/arcstat/arcstat.py b/cmd/arcstat/arcstat.py
|
||||
index d7d3e9b73..3a7a47d67 100755
|
||||
--- a/cmd/arcstat/arcstat.py
|
||||
+++ b/cmd/arcstat/arcstat.py
|
||||
@@ -1,4 +1,4 @@
|
||||
-#!/usr/bin/python
|
||||
+#!/usr/bin/python3
|
||||
#
|
||||
# Print out ZFS ARC Statistics exported via kstat(1)
|
||||
# For a definition of fields, or usage, use arctstat.pl -v
|
||||
diff --git a/cmd/dbufstat/dbufstat.py b/cmd/dbufstat/dbufstat.py
|
||||
index 42bb0c7c7..73e02ca11 100755
|
||||
--- a/cmd/dbufstat/dbufstat.py
|
||||
+++ b/cmd/dbufstat/dbufstat.py
|
||||
@@ -1,4 +1,4 @@
|
||||
-#!/usr/bin/python
|
||||
+#!/usr/bin/python3
|
||||
#
|
||||
# Print out statistics for all cached dmu buffers. This information
|
||||
# is available through the dbufs kstat and may be post-processed as
|
||||
@@ -1,75 +0,0 @@
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Colin Ian King <colin.king@canonical.com>
|
||||
Date: Tue, 31 Oct 2017 19:12:42 +0800
|
||||
Subject: [PATCH] increase-default-zcmd-allocation-to-256K
|
||||
|
||||
Increase default zcmd allocation to 256K (LP: #567557)
|
||||
|
||||
When creating hundreds of clones (for example using containers with
|
||||
LXD) cloning slows down as the number of clones increases over time.
|
||||
The reason for this is that the fetching of the clone information
|
||||
using a small zcmd buffer requires two ioctl calls, one to determine
|
||||
the size and a second to return the data. However, this requires
|
||||
gathering the data twice, once to determine the size and again to
|
||||
populate the zcmd buffer to return it to userspace.
|
||||
|
||||
These are expensive ioctl() calls, so instead, make the default buffer
|
||||
size much larger: 256K. This may sound large, but on 64 bit systems
|
||||
running ZFS this is not a huge chunk of memory for the speed
|
||||
improvement we gains for large sets of clones:
|
||||
|
||||
16K zcmd 256K zcmd
|
||||
Clones Time Clones Time Clone % improvement
|
||||
(secs) per sec (secs) per sec
|
||||
100 7 14.29 5 20.00 28.57
|
||||
200 10 20.00 9 22.22 10.00
|
||||
300 19 15.79 18 16.67 5.26
|
||||
400 22 18.18 22 18.18 0.00
|
||||
500 29 17.24 29 17.24 0.00
|
||||
600 39 15.38 39 15.38 0.00
|
||||
700 46 15.22 45 15.56 2.17
|
||||
800 58 13.79 51 15.69 12.07
|
||||
900 74 12.16 61 14.75 17.57
|
||||
1000 90 11.11 74 13.51 17.78
|
||||
1100 98 11.22 87 12.64 11.22
|
||||
1200 102 11.76 95 12.63 6.86
|
||||
1300 113 11.50 104 12.50 7.96
|
||||
1400 143 9.79 109 12.84 23.78
|
||||
1500 145 10.34 132 11.36 8.97
|
||||
1600 165 9.70 145 11.03 12.12
|
||||
1700 187 9.09 156 10.90 16.58
|
||||
1800 210 8.57 166 10.84 20.95
|
||||
1900 226 8.41 183 10.38 19.03
|
||||
2000 256 7.81 198 10.10 22.66
|
||||
2200 311 7.07 238 9.24 23.47
|
||||
2400 373 6.43 271 8.86 27.35
|
||||
2600 487 5.34 316 8.23 35.11
|
||||
3000 619 4.85 426 7.04 31.18
|
||||
3400 915 3.72 549 6.19 40.00
|
||||
4000 1332 3.00 923 4.33 30.71
|
||||
|
||||
As one can see, with > 2000 clones we get 25-40% speed
|
||||
improvement.
|
||||
|
||||
This patch was originally suggested by Brian Behlendorf
|
||||
(see https://github.com/zfsonlinux/zfs/issues/6372), however
|
||||
this fix is a more generic fix to cover all zcmd cases.
|
||||
|
||||
Signed-off-by: Colin Ian King <colin.king@canonical.com>
|
||||
---
|
||||
lib/libzfs/libzfs_util.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/lib/libzfs/libzfs_util.c b/lib/libzfs/libzfs_util.c
|
||||
index 9703f844f..0cfcf9c2f 100644
|
||||
--- a/lib/libzfs/libzfs_util.c
|
||||
+++ b/lib/libzfs/libzfs_util.c
|
||||
@@ -1355,7 +1355,7 @@ int
|
||||
zcmd_alloc_dst_nvlist(libzfs_handle_t *hdl, zfs_cmd_t *zc, size_t len)
|
||||
{
|
||||
if (len == 0)
|
||||
- len = 16 * 1024;
|
||||
+ len = 256 * 1024;
|
||||
zc->zc_nvlist_dst_size = len;
|
||||
zc->zc_nvlist_dst =
|
||||
(uint64_t)(uintptr_t)zfs_alloc(hdl, zc->zc_nvlist_dst_size);
|
||||
@@ -1,61 +0,0 @@
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Rohan Puri <rohan.puri15@gmail.com>
|
||||
Date: Sat, 28 Jul 2018 18:32:12 +0530
|
||||
Subject: [PATCH] Fix deadlock between zfs umount & snapentry_expire
|
||||
|
||||
zfs umount -> zfsctl_destroy() takes the zfs_snapshot_lock as a
|
||||
writer and calls zfsctl_snapshot_unmount_cancel(), which waits
|
||||
for snapentry_expire() if present (when snap is automounted).
|
||||
This snapentry_expire() itself then waits for zfs_snapshot_lock
|
||||
as a reader, resulting in a deadlock.
|
||||
|
||||
The fix is to only hold the zfs_snapshot_lock over the tree
|
||||
lookup and removal. After a successful lookup the lock can
|
||||
be dropped and zfs_snapentry_t will remain valid until the
|
||||
reference taken by the lookup is released.
|
||||
|
||||
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
|
||||
Signed-off-by: Rohan Puri <rohan.puri15@gmail.com>
|
||||
Closes #7751
|
||||
Closes #7752
|
||||
|
||||
(Cherry-picked from fd7265c646f40e364396af5014bbb83e809e124a)
|
||||
Signed-off-by: Stoiko Ivanov <s.ivanov@proxmox.com>
|
||||
|
||||
Signed-off-by: Stoiko Ivanov <s.ivanov@proxmox.com>
|
||||
---
|
||||
module/zfs/zfs_ctldir.c | 11 +++++------
|
||||
1 file changed, 5 insertions(+), 6 deletions(-)
|
||||
|
||||
diff --git a/module/zfs/zfs_ctldir.c b/module/zfs/zfs_ctldir.c
|
||||
index bf5a1d059..2964b65a6 100644
|
||||
--- a/module/zfs/zfs_ctldir.c
|
||||
+++ b/module/zfs/zfs_ctldir.c
|
||||
@@ -358,8 +358,6 @@ snapentry_expire(void *data)
|
||||
static void
|
||||
zfsctl_snapshot_unmount_cancel(zfs_snapentry_t *se)
|
||||
{
|
||||
- ASSERT(RW_LOCK_HELD(&zfs_snapshot_lock));
|
||||
-
|
||||
if (taskq_cancel_id(system_delay_taskq, se->se_taskqid) == 0) {
|
||||
se->se_taskqid = TASKQID_INVALID;
|
||||
zfsctl_snapshot_rele(se);
|
||||
@@ -570,13 +568,14 @@ zfsctl_destroy(zfsvfs_t *zfsvfs)
|
||||
uint64_t objsetid = dmu_objset_id(zfsvfs->z_os);
|
||||
|
||||
rw_enter(&zfs_snapshot_lock, RW_WRITER);
|
||||
- if ((se = zfsctl_snapshot_find_by_objsetid(spa, objsetid))
|
||||
- != NULL) {
|
||||
- zfsctl_snapshot_unmount_cancel(se);
|
||||
+ se = zfsctl_snapshot_find_by_objsetid(spa, objsetid);
|
||||
+ if (se != NULL)
|
||||
zfsctl_snapshot_remove(se);
|
||||
+ rw_exit(&zfs_snapshot_lock);
|
||||
+ if (se != NULL) {
|
||||
+ zfsctl_snapshot_unmount_cancel(se);
|
||||
zfsctl_snapshot_rele(se);
|
||||
}
|
||||
- rw_exit(&zfs_snapshot_lock);
|
||||
} else if (zfsvfs->z_ctldir) {
|
||||
iput(zfsvfs->z_ctldir);
|
||||
zfsvfs->z_ctldir = NULL;
|
||||
@@ -1,11 +0,0 @@
|
||||
0001-Check-for-META-and-DCH-consistency-in-autoconf.patch
|
||||
0002-Add-libuutil-to-LIBADD-for-libzfs-and-libzfs_core.patch
|
||||
0003-add-man-page-reference-to-systemd-units.patch
|
||||
0004-always-load-ZFS-module-on-boot.patch
|
||||
0005-fix-install-path-of-zpool.d-scripts.patch
|
||||
0006-Use-python3-for-arcstat.py-arc_summary.py-dbufstat.p.patch
|
||||
0007-Fix-the-path-to-the-zed-binary-on-the-systemd-unit.patch
|
||||
0008-increase-default-zcmd-allocation-to-256K.patch
|
||||
0009-import-with-d-dev-disk-by-id-in-scan-service.patch
|
||||
0010-Fix-deadlock-between-zfs-umount-snapentry_expire.patch
|
||||
0011-Enable-zed-emails.patch
|
||||
@@ -1 +0,0 @@
|
||||
3.0 (quilt)
|
||||
@@ -1,2 +0,0 @@
|
||||
COPYRIGHT
|
||||
OPENSOLARIS.LICENSE
|
||||
-1
Submodule zfs/upstream deleted from a8c2b7ebc6
Reference in New Issue
Block a user