summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorEli Schwartz2020-03-18 15:48:12 -0400
committerEli Schwartz2020-04-02 12:15:14 -0400
commit7349ad27e42cc5faedf147ceeaf5c571c48d14f9 (patch)
tree0c48c49d22f9742b750b43da0c6965b87f2d9923
parentb8e29761ecb8060305cf24530cedc3f29bc248e0 (diff)
downloadaur-7349ad27e42cc5faedf147ceeaf5c571c48d14f9.tar.gz
upgpkg: zfs-dkms-git 0.8.0.r709.g5a42ef04f-1
This package is atrocious and completely unacceptable as-is. It claims to be a git package, but uses pinned sources, and the packager has simply ignored this for 15 months now. The version number is honestly bonkers, it distributes tons of garbage, and it's full of pseudocode from archzfs's questionable maintenance scripts. Nuke it all and replace it with parallel code from zfs-dkms.
-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