aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--config/kernel-revalidate-disk-size.m428
-rw-r--r--config/kernel.m44
-rw-r--r--module/os/linux/zfs/zvol_os.c6
3 files changed, 31 insertions, 7 deletions
diff --git a/config/kernel-revalidate-disk-size.m4 b/config/kernel-revalidate-disk-size.m4
index de1146c10..a7d0cb3cd 100644
--- a/config/kernel-revalidate-disk-size.m4
+++ b/config/kernel-revalidate-disk-size.m4
@@ -1,24 +1,46 @@
dnl #
+dnl # 5.11 API change
+dnl # revalidate_disk_size() has been removed entirely.
+dnl #
dnl # 5.10 API change
dnl # revalidate_disk() was replaced by revalidate_disk_size()
dnl #
-AC_DEFUN([ZFS_AC_KERNEL_SRC_REVALIDATE_DISK_SIZE], [
+AC_DEFUN([ZFS_AC_KERNEL_SRC_REVALIDATE_DISK], [
+
ZFS_LINUX_TEST_SRC([revalidate_disk_size], [
#include <linux/genhd.h>
], [
struct gendisk *disk = NULL;
(void) revalidate_disk_size(disk, false);
])
+
+ ZFS_LINUX_TEST_SRC([revalidate_disk], [
+ #include <linux/genhd.h>
+ ], [
+ struct gendisk *disk = NULL;
+ (void) revalidate_disk(disk);
+ ])
])
-AC_DEFUN([ZFS_AC_KERNEL_REVALIDATE_DISK_SIZE], [
+AC_DEFUN([ZFS_AC_KERNEL_REVALIDATE_DISK], [
+
AC_MSG_CHECKING([whether revalidate_disk_size() is available])
ZFS_LINUX_TEST_RESULT_SYMBOL([revalidate_disk_size],
[revalidate_disk_size], [block/genhd.c], [
AC_MSG_RESULT(yes)
AC_DEFINE(HAVE_REVALIDATE_DISK_SIZE, 1,
- [revalidate_disk_size() is available])
+ [revalidate_disk_size() is available])
], [
AC_MSG_RESULT(no)
+
+ AC_MSG_CHECKING([whether revalidate_disk() is available])
+ ZFS_LINUX_TEST_RESULT_SYMBOL([revalidate_disk],
+ [revalidate_disk], [block/genhd.c], [
+ AC_MSG_RESULT(yes)
+ AC_DEFINE(HAVE_REVALIDATE_DISK, 1,
+ [revalidate_disk() is available])
+ ], [
+ AC_MSG_RESULT(no)
+ ])
])
])
diff --git a/config/kernel.m4 b/config/kernel.m4
index c8340bde5..200ce05b7 100644
--- a/config/kernel.m4
+++ b/config/kernel.m4
@@ -62,7 +62,7 @@ AC_DEFUN([ZFS_AC_KERNEL_TEST_SRC], [
ZFS_AC_KERNEL_SRC_BLKDEV
ZFS_AC_KERNEL_SRC_BLK_QUEUE
ZFS_AC_KERNEL_SRC_GET_DISK_AND_MODULE
- ZFS_AC_KERNEL_SRC_REVALIDATE_DISK_SIZE
+ ZFS_AC_KERNEL_SRC_REVALIDATE_DISK
ZFS_AC_KERNEL_SRC_GET_DISK_RO
ZFS_AC_KERNEL_SRC_GENERIC_READLINK_GLOBAL
ZFS_AC_KERNEL_SRC_DISCARD_GRANULARITY
@@ -161,7 +161,7 @@ AC_DEFUN([ZFS_AC_KERNEL_TEST_RESULT], [
ZFS_AC_KERNEL_BLKDEV
ZFS_AC_KERNEL_BLK_QUEUE
ZFS_AC_KERNEL_GET_DISK_AND_MODULE
- ZFS_AC_KERNEL_REVALIDATE_DISK_SIZE
+ ZFS_AC_KERNEL_REVALIDATE_DISK
ZFS_AC_KERNEL_GET_DISK_RO
ZFS_AC_KERNEL_GENERIC_READLINK_GLOBAL
ZFS_AC_KERNEL_DISCARD_GRANULARITY
diff --git a/module/os/linux/zfs/zvol_os.c b/module/os/linux/zfs/zvol_os.c
index 9a9a721ce..6f5ef12e7 100644
--- a/module/os/linux/zfs/zvol_os.c
+++ b/module/os/linux/zfs/zvol_os.c
@@ -658,10 +658,12 @@ zvol_update_volsize(zvol_state_t *zv, uint64_t volsize)
{
struct gendisk *disk = zv->zv_zso->zvo_disk;
-#ifdef HAVE_REVALIDATE_DISK_SIZE
+#if defined(HAVE_REVALIDATE_DISK_SIZE)
revalidate_disk_size(disk, zvol_revalidate_disk(disk) == 0);
-#else
+#elif defined(HAVE_REVALIDATE_DISK)
revalidate_disk(disk);
+#else
+ zvol_revalidate_disk(disk);
#endif
return (0);
}