diff --git a/config/kernel-revalidate-disk-size.m4 b/config/kernel-revalidate-disk-size.m4 index de1146c10b..a7d0cb3cda 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 ], [ struct gendisk *disk = NULL; (void) revalidate_disk_size(disk, false); ]) + + ZFS_LINUX_TEST_SRC([revalidate_disk], [ + #include + ], [ + 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 c8340bde57..200ce05b70 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 9a9a721ceb..6f5ef12e74 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); }