From 6ac2a001590357fb85d6f56e3e52c68d3e1b9220 Mon Sep 17 00:00:00 2001
From: V3n3RiX <venerix@redcorelinux.org>
Date: Sat, 11 Sep 2021 19:18:58 +0100
Subject: sys-kernel/zfs-dkms && sys-fs/zfs-utils : add linux-5.14 compat

---
 metadata/md5-cache/sys-fs/zfs-utils-2.1.0          |  16 ---
 metadata/md5-cache/sys-fs/zfs-utils-2.1.0-r1       |  16 +++
 metadata/md5-cache/sys-kernel/zfs-dkms-2.1.0       |  12 --
 metadata/md5-cache/sys-kernel/zfs-dkms-2.1.0-r1    |  12 ++
 metadata/pkg_desc_index                            |   4 +-
 .../1c24bf966c373009f2be77438e8696aabf50a7e7.diff  |  84 +++++++++++++
 .../eb17f92e1edabcde442e5fbdff4525054be8595.diff   | 133 ++++++++++++++++++++
 sys-fs/zfs-utils/zfs-utils-2.1.0-r1.ebuild         | 140 +++++++++++++++++++++
 sys-fs/zfs-utils/zfs-utils-2.1.0.ebuild            | 135 --------------------
 .../1c24bf966c373009f2be77438e8696aabf50a7e7.diff  |  84 +++++++++++++
 .../eb17f92e1edabcde442e5fbdff4525054be8595.diff   | 133 ++++++++++++++++++++
 sys-kernel/zfs-dkms/zfs-dkms-2.1.0-r1.ebuild       |  56 +++++++++
 sys-kernel/zfs-dkms/zfs-dkms-2.1.0.ebuild          |  51 --------
 13 files changed, 660 insertions(+), 216 deletions(-)
 delete mode 100644 metadata/md5-cache/sys-fs/zfs-utils-2.1.0
 create mode 100644 metadata/md5-cache/sys-fs/zfs-utils-2.1.0-r1
 delete mode 100644 metadata/md5-cache/sys-kernel/zfs-dkms-2.1.0
 create mode 100644 metadata/md5-cache/sys-kernel/zfs-dkms-2.1.0-r1
 create mode 100644 sys-fs/zfs-utils/files/1c24bf966c373009f2be77438e8696aabf50a7e7.diff
 create mode 100644 sys-fs/zfs-utils/files/eb17f92e1edabcde442e5fbdff4525054be8595.diff
 create mode 100644 sys-fs/zfs-utils/zfs-utils-2.1.0-r1.ebuild
 delete mode 100644 sys-fs/zfs-utils/zfs-utils-2.1.0.ebuild
 create mode 100644 sys-kernel/zfs-dkms/files/1c24bf966c373009f2be77438e8696aabf50a7e7.diff
 create mode 100644 sys-kernel/zfs-dkms/files/eb17f92e1edabcde442e5fbdff4525054be8595.diff
 create mode 100644 sys-kernel/zfs-dkms/zfs-dkms-2.1.0-r1.ebuild
 delete mode 100644 sys-kernel/zfs-dkms/zfs-dkms-2.1.0.ebuild

