diff options
-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 |