diff options
-rw-r--r-- | config/kernel-revalidate-disk-size.m4 | 24 | ||||
-rw-r--r-- | config/kernel.m4 | 2 | ||||
-rw-r--r-- | module/os/linux/zfs/zvol_os.c | 4 |
3 files changed, 30 insertions, 0 deletions
diff --git a/config/kernel-revalidate-disk-size.m4 b/config/kernel-revalidate-disk-size.m4 new file mode 100644 index 000000000..de1146c10 --- /dev/null +++ b/config/kernel-revalidate-disk-size.m4 @@ -0,0 +1,24 @@ +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], [ + ZFS_LINUX_TEST_SRC([revalidate_disk_size], [ + #include <linux/genhd.h> + ], [ + struct gendisk *disk = NULL; + (void) revalidate_disk_size(disk, false); + ]) +]) + +AC_DEFUN([ZFS_AC_KERNEL_REVALIDATE_DISK_SIZE], [ + 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]) + ], [ + AC_MSG_RESULT(no) + ]) +]) diff --git a/config/kernel.m4 b/config/kernel.m4 index bbfbeb39b..3e01daa5e 100644 --- a/config/kernel.m4 +++ b/config/kernel.m4 @@ -62,6 +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_GET_DISK_RO ZFS_AC_KERNEL_SRC_GENERIC_READLINK_GLOBAL ZFS_AC_KERNEL_SRC_DISCARD_GRANULARITY @@ -158,6 +159,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_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 0cd2d415c..5ffac706c 100644 --- a/module/os/linux/zfs/zvol_os.c +++ b/module/os/linux/zfs/zvol_os.c @@ -656,7 +656,11 @@ static int zvol_update_volsize(zvol_state_t *zv, uint64_t volsize) { +#ifdef HAVE_REVALIDATE_DISK_SIZE + revalidate_disk_size(zv->zv_zso->zvo_disk, false); +#else revalidate_disk(zv->zv_zso->zvo_disk); +#endif return (0); } |