diff --git a/metadata/md5-cache/sys-fs/zfs-utils-2.1.0 b/metadata/md5-cache/sys-fs/zfs-utils-2.1.0
deleted file mode 100644
index 3e103ef2..00000000
--- a/metadata/md5-cache/sys-fs/zfs-utils-2.1.0
+++ /dev/null
@@ -1,16 +0,0 @@
-BDEPEND=virtual/awk virtual/pkgconfig python? ( dev-python/setuptools[python_targets_python3_8(-)?,python_targets_python3_9(-)?] ) virtual/pkgconfig
-DEFINED_PHASES=compile configure install prepare
-DEPEND=net-libs/libtirpc[static-libs?] sys-apps/util-linux[static-libs?] sys-libs/zlib[static-libs(+)?] virtual/libudev[static-libs(-)?] dev-libs/openssl:0=[static-libs?] pam? ( sys-libs/pam ) python? ( virtual/python-cffi[python_targets_python3_8(-)?,python_targets_python3_9(-)?] )
-DESCRIPTION=Userland utilities for ZFS Linux kernel module
-EAPI=7
-HOMEPAGE=https://zfsonlinux.org/
-IUSE=debug pam python test-suite static-libs python_targets_python3_8 python_targets_python3_9
-KEYWORDS=~amd64
-LICENSE=BSD-2 CDDL MIT
-RDEPEND=net-libs/libtirpc[static-libs?] sys-apps/util-linux[static-libs?] sys-libs/zlib[static-libs(+)?] virtual/libudev[static-libs(-)?] dev-libs/openssl:0=[static-libs?] pam? ( sys-libs/pam ) python? ( virtual/python-cffi[python_targets_python3_8(-)?,python_targets_python3_9(-)?] ) !prefix? ( virtual/udev ) sys-fs/udev-init-scripts test-suite? ( sys-apps/kmod[tools] sys-apps/util-linux sys-devel/bc sys-block/parted sys-fs/lsscsi sys-fs/mdadm sys-process/procps )
-REQUIRED_USE=|| ( python_targets_python3_8 python_targets_python3_9 )
-RESTRICT=test
-SLOT=0
-SRC_URI=https://github.com/openzfs/zfs-utils/releases/download/zfs-2.1.0/zfs-2.1.0.tar.gz
-_eclasses_=bash-completion-r1	d3a60385655d9b402be765a6de333245	distutils-r1	6088739b8548699015d46289639d660c	eapi8-dosym	cd7d420bb5be5ee079f27239ce76b8f5	edos2unix	33e347e171066657f91f8b0c72ec8773	eutils	dab5d8ec471d025b79c9e6906bcf3bff	flag-o-matic	4134b5c0fb719b9161d10bdaba9e09e5	multibuild	05a584848db4901c97fcd94ae7cc3a97	multilib	4b66d835ec72e021e359bb81eacfe988	multiprocessing	61c959fc55c15c00bbb1079d6a71370b	pam	41ce39f668e11d31ff4734f3b5794f7d	python-r1	e574a3642f886323f18f867ecc4d91c4	python-utils-r1	08d890890f70fe0096093016e55438d5	strip-linguas	ac3ee41ee2d31d8c41a77c0838320cc7	toolchain-funcs	9ea1c67b6f8315fdc2568abb674519aa	udev	0a92682c0f65a60d01453db598fc6490	wrapper	4251d4c84c25f59094fd557e0063a974
-_md5_=332639468a8a8a2a0678ff410d2da163
diff --git a/metadata/md5-cache/sys-fs/zfs-utils-2.1.0-r1 b/metadata/md5-cache/sys-fs/zfs-utils-2.1.0-r1
new file mode 100644
index 00000000..90316b3b
--- /dev/null
+++ b/metadata/md5-cache/sys-fs/zfs-utils-2.1.0-r1
@@ -0,0 +1,16 @@
+BDEPEND=virtual/awk virtual/pkgconfig python? ( dev-python/setuptools[python_targets_python3_8(-)?,python_targets_python3_9(-)?] ) virtual/pkgconfig
+DEFINED_PHASES=compile configure install prepare
+DEPEND=net-libs/libtirpc[static-libs?] sys-apps/util-linux[static-libs?] sys-libs/zlib[static-libs(+)?] virtual/libudev[static-libs(-)?] dev-libs/openssl:0=[static-libs?] pam? ( sys-libs/pam ) python? ( virtual/python-cffi[python_targets_python3_8(-)?,python_targets_python3_9(-)?] )
+DESCRIPTION=Userland utilities for ZFS Linux kernel module
+EAPI=7
+HOMEPAGE=https://zfsonlinux.org/
+IUSE=debug pam python test-suite static-libs python_targets_python3_8 python_targets_python3_9
+KEYWORDS=~amd64
+LICENSE=BSD-2 CDDL MIT
+RDEPEND=net-libs/libtirpc[static-libs?] sys-apps/util-linux[static-libs?] sys-libs/zlib[static-libs(+)?] virtual/libudev[static-libs(-)?] dev-libs/openssl:0=[static-libs?] pam? ( sys-libs/pam ) python? ( virtual/python-cffi[python_targets_python3_8(-)?,python_targets_python3_9(-)?] ) !prefix? ( virtual/udev ) sys-fs/udev-init-scripts test-suite? ( sys-apps/kmod[tools] sys-apps/util-linux sys-devel/bc sys-block/parted sys-fs/lsscsi sys-fs/mdadm sys-process/procps )
+REQUIRED_USE=|| ( python_targets_python3_8 python_targets_python3_9 )
+RESTRICT=test
+SLOT=0
+SRC_URI=https://github.com/openzfs/zfs-utils/releases/download/zfs-2.1.0/zfs-2.1.0.tar.gz
+_eclasses_=bash-completion-r1	d3a60385655d9b402be765a6de333245	distutils-r1	6088739b8548699015d46289639d660c	eapi8-dosym	cd7d420bb5be5ee079f27239ce76b8f5	edos2unix	33e347e171066657f91f8b0c72ec8773	eutils	dab5d8ec471d025b79c9e6906bcf3bff	flag-o-matic	4134b5c0fb719b9161d10bdaba9e09e5	multibuild	05a584848db4901c97fcd94ae7cc3a97	multilib	4b66d835ec72e021e359bb81eacfe988	multiprocessing	61c959fc55c15c00bbb1079d6a71370b	pam	41ce39f668e11d31ff4734f3b5794f7d	python-r1	e574a3642f886323f18f867ecc4d91c4	python-utils-r1	08d890890f70fe0096093016e55438d5	strip-linguas	ac3ee41ee2d31d8c41a77c0838320cc7	toolchain-funcs	9ea1c67b6f8315fdc2568abb674519aa	udev	0a92682c0f65a60d01453db598fc6490	wrapper	4251d4c84c25f59094fd557e0063a974
+_md5_=e7cbc64bf85cdc05c92f0c07ca6091a7
diff --git a/metadata/md5-cache/sys-kernel/zfs-dkms-2.1.0 b/metadata/md5-cache/sys-kernel/zfs-dkms-2.1.0
deleted file mode 100644
index cf67bb53..00000000
--- a/metadata/md5-cache/sys-kernel/zfs-dkms-2.1.0
+++ /dev/null
@@ -1,12 +0,0 @@
-DEFINED_PHASES=compile configure install postinst prerm
-DEPEND=sys-kernel/dkms
-DESCRIPTION=ZFS sources for linux
-EAPI=7
-HOMEPAGE=http://zfsonlinux.org/
-KEYWORDS=amd64
-LICENSE=GPL-2
-RDEPEND=sys-kernel/dkms
-SLOT=0
-SRC_URI=https://github.com/zfsonlinux/zfs/releases/download/zfs-2.1.0/zfs-2.1.0.tar.gz
-_eclasses_=edos2unix	33e347e171066657f91f8b0c72ec8773	eutils	dab5d8ec471d025b79c9e6906bcf3bff	strip-linguas	ac3ee41ee2d31d8c41a77c0838320cc7	wrapper	4251d4c84c25f59094fd557e0063a974
-_md5_=c99b139394da5f09fe55671b0f12322c
diff --git a/metadata/md5-cache/sys-kernel/zfs-dkms-2.1.0-r1 b/metadata/md5-cache/sys-kernel/zfs-dkms-2.1.0-r1
new file mode 100644
index 00000000..d3169e7e
--- /dev/null
+++ b/metadata/md5-cache/sys-kernel/zfs-dkms-2.1.0-r1
@@ -0,0 +1,12 @@
+DEFINED_PHASES=compile configure install postinst prerm
+DEPEND=sys-kernel/dkms
+DESCRIPTION=ZFS sources for linux
+EAPI=7
+HOMEPAGE=http://zfsonlinux.org/
+KEYWORDS=amd64
+LICENSE=GPL-2
+RDEPEND=sys-kernel/dkms
+SLOT=0
+SRC_URI=https://github.com/zfsonlinux/zfs/releases/download/zfs-2.1.0/zfs-2.1.0.tar.gz
+_eclasses_=edos2unix	33e347e171066657f91f8b0c72ec8773	eutils	dab5d8ec471d025b79c9e6906bcf3bff	strip-linguas	ac3ee41ee2d31d8c41a77c0838320cc7	wrapper	4251d4c84c25f59094fd557e0063a974
+_md5_=5ffcef0b9dbfc20608e0604ce0097563
diff --git a/metadata/pkg_desc_index b/metadata/pkg_desc_index
index 8e176eea..ee24eb0e 100644
--- a/metadata/pkg_desc_index
+++ b/metadata/pkg_desc_index
@@ -57,7 +57,7 @@ sys-fs/cryptsetup 2.3.4-r10: Tool to setup encrypted devices with dm-crypt
 sys-fs/gocryptfs 2.0.1-r1: Encrypted overlay filesystem written in Go
 sys-fs/vhba 20190831-r2: Virtual (SCSI) Host Bus Adapter kernel module for the CDEmu suite
 sys-fs/zfs 2.1.0: ZFS meta-package (Gentoo compatibility ebuild)
