diff options
Diffstat (limited to 'sys-kernel')
-rw-r--r-- | sys-kernel/zfs-dkms/Manifest | 2 | ||||
-rw-r--r-- | sys-kernel/zfs-dkms/files/1c24bf966c373009f2be77438e8696aabf50a7e7.diff | 84 | ||||
-rw-r--r-- | sys-kernel/zfs-dkms/files/dkms.conf | 2 | ||||
-rw-r--r-- | sys-kernel/zfs-dkms/files/eb17f92e1edabcde442e5fbdff4525054be8595.diff | 133 | ||||
-rw-r--r-- | sys-kernel/zfs-dkms/zfs-dkms-2.1.1.ebuild (renamed from sys-kernel/zfs-dkms/zfs-dkms-2.1.0-r1.ebuild) | 5 |
5 files changed, 2 insertions, 224 deletions
diff --git a/sys-kernel/zfs-dkms/Manifest b/sys-kernel/zfs-dkms/Manifest index 38a12b59..e11bc403 100644 --- a/sys-kernel/zfs-dkms/Manifest +++ b/sys-kernel/zfs-dkms/Manifest @@ -1 +1 @@ -DIST zfs-2.1.0.tar.gz 34810470 BLAKE2B f7cc1cde711c255bacb000207b8e9a594105d18601a503d75a2a3055ed29ca941e148492fe52809f81a250848cfb5868b3d1c42860464a3d7d744a416db08929 SHA512 2121b90a1d4d92353801c48a2e34e2dd42bd295dacc3c30aa77cde967a1326e17c983bdd6905552421df0a652c09e84b3d4d2ba01001e053b8afb12e189c046f +DIST zfs-2.1.1.tar.gz 34836374 BLAKE2B 09ee6bd30e8266342bd975454086049c3fd9142e7dacfe52166575c20e3c92688f9b457d75b2a2068fc281e65f78e1d47450545504cdf8bc31e23663545d7800 SHA512 b69ce764a9f7438ec2c90f86be02abfd684c67cd38de876374e3e6f4b2f82a75d86fa70205def2ba454ad27e52ec8d955ebc4ba456e91d397129a54ea849c19c diff --git a/sys-kernel/zfs-dkms/files/1c24bf966c373009f2be77438e8696aabf50a7e7.diff b/sys-kernel/zfs-dkms/files/1c24bf966c373009f2be77438e8696aabf50a7e7.diff deleted file mode 100644 index e53bfb1c..00000000 --- a/sys-kernel/zfs-dkms/files/1c24bf966c373009f2be77438e8696aabf50a7e7.diff +++ /dev/null @@ -1,84 +0,0 @@ -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/dkms.conf b/sys-kernel/zfs-dkms/files/dkms.conf index 83285524..5b55f58f 100644 --- a/sys-kernel/zfs-dkms/files/dkms.conf +++ b/sys-kernel/zfs-dkms/files/dkms.conf @@ -1,5 +1,5 @@ PACKAGE_NAME="zfs-dkms" -PACKAGE_VERSION="2.1.0" +PACKAGE_VERSION="2.1.1" PACKAGE_CONFIG="/etc/sysconfig/zfs" NO_WEAK_MODULES="yes" PRE_BUILD="configure diff --git a/sys-kernel/zfs-dkms/files/eb17f92e1edabcde442e5fbdff4525054be8595.diff b/sys-kernel/zfs-dkms/files/eb17f92e1edabcde442e5fbdff4525054be8595.diff deleted file mode 100644 index 1e72ebaf..00000000 --- a/sys-kernel/zfs-dkms/files/eb17f92e1edabcde442e5fbdff4525054be8595.diff +++ /dev/null @@ -1,133 +0,0 @@ -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.1.ebuild index f4dfd6c1..cec96ca3 100644 --- a/sys-kernel/zfs-dkms/zfs-dkms-2.1.0-r1.ebuild +++ b/sys-kernel/zfs-dkms/zfs-dkms-2.1.1.ebuild @@ -20,11 +20,6 @@ IUSE="" DEPEND="sys-kernel/dkms" RDEPEND="${DEPEND}" -PATCHES=( - "${FILESDIR}"/eb17f92e1edabcde442e5fbdff4525054be8595.diff - "${FILESDIR}"/1c24bf966c373009f2be77438e8696aabf50a7e7.diff -) - S="${WORKDIR}/${MY_P}" src_configure() { |