summarylogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.SRCINFO32
-rw-r--r--.gitignore5
-rw-r--r--0001-only-build-the-module-in-dkms.conf.patch49
-rw-r--r--PKGBUILD89
-rw-r--r--linux-5.5-compat-blkg_tryget.patch136
5 files changed, 122 insertions, 189 deletions
diff --git a/.SRCINFO b/.SRCINFO
index 551c49b33a04..5ae19f1fa09d 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -1,28 +1,28 @@
pkgbase = zfs-dkms-git
pkgdesc = Kernel modules for the Zettabyte File System.
- pkgver = 2020.03.31.r5836.g0929c4de3
+ pkgver = 0.8.0.r709.g5a42ef04f
pkgrel = 1
+ epoch = 1
url = https://zfsonlinux.org/
- arch = x86_64
- groups = archzfs-dkms-git
+ arch = any
license = CDDL
makedepends = git
- depends = zfs-utils-git=2020.03.31.r5836.g0929c4de3
- depends = lsb-release
- depends = dkms
+ provides = ZFS-MODULE=0.8.0.r709.g5a42ef04f
+ provides = SPL-MODULE=0.8.0.r709.g5a42ef04f
+ provides = zfs-dkms=0.8.0.r709.g5a42ef04f
+ provides = spl-dkms
provides = zfs
- provides = zfs-headers
- provides = spl
- provides = spl-headers
- conflicts = zfs
- conflicts = zfs-headers
- conflicts = spl
- conflicts = spl-headers
+ conflicts = zfs-dkms
+ conflicts = spl-dkms
replaces = spl-dkms-git
- source = git+https://github.com/zfsonlinux/zfs.git#commit=0929c4de398606f8305057ca540cf577e6771c30
- source = linux-5.5-compat-blkg_tryget.patch
+ source = git+https://github.com/zfsonlinux/zfs.git
+ source = 0001-only-build-the-module-in-dkms.conf.patch
sha256sums = SKIP
- sha256sums = daae58460243c45c2c7505b1d88dcb299ea7d92bcf3f41d2d30bc213000bb1da
+ sha256sums = 780e590383fb00389c5e02ac15709b7a476d9e07d3c4935ed9eb67c951a88409
+ b2sums = SKIP
+ b2sums = 1fdae935043d979b9241f07f8baa25a9a0367c24c31c84a59dfe8d6b468a523d8f49b68da3c7fd3194db6638f9d7bef046fc5e2669ce25d73c65009c16bf6c50
pkgname = zfs-dkms-git
+ depends = zfs-utils-git=1:0.8.0.r709.g5a42ef04f
+ depends = dkms
diff --git a/.gitignore b/.gitignore
deleted file mode 100644
index b18b49395bde..000000000000
--- a/.gitignore
+++ /dev/null
@@ -1,5 +0,0 @@
-*.tar.xz
-*.tar.gz
-*.sig
-*.log
-zfs/
diff --git a/0001-only-build-the-module-in-dkms.conf.patch b/0001-only-build-the-module-in-dkms.conf.patch
new file mode 100644
index 000000000000..0e162b5db1fa
--- /dev/null
+++ b/0001-only-build-the-module-in-dkms.conf.patch
@@ -0,0 +1,49 @@
+From b4a2c0b184c9c9599421b15a430fb88deb5dbd17 Mon Sep 17 00:00:00 2001
+From: Eli Schwartz <eschwartz@archlinux.org>
+Date: Sun, 28 Oct 2018 15:01:58 -0400
+Subject: [PATCH] only build the module in dkms.conf
+
+---
+ scripts/dkms.mkconf | 19 ++-----------------
+ 1 file changed, 2 insertions(+), 17 deletions(-)
+
+diff --git a/scripts/dkms.mkconf b/scripts/dkms.mkconf
+index 88c289383..5a859a0e0 100755
+--- a/scripts/dkms.mkconf
++++ b/scripts/dkms.mkconf
+@@ -25,22 +25,7 @@ PACKAGE_CONFIG="${pkgcfg}"
+ PRE_BUILD="configure
+ --prefix=/usr
+ --with-config=kernel
+- --with-linux=\$(
+- case \`lsb_release -is\` in
+- (Debian|Devuan)
+- if [[ -e \${kernel_source_dir/%build/source} ]]
+- then
+- echo \${kernel_source_dir/%build/source}
+- else
+- # A kpkg exception for Proxmox 2.0
+- echo \${kernel_source_dir}
+- fi
+- ;;
+- (*)
+- echo \${kernel_source_dir}
+- ;;
+- esac
+- )
++ --with-linux=\${kernel_source_dir}
+ --with-linux-obj=\${kernel_source_dir}
+ --with-spl=\${source_tree}/spl-\${PACKAGE_VERSION}
+ --with-spl-obj=\${dkms_tree}/spl/\${PACKAGE_VERSION}/\${kernelver}/\${arch}
+@@ -78,7 +63,7 @@ POST_BUILD="scripts/dkms.postbuild
+ BUILD_DEPENDS[0]="spl"
+ AUTOINSTALL="yes"
+ REMAKE_INITRD="no"
+-MAKE[0]="make"
++MAKE[0]="make -C module/"
+ STRIP[0]="\$(
+ [[ -r \${PACKAGE_CONFIG} ]] \\
+ && source \${PACKAGE_CONFIG} \\
+--
+2.19.1
+
diff --git a/PKGBUILD b/PKGBUILD
index 492e49668aa8..4fa3a2817185 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -1,41 +1,66 @@
-# Maintainer: Jan Houben <jan@nexttrex.de>
-# Contributor: Jesus Alvarez <jeezusjr at gmail dot com>
-#
-# This PKGBUILD was generated by the archzfs build scripts located at
-#
-# http://github.com/archzfs/archzfs
-#
-pkgname="zfs-dkms-git"
-_commit='0929c4de398606f8305057ca540cf577e6771c30'
-pkgdesc="Kernel modules for the Zettabyte File System."
+# Maintainer: Eli Schwartz <eschwartz@archlinux.org>
+# Contributor: Iacopo Isimbaldi <isiachi@rhye.it>
-pkgver=2020.03.31.r5836.g0929c4de3
+pkgname=zfs-dkms-git
+pkgver=0.8.0.r709.g5a42ef04f
pkgrel=1
-makedepends=("git")
-arch=("x86_64")
+epoch=1
+pkgdesc="Kernel modules for the Zettabyte File System."
+arch=('any')
url="https://zfsonlinux.org/"
-source=("git+https://github.com/zfsonlinux/zfs.git#commit=${_commit}"
- "linux-5.5-compat-blkg_tryget.patch")
-sha256sums=("SKIP"
- "daae58460243c45c2c7505b1d88dcb299ea7d92bcf3f41d2d30bc213000bb1da")
-license=("CDDL")
-depends=("zfs-utils-git=${pkgver}" "lsb-release" "dkms")
-provides=("zfs" "zfs-headers" "spl" "spl-headers")
-groups=("archzfs-dkms-git")
-conflicts=("zfs" "zfs-headers" "spl" "spl-headers")
-replaces=("spl-dkms-git")
+license=('CDDL')
+makedepends=('git')
+conflicts=("${pkgname%-git}" 'spl-dkms')
+provides=("ZFS-MODULE=${pkgver}" "SPL-MODULE=${pkgver}" "${pkgname%-git}=${pkgver}" 'spl-dkms')
+# ambiguous, provided for backwards compat, pls don't use
+provides+=('zfs')
+replaces=('spl-dkms-git')
+source=("git+https://github.com/zfsonlinux/zfs.git"
+ "0001-only-build-the-module-in-dkms.conf.patch")
+sha256sums=('SKIP'
+ '780e590383fb00389c5e02ac15709b7a476d9e07d3c4935ed9eb67c951a88409')
+b2sums=('SKIP'
+ '1fdae935043d979b9241f07f8baa25a9a0367c24c31c84a59dfe8d6b468a523d8f49b68da3c7fd3194db6638f9d7bef046fc5e2669ce25d73c65009c16bf6c50')
+
+pkgver() {
+ cd "${srcdir}"/zfs
+
+ git describe --long | sed 's/^zfs-//;s/\([^-]*-g\)/r\1/;s/-/./g'
+}
+
+prepare() {
+ cd "${srcdir}"/zfs
+
+ patch -p1 -i ../0001-only-build-the-module-in-dkms.conf.patch
+
+ # remove unneeded sections from module build
+ sed -ri "/AC_CONFIG_FILES/,/]\)/{
+/AC_CONFIG_FILES/n
+/]\)/n
+/^\s*(module\/.*)?(zfs.release|Makefile)/!d
+}" configure.ac
+
+ autoreconf -fi
+}
build() {
- cd "${srcdir}/zfs"
- ./autogen.sh
+ cd "${srcdir}"/zfs
+
+ ./scripts/dkms.mkconf -n zfs -v ${pkgver} -f dkms.conf
+ # update metadata
+ ./scripts/make_gitrev.sh
+ _meta_release=${pkgver#*.r}
+ sed -i -e "s/Release:[[:print:]]*/Release: ${_meta_release/./_}/" META
}
package() {
- dkmsdir="${pkgdir}/usr/src/zfs-git"
- install -d "${dkmsdir}"
- cp -a ${srcdir}/zfs/. ${dkmsdir}
- cd "${dkmsdir}"
- find . -name ".git*" -print0 | xargs -0 rm -fr --
- scripts/dkms.mkconf -v git -f dkms.conf -n zfs
- chmod g-w,o-w -R .
+ depends=("zfs-utils-git=${epoch}:${pkgver}" 'dkms')
+
+ cd "${srcdir}"/zfs
+
+ dkmsdir="${pkgdir}/usr/src/zfs-${pkgver}"
+ install -d "${dkmsdir}"/{config,scripts}
+ cp -a configure dkms.conf Makefile.in META zfs_config.h.in zfs.release.in include/ module/ "${dkmsdir}"/
+ cp config/config.* config/missing config/*sh "${dkmsdir}"/config/
+ cp scripts/enum-extract.pl scripts/dkms.postbuild "${dkmsdir}"/scripts/
}
diff --git a/linux-5.5-compat-blkg_tryget.patch b/linux-5.5-compat-blkg_tryget.patch
deleted file mode 100644
index f636e87f805a..000000000000
--- a/linux-5.5-compat-blkg_tryget.patch
+++ /dev/null
@@ -1,136 +0,0 @@
-From 2fcab8795c7c493845bfa277d44bc443802000b8 Mon Sep 17 00:00:00 2001
-From: Brian Behlendorf <behlendorf1@llnl.gov>
-Date: Fri, 28 Feb 2020 08:58:39 -0800
-Subject: [PATCH] Linux 5.5 compat: blkg_tryget()
-
-Commit https://github.com/torvalds/linux/commit/9e8d42a0f accidentally
-converted the static inline function blkg_tryget() to GPL-only for
-kernels built with CONFIG_PREEMPT_RCU=y and CONFIG_BLK_CGROUP=y.
-
-Resolve the build issue by providing our own equivalent functionality
-when needed which uses rcu_read_lock_sched() internally as before.
-
-Reviewed-by: Tony Hutter <hutter2@llnl.gov>
-Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
-Closes #9745
-Closes #10072
----
- config/kernel-blkg-tryget.m4 | 37 ++++++++++++++++++++++++++++++++++++
- config/kernel.m4 | 2 ++
- module/zfs/vdev_disk.c | 32 ++++++++++++++++++++++++++++++-
- 3 files changed, 70 insertions(+), 1 deletion(-)
- create mode 100644 config/kernel-blkg-tryget.m4
-
-diff --git a/config/kernel-blkg-tryget.m4 b/config/kernel-blkg-tryget.m4
-new file mode 100644
-index 00000000000..fb831ca3b3e
---- /dev/null
-+++ b/config/kernel-blkg-tryget.m4
-@@ -0,0 +1,37 @@
-+dnl #
-+dnl # Linux 5.5 API,
-+dnl #
-+dnl # The Linux 5.5 kernel updated percpu_ref_tryget() which is inlined by
-+dnl # blkg_tryget() to use rcu_read_lock() instead of rcu_read_lock_sched().
-+dnl # As a side effect the function was converted to GPL-only.
-+dnl #
-+AC_DEFUN([ZFS_AC_KERNEL_SRC_BLKG_TRYGET], [
-+ ZFS_LINUX_TEST_SRC([blkg_tryget], [
-+ #include <linux/blk-cgroup.h>
-+ #include <linux/bio.h>
-+ #include <linux/fs.h>
-+ ],[
-+ struct blkcg_gq blkg __attribute__ ((unused));
-+ bool rc __attribute__ ((unused));
-+ rc = blkg_tryget(&blkg);
-+ ], [], [$ZFS_META_LICENSE])
-+])
-+
-+AC_DEFUN([ZFS_AC_KERNEL_BLKG_TRYGET], [
-+ AC_MSG_CHECKING([whether blkg_tryget() is available])
-+ ZFS_LINUX_TEST_RESULT([blkg_tryget], [
-+ AC_MSG_RESULT(yes)
-+ AC_DEFINE(HAVE_BLKG_TRYGET, 1, [blkg_tryget() is available])
-+
-+ AC_MSG_CHECKING([whether blkg_tryget() is GPL-only])
-+ ZFS_LINUX_TEST_RESULT([blkg_tryget_license], [
-+ AC_MSG_RESULT(no)
-+ ],[
-+ AC_MSG_RESULT(yes)
-+ AC_DEFINE(HAVE_BLKG_TRYGET_GPL_ONLY, 1,
-+ [blkg_tryget() GPL-only])
-+ ])
-+ ],[
-+ AC_MSG_RESULT(no)
-+ ])
-+])
-diff --git a/config/kernel.m4 b/config/kernel.m4
-index dce619729d4..bea6f9b1bbf 100644
---- a/config/kernel.m4
-+++ b/config/kernel.m4
-@@ -70,6 +70,7 @@ AC_DEFUN([ZFS_AC_KERNEL_TEST_SRC], [
- ZFS_AC_KERNEL_SRC_BIO_BI_STATUS
- ZFS_AC_KERNEL_SRC_BIO_RW_BARRIER
- ZFS_AC_KERNEL_SRC_BIO_RW_DISCARD
-+ ZFS_AC_KERNEL_SRC_BLKG_TRYGET
- ZFS_AC_KERNEL_SRC_BLK_QUEUE_BDI
- ZFS_AC_KERNEL_SRC_BLK_QUEUE_DISCARD
- ZFS_AC_KERNEL_SRC_BLK_QUEUE_SECURE_ERASE
-@@ -186,6 +187,7 @@ AC_DEFUN([ZFS_AC_KERNEL_TEST_RESULT], [
- ZFS_AC_KERNEL_BIO_BI_STATUS
- ZFS_AC_KERNEL_BIO_RW_BARRIER
- ZFS_AC_KERNEL_BIO_RW_DISCARD
-+ ZFS_AC_KERNEL_BLKG_TRYGET
- ZFS_AC_KERNEL_BLK_QUEUE_BDI
- ZFS_AC_KERNEL_BLK_QUEUE_DISCARD
- ZFS_AC_KERNEL_BLK_QUEUE_SECURE_ERASE
-diff --git a/module/zfs/vdev_disk.c b/module/zfs/vdev_disk.c
-index 661f0f1b727..8544bb8ffb6 100644
---- a/module/zfs/vdev_disk.c
-+++ b/module/zfs/vdev_disk.c
-@@ -473,6 +473,36 @@ vdev_submit_bio_impl(struct bio *bio)
-
- #ifdef HAVE_BIO_SET_DEV
- #if defined(CONFIG_BLK_CGROUP) && defined(HAVE_BIO_SET_DEV_GPL_ONLY)
-+/*
-+ * The Linux 5.5 kernel updated percpu_ref_tryget() which is inlined by
-+ * blkg_tryget() to use rcu_read_lock() instead of rcu_read_lock_sched().
-+ * As a side effect the function was converted to GPL-only. Define our
-+ * own version when needed which uses rcu_read_lock_sched().
-+ */
-+#if defined(HAVE_BLKG_TRYGET_GPL_ONLY)
-+static inline bool
-+vdev_blkg_tryget(struct blkcg_gq *blkg)
-+{
-+ struct percpu_ref *ref = &blkg->refcnt;
-+ unsigned long __percpu *count;
-+ bool rc;
-+
-+ rcu_read_lock_sched();
-+
-+ if (__ref_is_percpu(ref, &count)) {
-+ this_cpu_inc(*count);
-+ rc = true;
-+ } else {
-+ rc = atomic_long_inc_not_zero(&ref->count);
-+ }
-+
-+ rcu_read_unlock_sched();
-+
-+ return (rc);
-+}
-+#elif defined(HAVE_BLKG_TRYGET)
-+#define vdev_blkg_tryget(bg) blkg_tryget(bg)
-+#endif
- /*
- * The Linux 5.0 kernel updated the bio_set_dev() macro so it calls the
- * GPL-only bio_associate_blkg() symbol thus inadvertently converting
-@@ -487,7 +517,7 @@ vdev_bio_associate_blkg(struct bio *bio)
- ASSERT3P(q, !=, NULL);
- ASSERT3P(bio->bi_blkg, ==, NULL);
-
-- if (q->root_blkg && blkg_tryget(q->root_blkg))
-+ if (q->root_blkg && vdev_blkg_tryget(q->root_blkg))
- bio->bi_blkg = q->root_blkg;
- }
- #define bio_associate_blkg vdev_bio_associate_blkg