-sys-fs/zfs-utils 2.1.0: Userland utilities for ZFS Linux kernel module
+sys-fs/zfs-utils 2.1.0-r1: Userland utilities for ZFS Linux kernel module
 sys-kernel/bbswitch-dkms 0.8-r1: BBswitch sources for linux
 sys-kernel/broadcom-sta-dkms 6.30.223.271-r5: Broadcom's IEEE 802.11a/b/g/n hybrid Linux device driver source
 sys-kernel/dkms 2.3-r1: Dynamic Kernel Module Support
@@ -75,7 +75,7 @@ sys-kernel/nvidia-drivers-legacy-dkms 390.144: NVIDIA driver sources for linux
 sys-kernel/rtl8821cu-dkms 5.8.1: Realtek RTL8811CU/RTL8821CU USB Wi-Fi adapter driver for Linux
 sys-kernel/vhba-dkms 20190831: Virtual (SCSI) Host Bus Adapter kernel module for the CDEmu suite sources
 sys-kernel/virtualbox-modules-dkms 6.1.18-r1: Kernel Modules source for Virtualbox
-sys-kernel/zfs-dkms 2.1.0: ZFS sources for linux
+sys-kernel/zfs-dkms 2.1.0-r1: ZFS sources for linux
 sys-libs/binutils-libs 2.35.2-r10: Core binutils libraries (libbfd, libopcodes, libiberty) for external packages
 sys-libs/glibc 2.33-r10: GNU libc C library
 sys-power/radeon-profile 20200824-r10: Read current clocks of ATi/AMD Radeon cards
