diff options
author | Eli Schwartz | 2020-03-18 15:48:12 -0400 |
---|---|---|
committer | Eli Schwartz | 2020-04-02 12:15:14 -0400 |
commit | 7349ad27e42cc5faedf147ceeaf5c571c48d14f9 (patch) | |
tree | 0c48c49d22f9742b750b43da0c6965b87f2d9923 | |
parent | b8e29761ecb8060305cf24530cedc3f29bc248e0 (diff) | |
download | aur-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-- | .SRCINFO | 32 | ||||
-rw-r--r-- | .gitignore | 5 | ||||
-rw-r--r-- | 0001-only-build-the-module-in-dkms.conf.patch | 49 | ||||
-rw-r--r-- | PKGBUILD | 89 | ||||
-rw-r--r-- | linux-5.5-compat-blkg_tryget.patch | 136 |
5 files changed, 122 insertions, 189 deletions
@@ -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 + @@ -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 |