diff --git a/sys-fs/zfs-utils/files/1c24bf966c373009f2be77438e8696aabf50a7e7.diff b/sys-fs/zfs-utils/files/1c24bf966c373009f2be77438e8696aabf50a7e7.diff
new file mode 100644
index 00000000..e53bfb1c
--- /dev/null
+++ b/sys-fs/zfs-utils/files/1c24bf966c373009f2be77438e8696aabf50a7e7.diff
@@ -0,0 +1,84 @@
+diff --git a/config/kernel-vfs-set_page_dirty.m4 b/config/kernel-vfs-set_page_dirty.m4
+new file mode 100644
+index 00000000000..a9d252e4e01
+--- /dev/null
++++ b/config/kernel-vfs-set_page_dirty.m4
+@@ -0,0 +1,34 @@
++dnl #
++dnl # Linux 5.14 adds a change to require set_page_dirty to be manually
++dnl # wired up in struct address_space_operations. Determine if this needs
++dnl # to be done. This patch set also introduced __set_page_dirty_nobuffers
++dnl # declaration in linux/pagemap.h, so these tests look for the presence
++dnl # of that function to tell the compiler to assign set_page_dirty in
++dnl # module/os/linux/zfs/zpl_file.c
++dnl #
++AC_DEFUN([ZFS_AC_KERNEL_SRC_VFS_SET_PAGE_DIRTY_NOBUFFERS], [
++	ZFS_LINUX_TEST_SRC([vfs_has_set_page_dirty_nobuffers], [
++		#include <linux/pagemap.h>
++		#include <linux/fs.h>
++
++		static const struct address_space_operations
++		    aops __attribute__ ((unused)) = {
++			.set_page_dirty = __set_page_dirty_nobuffers,
++		};
++	],[])
++])
++
++AC_DEFUN([ZFS_AC_KERNEL_VFS_SET_PAGE_DIRTY_NOBUFFERS], [
++	dnl #
++	dnl # Linux 5.14 change requires set_page_dirty() to be assigned
++	dnl # in address_space_operations()
++	dnl #
++	AC_MSG_CHECKING([__set_page_dirty_nobuffers exists])
++	ZFS_LINUX_TEST_RESULT([vfs_has_set_page_dirty_nobuffers], [
++		AC_MSG_RESULT([yes])
++		AC_DEFINE(HAVE_VFS_SET_PAGE_DIRTY_NOBUFFERS, 1,
++			[__set_page_dirty_nobuffers exists])
++	],[
++		AC_MSG_RESULT([no])
++	])
++])
+diff --git a/config/kernel.m4 b/config/kernel.m4
+index 7196e66ca28..5ea2286dbcc 100644
+--- a/config/kernel.m4
++++ b/config/kernel.m4
+@@ -132,6 +132,7 @@ AC_DEFUN([ZFS_AC_KERNEL_TEST_SRC], [
+ 	ZFS_AC_KERNEL_SRC_SIGNAL_STOP
+ 	ZFS_AC_KERNEL_SRC_SIGINFO
+ 	ZFS_AC_KERNEL_SRC_SET_SPECIAL_STATE
++	ZFS_AC_KERNEL_SRC_VFS_SET_PAGE_DIRTY_NOBUFFERS
+ 
+ 	AC_MSG_CHECKING([for available kernel interfaces])
+ 	ZFS_LINUX_TEST_COMPILE_ALL([kabi])
+@@ -237,6 +238,7 @@ AC_DEFUN([ZFS_AC_KERNEL_TEST_RESULT], [
+ 	ZFS_AC_KERNEL_SIGNAL_STOP
+ 	ZFS_AC_KERNEL_SIGINFO
+ 	ZFS_AC_KERNEL_SET_SPECIAL_STATE
++	ZFS_AC_KERNEL_VFS_SET_PAGE_DIRTY_NOBUFFERS
+ ])
+ 
+ dnl #
+diff --git a/module/os/linux/zfs/zpl_file.c b/module/os/linux/zfs/zpl_file.c
+index 0319148b983..63002fe3b93 100644
+--- a/module/os/linux/zfs/zpl_file.c
++++ b/module/os/linux/zfs/zpl_file.c
+@@ -33,6 +33,9 @@
+ #include <sys/zfs_vfsops.h>
+ #include <sys/zfs_vnops.h>
+ #include <sys/zfs_project.h>
++#ifdef HAVE_VFS_SET_PAGE_DIRTY_NOBUFFERS
++#include <linux/pagemap.h>
++#endif
+ 
+ /*
+  * When using fallocate(2) to preallocate space, inflate the requested
+@@ -1018,6 +1021,9 @@ const struct address_space_operations zpl_address_space_operations = {
+ 	.writepage	= zpl_writepage,
+ 	.writepages	= zpl_writepages,
+ 	.direct_IO	= zpl_direct_IO,
++#ifdef HAVE_VFS_SET_PAGE_DIRTY_NOBUFFERS
++	.set_page_dirty = __set_page_dirty_nobuffers,
++#endif
+ };
+ 
+ const struct file_operations zpl_file_operations = {
diff --git a/sys-fs/zfs-utils/files/eb17f92e1edabcde442e5fbdff4525054be8595.diff b/sys-fs/zfs-utils/files/eb17f92e1edabcde442e5fbdff4525054be8595.diff
new file mode 100644
index 00000000..1e72ebaf
--- /dev/null
+++ b/sys-fs/zfs-utils/files/eb17f92e1edabcde442e5fbdff4525054be8595.diff
@@ -0,0 +1,133 @@
+diff --git a/config/kernel-make-request-fn.m4 b/config/kernel-make-request-fn.m4
+index 290ef6b8da7..86b202a7a27 100644
+--- a/config/kernel-make-request-fn.m4
++++ b/config/kernel-make-request-fn.m4
+@@ -42,6 +42,13 @@ AC_DEFUN([ZFS_AC_KERNEL_SRC_MAKE_REQUEST_FN], [
+ 		struct block_device_operations o;
+ 		o.submit_bio = NULL;
+ 	])
++
++	ZFS_LINUX_TEST_SRC([blk_alloc_disk], [
++		#include <linux/blkdev.h>
++	],[
++		struct gendisk *disk  __attribute__ ((unused));
++		disk = blk_alloc_disk(NUMA_NO_NODE);
++	])
+ ])
+ 
+ AC_DEFUN([ZFS_AC_KERNEL_MAKE_REQUEST_FN], [
+@@ -56,6 +63,19 @@ AC_DEFUN([ZFS_AC_KERNEL_MAKE_REQUEST_FN], [
+ 
+ 		AC_DEFINE(HAVE_SUBMIT_BIO_IN_BLOCK_DEVICE_OPERATIONS, 1,
+ 		    [submit_bio is member of struct block_device_operations])
++
++		dnl #
++		dnl # Linux 5.14 API Change:
++		dnl # blk_alloc_queue() + alloc_disk() combo replaced by
++		dnl # a single call to blk_alloc_disk().
++		dnl #
++		AC_MSG_CHECKING([whether blk_alloc_disk() exists])
++		ZFS_LINUX_TEST_RESULT([blk_alloc_disk], [
++			AC_MSG_RESULT(yes)
++			AC_DEFINE([HAVE_BLK_ALLOC_DISK], 1, [blk_alloc_disk() exists])
++		], [
++			AC_MSG_RESULT(no)
++		])
+ 	],[
+ 		AC_MSG_RESULT(no)
+ 
+diff --git a/module/os/linux/zfs/zvol_os.c b/module/os/linux/zfs/zvol_os.c
+index 741979f11af..8b29d73a3e0 100644
+--- a/module/os/linux/zfs/zvol_os.c
++++ b/module/os/linux/zfs/zvol_os.c
+@@ -762,7 +762,7 @@ static struct block_device_operations zvol_ops = {
+ 	.getgeo			= zvol_getgeo,
+ 	.owner			= THIS_MODULE,
+ #ifdef HAVE_SUBMIT_BIO_IN_BLOCK_DEVICE_OPERATIONS
+-    .submit_bio		= zvol_submit_bio,
++	.submit_bio		= zvol_submit_bio,
+ #endif
+ };
+ 
+@@ -795,13 +795,40 @@ zvol_alloc(dev_t dev, const char *name)
+ 	mutex_init(&zv->zv_state_lock, NULL, MUTEX_DEFAULT, NULL);
+ 
+ #ifdef HAVE_SUBMIT_BIO_IN_BLOCK_DEVICE_OPERATIONS
++#ifdef HAVE_BLK_ALLOC_DISK
++	zso->zvo_disk = blk_alloc_disk(NUMA_NO_NODE);
++	if (zso->zvo_disk == NULL)
++		goto out_kmem;
++
++	zso->zvo_disk->minors = ZVOL_MINORS;
++	zso->zvo_queue = zso->zvo_disk->queue;
++#else
+ 	zso->zvo_queue = blk_alloc_queue(NUMA_NO_NODE);
++	if (zso->zvo_queue == NULL)
++		goto out_kmem;
++
++	zso->zvo_disk = alloc_disk(ZVOL_MINORS);
++	if (zso->zvo_disk == NULL) {
++		blk_cleanup_queue(zso->zvo_queue);
++		goto out_kmem;
++	}
++
++	zso->zvo_disk->queue = zso->zvo_queue;
++#endif /* HAVE_BLK_ALLOC_DISK */
+ #else
+ 	zso->zvo_queue = blk_generic_alloc_queue(zvol_request, NUMA_NO_NODE);
+-#endif
+ 	if (zso->zvo_queue == NULL)
+ 		goto out_kmem;
+ 
++	zso->zvo_disk = alloc_disk(ZVOL_MINORS);
++	if (zso->zvo_disk == NULL) {
++		blk_cleanup_queue(zso->zvo_queue);
++		goto out_kmem;
++	}
++
++	zso->zvo_disk->queue = zso->zvo_queue;
++#endif /* HAVE_SUBMIT_BIO_IN_BLOCK_DEVICE_OPERATIONS */
++
+ 	blk_queue_set_write_cache(zso->zvo_queue, B_TRUE, B_TRUE);
+ 
+ 	/* Limit read-ahead to a single page to prevent over-prefetching. */
+@@ -810,10 +837,6 @@ zvol_alloc(dev_t dev, const char *name)
+ 	/* Disable write merging in favor of the ZIO pipeline. */
+ 	blk_queue_flag_set(QUEUE_FLAG_NOMERGES, zso->zvo_queue);
+ 
+-	zso->zvo_disk = alloc_disk(ZVOL_MINORS);
+-	if (zso->zvo_disk == NULL)
+-		goto out_queue;
+-
+ 	zso->zvo_queue->queuedata = zv;
+ 	zso->zvo_dev = dev;
+ 	zv->zv_open_count = 0;
+@@ -844,14 +867,11 @@ zvol_alloc(dev_t dev, const char *name)
+ 	zso->zvo_disk->first_minor = (dev & MINORMASK);
+ 	zso->zvo_disk->fops = &zvol_ops;
+ 	zso->zvo_disk->private_data = zv;
+-	zso->zvo_disk->queue = zso->zvo_queue;
+ 	snprintf(zso->zvo_disk->disk_name, DISK_NAME_LEN, "%s%d",
+ 	    ZVOL_DEV_NAME, (dev & MINORMASK));
+ 
+ 	return (zv);
+ 
+-out_queue:
+-	blk_cleanup_queue(zso->zvo_queue);
+ out_kmem:
+ 	kmem_free(zso, sizeof (struct zvol_state_os));
+ 	kmem_free(zv, sizeof (zvol_state_t));
+@@ -882,8 +902,13 @@ zvol_free(zvol_state_t *zv)
+ 	zfs_rangelock_fini(&zv->zv_rangelock);
+ 
+ 	del_gendisk(zv->zv_zso->zvo_disk);
++#if defined(HAVE_SUBMIT_BIO_IN_BLOCK_DEVICE_OPERATIONS) && \
++	defined(HAVE_BLK_ALLOC_DISK)
++	blk_cleanup_disk(zv->zv_zso->zvo_disk);
++#else
+ 	blk_cleanup_queue(zv->zv_zso->zvo_queue);
+ 	put_disk(zv->zv_zso->zvo_disk);
++#endif
+ 
+ 	ida_simple_remove(&zvol_ida,
+ 	    MINOR(zv->zv_zso->zvo_dev) >> ZVOL_MINOR_BITS);
diff --git a/sys-fs/zfs-utils/zfs-utils-2.1.0-r1.ebuild b/sys-fs/zfs-utils/zfs-utils-2.1.0-r1.ebuild
new file mode 100644
index 00000000..fef710b0
--- /dev/null
+++ b/sys-fs/zfs-utils/zfs-utils-2.1.0-r1.ebuild
@@ -0,0 +1,140 @@
+# Copyright 1999-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+DISTUTILS_OPTIONAL=1
+PYTHON_COMPAT=( python3_{7,8,9} )
+
+inherit bash-completion-r1 distutils-r1 flag-o-matic pam toolchain-funcs udev
+
+MY_PN="zfs"
+MY_P="${MY_PN}-${PV}"
+
+DESCRIPTION="Userland utilities for ZFS Linux kernel module"
+HOMEPAGE="https://zfsonlinux.org/"
+
+SRC_URI="https://github.com/openzfs/${PN}/releases/download/${MY_P}/${MY_P}.tar.gz"
+KEYWORDS="~amd64"
+S="${WORKDIR}/${MY_P}"
+
+LICENSE="BSD-2 CDDL MIT"
+SLOT="0"
+IUSE="debug pam python test-suite static-libs"
+
+DEPEND="
+	net-libs/libtirpc[static-libs?]
+	sys-apps/util-linux[static-libs?]
+	sys-libs/zlib[static-libs(+)?]
+	virtual/libudev[static-libs(-)?]
+	dev-libs/openssl:0=[static-libs?]
+	pam? ( sys-libs/pam )
+	python? (
+		virtual/python-cffi[${PYTHON_USEDEP}]
+	)
+"
+
+BDEPEND="virtual/awk
+	virtual/pkgconfig
+	python? (
+		dev-python/setuptools[${PYTHON_USEDEP}]
+	)
+"
+
+RDEPEND="${DEPEND}
+	!prefix? ( virtual/udev )
+	sys-fs/udev-init-scripts
+	test-suite? (
+		sys-apps/kmod[tools]
+		sys-apps/util-linux
+		sys-devel/bc
+		sys-block/parted
+		sys-fs/lsscsi
+		sys-fs/mdadm
+		sys-process/procps
+	)
+"
+
+REQUIRED_USE="${PYTHON_REQUIRED_USE}"
+
+RESTRICT="test"
+
+PATCHES=(
+	"${FILESDIR}"/eb17f92e1edabcde442e5fbdff4525054be8595.diff
+	"${FILESDIR}"/1c24bf966c373009f2be77438e8696aabf50a7e7.diff
+)
+
+src_prepare() {
+	default
+
+	if use python; then
+		pushd contrib/pyzfs >/dev/null || die
+		distutils-r1_src_prepare
+		popd >/dev/null || die
+	fi
+
+	# prevent errors showing up on zfs-mount stop, #647688
+	# openrc will unmount all filesystems anyway.
+	sed -i "/^ZFS_UNMOUNT=/ s/yes/no/" "etc/default/zfs.in" || die
+}
+
+src_configure() {
+	local myconf=(
+		--bindir="${EPREFIX}/bin"
+		--enable-shared
+		--disable-systemd
+		--enable-sysvinit
+		--localstatedir="${EPREFIX}/var"
+		--sbindir="${EPREFIX}/sbin"
+		--with-config=user
+		--with-dracutdir="${EPREFIX}/usr/lib/dracut"
+		--with-udevdir="$(get_udevdir)"
+		--with-pamconfigsdir="${EPREFIX}/unwanted_files"
+		--with-pammoduledir="$(getpam_mod_dir)"
+		--with-vendor=gentoo
+		$(use_enable debug)
+		$(use_enable pam)
+		$(use_enable python pyzfs)
+	)
+
+	econf "${myconf[@]}"
+}
+
+src_compile() {
+	default
+	if use python; then
+		pushd contrib/pyzfs >/dev/null || die
+		distutils-r1_src_compile
+		popd >/dev/null || die
+	fi
+}
+
+src_install() {
+	default
+
+	gen_usr_ldscript -a nvpair uutil zfsbootenv zfs zfs_core zpool
+
+	use pam && { rm -rv "${ED}/unwanted_files" || die ; }
+
+	use test-suite || { rm -r "${ED}/usr/share/zfs" || die ; }
+
+	if ! use static-libs; then
+		find "${ED}/" -name '*.la' -delete || die
+	fi
+
+	dobashcomp contrib/bash_completion.d/zfs
+	bashcomp_alias zfs zpool
+
+	# strip executable bit from conf.d file
+	fperms 0644 /etc/conf.d/zfs
+
+	if use python; then
+		pushd contrib/pyzfs >/dev/null || die
+		distutils-r1_src_install
+		popd >/dev/null || die
+	fi
+
+	# enforce best available python implementation
+	python_setup
+	python_fix_shebang "${ED}/bin"
+}
diff --git a/sys-fs/zfs-utils/zfs-utils-2.1.0.ebuild b/sys-fs/zfs-utils/zfs-utils-2.1.0.ebuild
deleted file mode 100644
index ee5703b3..00000000
--- a/sys-fs/zfs-utils/zfs-utils-2.1.0.ebuild
+++ /dev/null
@@ -1,135 +0,0 @@
-# Copyright 1999-2021 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-DISTUTILS_OPTIONAL=1
-PYTHON_COMPAT=( python3_{7,8,9} )
-
-inherit bash-completion-r1 distutils-r1 flag-o-matic pam toolchain-funcs udev
-
-MY_PN="zfs"
-MY_P="${MY_PN}-${PV}"
-
-DESCRIPTION="Userland utilities for ZFS Linux kernel module"
-HOMEPAGE="https://zfsonlinux.org/"
-
-SRC_URI="https://github.com/openzfs/${PN}/releases/download/${MY_P}/${MY_P}.tar.gz"
-KEYWORDS="~amd64"
-S="${WORKDIR}/${MY_P}"
-
-LICENSE="BSD-2 CDDL MIT"
-SLOT="0"
-IUSE="debug pam python test-suite static-libs"
-
-DEPEND="
-	net-libs/libtirpc[static-libs?]
-	sys-apps/util-linux[static-libs?]
-	sys-libs/zlib[static-libs(+)?]
-	virtual/libudev[static-libs(-)?]
-	dev-libs/openssl:0=[static-libs?]
-	pam? ( sys-libs/pam )
-	python? (
-		virtual/python-cffi[${PYTHON_USEDEP}]
-	)
-"
-
-BDEPEND="virtual/awk
-	virtual/pkgconfig
-	python? (
-		dev-python/setuptools[${PYTHON_USEDEP}]
-	)
-"
-
-RDEPEND="${DEPEND}
-	!prefix? ( virtual/udev )
-	sys-fs/udev-init-scripts
-	test-suite? (
-		sys-apps/kmod[tools]
-		sys-apps/util-linux
-		sys-devel/bc
-		sys-block/parted
-		sys-fs/lsscsi
-		sys-fs/mdadm
-		sys-process/procps
-	)
-"
-
-REQUIRED_USE="${PYTHON_REQUIRED_USE}"
-
-RESTRICT="test"
-
-src_prepare() {
-	default
-
-	if use python; then
-		pushd contrib/pyzfs >/dev/null || die
-		distutils-r1_src_prepare
-		popd >/dev/null || die
-	fi
-
-	# prevent errors showing up on zfs-mount stop, #647688
-	# openrc will unmount all filesystems anyway.
-	sed -i "/^ZFS_UNMOUNT=/ s/yes/no/" "etc/default/zfs.in" || die
-}
-
-src_configure() {
-	local myconf=(
-		--bindir="${EPREFIX}/bin"
-		--enable-shared
-		--disable-systemd
-		--enable-sysvinit
-		--localstatedir="${EPREFIX}/var"
-		--sbindir="${EPREFIX}/sbin"
-		--with-config=user
-		--with-dracutdir="${EPREFIX}/usr/lib/dracut"
-		--with-udevdir="$(get_udevdir)"
-		--with-pamconfigsdir="${EPREFIX}/unwanted_files"
-		--with-pammoduledir="$(getpam_mod_dir)"
-		--with-vendor=gentoo
-		$(use_enable debug)
-		$(use_enable pam)
-		$(use_enable python pyzfs)
-	)
-
-	econf "${myconf[@]}"
-}
-
-src_compile() {
-	default
-	if use python; then
-		pushd contrib/pyzfs >/dev/null || die
-		distutils-r1_src_compile
-		popd >/dev/null || die
-	fi
-}
-
-src_install() {
-	default
-
-	gen_usr_ldscript -a nvpair uutil zfsbootenv zfs zfs_core zpool
-
-	use pam && { rm -rv "${ED}/unwanted_files" || die ; }
-
-	use test-suite || { rm -r "${ED}/usr/share/zfs" || die ; }
-
-	if ! use static-libs; then
-		find "${ED}/" -name '*.la' -delete || die
-	fi
-
-	dobashcomp contrib/bash_completion.d/zfs
-	bashcomp_alias zfs zpool
-
-	# strip executable bit from conf.d file
-	fperms 0644 /etc/conf.d/zfs
-
-	if use python; then
-		pushd contrib/pyzfs >/dev/null || die
-		distutils-r1_src_install
-		popd >/dev/null || die
-	fi
-
-	# enforce best available python implementation
-	python_setup
-	python_fix_shebang "${ED}/bin"
-}
diff --git a/sys-kernel/zfs-dkms/files/1c24bf966c373009f2be77438e8696aabf50a7e7.diff b/sys-kernel/zfs-dkms/files/1c24bf966c373009f2be77438e8696aabf50a7e7.diff
new file mode 100644
index 00000000..e53bfb1c
--- /dev/null
+++ b/sys-kernel/zfs-dkms/files/1c24bf966c373009f2be77438e8696aabf50a7e7.diff
@@ -0,0 +1,84 @@
+diff --git a/config/kernel-vfs-set_page_dirty.m4 b/config/kernel-vfs-set_page_dirty.m4
+new file mode 100644
+index 00000000000..a9d252e4e01
+--- /dev/null
++++ b/config/kernel-vfs-set_page_dirty.m4
+@@ -0,0 +1,34 @@
++dnl #
++dnl # Linux 5.14 adds a change to require set_page_dirty to be manually
++dnl # wired up in struct address_space_operations. Determine if this needs
++dnl # to be done. This patch set also introduced __set_page_dirty_nobuffers
++dnl # declaration in linux/pagemap.h, so these tests look for the presence
++dnl # of that function to tell the compiler to assign set_page_dirty in
++dnl # module/os/linux/zfs/zpl_file.c
++dnl #
++AC_DEFUN([ZFS_AC_KERNEL_SRC_VFS_SET_PAGE_DIRTY_NOBUFFERS], [
++	ZFS_LINUX_TEST_SRC([vfs_has_set_page_dirty_nobuffers], [
++		#include <linux/pagemap.h>
++		#include <linux/fs.h>
++
++		static const struct address_space_operations
++		    aops __attribute__ ((unused)) = {
++			.set_page_dirty = __set_page_dirty_nobuffers,
++		};
++	],[])
++])
++
++AC_DEFUN([ZFS_AC_KERNEL_VFS_SET_PAGE_DIRTY_NOBUFFERS], [
++	dnl #
++	dnl # Linux 5.14 change requires set_page_dirty() to be assigned
++	dnl # in address_space_operations()
++	dnl #
++	AC_MSG_CHECKING([__set_page_dirty_nobuffers exists])
++	ZFS_LINUX_TEST_RESULT([vfs_has_set_page_dirty_nobuffers], [
++		AC_MSG_RESULT([yes])
++		AC_DEFINE(HAVE_VFS_SET_PAGE_DIRTY_NOBUFFERS, 1,
++			[__set_page_dirty_nobuffers exists])
++	],[
++		AC_MSG_RESULT([no])
++	])
++])
+diff --git a/config/kernel.m4 b/config/kernel.m4
+index 7196e66ca28..5ea2286dbcc 100644
+--- a/config/kernel.m4
++++ b/config/kernel.m4
+@@ -132,6 +132,7 @@ AC_DEFUN([ZFS_AC_KERNEL_TEST_SRC], [
+ 	ZFS_AC_KERNEL_SRC_SIGNAL_STOP
+ 	ZFS_AC_KERNEL_SRC_SIGINFO
+ 	ZFS_AC_KERNEL_SRC_SET_SPECIAL_STATE
++	ZFS_AC_KERNEL_SRC_VFS_SET_PAGE_DIRTY_NOBUFFERS
+ 
+ 	AC_MSG_CHECKING([for available kernel interfaces])
+ 	ZFS_LINUX_TEST_COMPILE_ALL([kabi])
+@@ -237,6 +238,7 @@ AC_DEFUN([ZFS_AC_KERNEL_TEST_RESULT], [
+ 	ZFS_AC_KERNEL_SIGNAL_STOP
+ 	ZFS_AC_KERNEL_SIGINFO
+ 	ZFS_AC_KERNEL_SET_SPECIAL_STATE
++	ZFS_AC_KERNEL_VFS_SET_PAGE_DIRTY_NOBUFFERS
+ ])
+ 
+ dnl #
+diff --git a/module/os/linux/zfs/zpl_file.c b/module/os/linux/zfs/zpl_file.c
+index 0319148b983..63002fe3b93 100644
+--- a/module/os/linux/zfs/zpl_file.c
++++ b/module/os/linux/zfs/zpl_file.c
+@@ -33,6 +33,9 @@
+ #include <sys/zfs_vfsops.h>
+ #include <sys/zfs_vnops.h>
+ #include <sys/zfs_project.h>
++#ifdef HAVE_VFS_SET_PAGE_DIRTY_NOBUFFERS
++#include <linux/pagemap.h>
++#endif
+ 
+ /*
+  * When using fallocate(2) to preallocate space, inflate the requested
+@@ -1018,6 +1021,9 @@ const struct address_space_operations zpl_address_space_operations = {
+ 	.writepage	= zpl_writepage,
+ 	.writepages	= zpl_writepages,
+ 	.direct_IO	= zpl_direct_IO,
++#ifdef HAVE_VFS_SET_PAGE_DIRTY_NOBUFFERS
++	.set_page_dirty = __set_page_dirty_nobuffers,
++#endif
+ };
+ 
+ const struct file_operations zpl_file_operations = {
diff --git a/sys-kernel/zfs-dkms/files/eb17f92e1edabcde442e5fbdff4525054be8595.diff b/sys-kernel/zfs-dkms/files/eb17f92e1edabcde442e5fbdff4525054be8595.diff
new file mode 100644
index 00000000..1e72ebaf
--- /dev/null
+++ b/sys-kernel/zfs-dkms/files/eb17f92e1edabcde442e5fbdff4525054be8595.diff
@@ -0,0 +1,133 @@
+diff --git a/config/kernel-make-request-fn.m4 b/config/kernel-make-request-fn.m4
+index 290ef6b8da7..86b202a7a27 100644
+--- a/config/kernel-make-request-fn.m4
++++ b/config/kernel-make-request-fn.m4
+@@ -42,6 +42,13 @@ AC_DEFUN([ZFS_AC_KERNEL_SRC_MAKE_REQUEST_FN], [
+ 		struct block_device_operations o;
+ 		o.submit_bio = NULL;
+ 	])
++
++	ZFS_LINUX_TEST_SRC([blk_alloc_disk], [
++		#include <linux/blkdev.h>
++	],[
++		struct gendisk *disk  __attribute__ ((unused));
++		disk = blk_alloc_disk(NUMA_NO_NODE);
++	])
+ ])
+ 
+ AC_DEFUN([ZFS_AC_KERNEL_MAKE_REQUEST_FN], [
+@@ -56,6 +63,19 @@ AC_DEFUN([ZFS_AC_KERNEL_MAKE_REQUEST_FN], [
+ 
+ 		AC_DEFINE(HAVE_SUBMIT_BIO_IN_BLOCK_DEVICE_OPERATIONS, 1,
+ 		    [submit_bio is member of struct block_device_operations])
++
++		dnl #
++		dnl # Linux 5.14 API Change:
++		dnl # blk_alloc_queue() + alloc_disk() combo replaced by
++		dnl # a single call to blk_alloc_disk().
++		dnl #
++		AC_MSG_CHECKING([whether blk_alloc_disk() exists])
++		ZFS_LINUX_TEST_RESULT([blk_alloc_disk], [
++			AC_MSG_RESULT(yes)
++			AC_DEFINE([HAVE_BLK_ALLOC_DISK], 1, [blk_alloc_disk() exists])
++		], [
++			AC_MSG_RESULT(no)
++		])
+ 	],[
+ 		AC_MSG_RESULT(no)
+ 
+diff --git a/module/os/linux/zfs/zvol_os.c b/module/os/linux/zfs/zvol_os.c
+index 741979f11af..8b29d73a3e0 100644
+--- a/module/os/linux/zfs/zvol_os.c
++++ b/module/os/linux/zfs/zvol_os.c
+@@ -762,7 +762,7 @@ static struct block_device_operations zvol_ops = {
+ 	.getgeo			= zvol_getgeo,
+ 	.owner			= THIS_MODULE,
+ #ifdef HAVE_SUBMIT_BIO_IN_BLOCK_DEVICE_OPERATIONS
+-    .submit_bio		= zvol_submit_bio,
++	.submit_bio		= zvol_submit_bio,
+ #endif
+ };
+ 
+@@ -795,13 +795,40 @@ zvol_alloc(dev_t dev, const char *name)
+ 	mutex_init(&zv->zv_state_lock, NULL, MUTEX_DEFAULT, NULL);
+ 
+ #ifdef HAVE_SUBMIT_BIO_IN_BLOCK_DEVICE_OPERATIONS
++#ifdef HAVE_BLK_ALLOC_DISK
++	zso->zvo_disk = blk_alloc_disk(NUMA_NO_NODE);
++	if (zso->zvo_disk == NULL)
++		goto out_kmem;
++
++	zso->zvo_disk->minors = ZVOL_MINORS;
++	zso->zvo_queue = zso->zvo_disk->queue;
++#else
+ 	zso->zvo_queue = blk_alloc_queue(NUMA_NO_NODE);
++	if (zso->zvo_queue == NULL)
++		goto out_kmem;
++
++	zso->zvo_disk = alloc_disk(ZVOL_MINORS);
++	if (zso->zvo_disk == NULL) {
++		blk_cleanup_queue(zso->zvo_queue);
++		goto out_kmem;
++	}
++
++	zso->zvo_disk->queue = zso->zvo_queue;
++#endif /* HAVE_BLK_ALLOC_DISK */
+ #else
+ 	zso->zvo_queue = blk_generic_alloc_queue(zvol_request, NUMA_NO_NODE);
+-#endif
+ 	if (zso->zvo_queue == NULL)
+ 		goto out_kmem;
+ 
++	zso->zvo_disk = alloc_disk(ZVOL_MINORS);
++	if (zso->zvo_disk == NULL) {
++		blk_cleanup_queue(zso->zvo_queue);
++		goto out_kmem;
++	}
++
++	zso->zvo_disk->queue = zso->zvo_queue;
++#endif /* HAVE_SUBMIT_BIO_IN_BLOCK_DEVICE_OPERATIONS */
++
+ 	blk_queue_set_write_cache(zso->zvo_queue, B_TRUE, B_TRUE);
+ 
+ 	/* Limit read-ahead to a single page to prevent over-prefetching. */
+@@ -810,10 +837,6 @@ zvol_alloc(dev_t dev, const char *name)
+ 	/* Disable write merging in favor of the ZIO pipeline. */
+ 	blk_queue_flag_set(QUEUE_FLAG_NOMERGES, zso->zvo_queue);
+ 
+-	zso->zvo_disk = alloc_disk(ZVOL_MINORS);
+-	if (zso->zvo_disk == NULL)
+-		goto out_queue;
+-
+ 	zso->zvo_queue->queuedata = zv;
+ 	zso->zvo_dev = dev;
+ 	zv->zv_open_count = 0;
+@@ -844,14 +867,11 @@ zvol_alloc(dev_t dev, const char *name)
+ 	zso->zvo_disk->first_minor = (dev & MINORMASK);
+ 	zso->zvo_disk->fops = &zvol_ops;
+ 	zso->zvo_disk->private_data = zv;
+-	zso->zvo_disk->queue = zso->zvo_queue;
+ 	snprintf(zso->zvo_disk->disk_name, DISK_NAME_LEN, "%s%d",
+ 	    ZVOL_DEV_NAME, (dev & MINORMASK));
+ 
+ 	return (zv);
+ 
+-out_queue:
+-	blk_cleanup_queue(zso->zvo_queue);
+ out_kmem:
+ 	kmem_free(zso, sizeof (struct zvol_state_os));
+ 	kmem_free(zv, sizeof (zvol_state_t));
+@@ -882,8 +902,13 @@ zvol_free(zvol_state_t *zv)
+ 	zfs_rangelock_fini(&zv->zv_rangelock);
+ 
+ 	del_gendisk(zv->zv_zso->zvo_disk);
++#if defined(HAVE_SUBMIT_BIO_IN_BLOCK_DEVICE_OPERATIONS) && \
++	defined(HAVE_BLK_ALLOC_DISK)
++	blk_cleanup_disk(zv->zv_zso->zvo_disk);
++#else
+ 	blk_cleanup_queue(zv->zv_zso->zvo_queue);
+ 	put_disk(zv->zv_zso->zvo_disk);
++#endif
+ 
+ 	ida_simple_remove(&zvol_ida,
+ 	    MINOR(zv->zv_zso->zvo_dev) >> ZVOL_MINOR_BITS);
diff --git a/sys-kernel/zfs-dkms/zfs-dkms-2.1.0-r1.ebuild b/sys-kernel/zfs-dkms/zfs-dkms-2.1.0-r1.ebuild
new file mode 100644
index 00000000..f4dfd6c1
--- /dev/null
+++ b/sys-kernel/zfs-dkms/zfs-dkms-2.1.0-r1.ebuild
@@ -0,0 +1,56 @@
+# Copyright 1999-2015 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=7
+
+inherit eutils
+
+MY_PN="zfs"
+MY_P="${MY_PN}-${PV}"
+
+DESCRIPTION="ZFS sources for linux"
+HOMEPAGE="http://zfsonlinux.org/"
+SRC_URI="https://github.com/zfsonlinux/zfs/releases/download/zfs-${PV}/${MY_P}.tar.gz"
+
+SLOT="0"
+LICENSE="GPL-2"
+KEYWORDS="amd64"
+IUSE=""
+DEPEND="sys-kernel/dkms"
+RDEPEND="${DEPEND}"
+
+PATCHES=(
+	"${FILESDIR}"/eb17f92e1edabcde442e5fbdff4525054be8595.diff
+	"${FILESDIR}"/1c24bf966c373009f2be77438e8696aabf50a7e7.diff
+)
+
+S="${WORKDIR}/${MY_P}"
+
+src_configure() {
+	:
+}
+
+src_compile() {
+	:
+}
+
+src_install() {
+	cp "${FILESDIR}/dkms.conf" "${S}" || die
+	dodir /usr/src/${P}
+	insinto /usr/src/${P}
+	doins -r ${S}/*
+	fperms 0755 /usr/src/${P}/configure
+	fperms 0755 /usr/src/${P}/scripts/dkms.mkconf
+	fperms 0755 /usr/src/${P}/scripts/dkms.postbuild
+	fperms 0755 /usr/src/${P}/scripts/enum-extract.pl
+	fperms 0755 /usr/src/${P}/scripts/make_gitrev.sh
+}
+
+pkg_postinst() {
+	dkms add ${PN}/${PV}
+}
+
+pkg_prerm() {
+	dkms remove ${PN}/${PV} --all
+}
diff --git a/sys-kernel/zfs-dkms/zfs-dkms-2.1.0.ebuild b/sys-kernel/zfs-dkms/zfs-dkms-2.1.0.ebuild
deleted file mode 100644
index cec96ca3..00000000
--- a/sys-kernel/zfs-dkms/zfs-dkms-2.1.0.ebuild
+++ /dev/null
@@ -1,51 +0,0 @@
-# Copyright 1999-2015 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-# $Id$
-
-EAPI=7
-
-inherit eutils
-
-MY_PN="zfs"
-MY_P="${MY_PN}-${PV}"
-
-DESCRIPTION="ZFS sources for linux"
-HOMEPAGE="http://zfsonlinux.org/"
-SRC_URI="https://github.com/zfsonlinux/zfs/releases/download/zfs-${PV}/${MY_P}.tar.gz"
-
-SLOT="0"
-LICENSE="GPL-2"
-KEYWORDS="amd64"
-IUSE=""
-DEPEND="sys-kernel/dkms"
-RDEPEND="${DEPEND}"
-
-S="${WORKDIR}/${MY_P}"
-
-src_configure() {
-	:
-}
-
-src_compile() {
-	:
-}
-
-src_install() {
-	cp "${FILESDIR}/dkms.conf" "${S}" || die
-	dodir /usr/src/${P}
-	insinto /usr/src/${P}
-	doins -r ${S}/*
-	fperms 0755 /usr/src/${P}/configure
-	fperms 0755 /usr/src/${P}/scripts/dkms.mkconf
-	fperms 0755 /usr/src/${P}/scripts/dkms.postbuild
-	fperms 0755 /usr/src/${P}/scripts/enum-extract.pl
-	fperms 0755 /usr/src/${P}/scripts/make_gitrev.sh
-}
-
-pkg_postinst() {
-	dkms add ${PN}/${PV}
-}
-
-pkg_prerm() {
-	dkms remove ${PN}/${PV} --all
-}
-- 
cgit v1.2.3