]> git.proxmox.com Git - mirror_zfs.git/commitdiff
Linux 5.16 compat: Added add_disk check for return
authorRich Ercolani <rincebrain@gmail.com>
Fri, 14 Jan 2022 10:08:33 +0000 (05:08 -0500)
committerBrian Behlendorf <behlendorf1@llnl.gov>
Mon, 24 Jan 2022 20:59:01 +0000 (12:59 -0800)
add_disk went from void to must-check int return.

Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Reviewed-by: Coleman Kane <ckane@colemankane.org>
Signed-off-by: Rich Ercolani <rincebrain@gmail.com>
Closes #12975

config/kernel-add-disk.m4 [new file with mode: 0644]
config/kernel.m4
module/os/linux/zfs/zvol_os.c

diff --git a/config/kernel-add-disk.m4 b/config/kernel-add-disk.m4
new file mode 100644 (file)
index 0000000..3bc40f1
--- /dev/null
@@ -0,0 +1,27 @@
+dnl #
+dnl # 5.16 API change
+dnl # add_disk grew a must-check return code
+dnl #
+AC_DEFUN([ZFS_AC_KERNEL_SRC_ADD_DISK], [
+
+       ZFS_LINUX_TEST_SRC([add_disk_ret], [
+               #include <linux/genhd.h>
+       ], [
+               struct gendisk *disk = NULL;
+               int err = add_disk(disk);
+               err = err;
+       ])
+
+])
+
+AC_DEFUN([ZFS_AC_KERNEL_ADD_DISK], [
+       AC_MSG_CHECKING([whether add_disk() returns int])
+       ZFS_LINUX_TEST_RESULT([add_disk_ret],
+       [
+               AC_MSG_RESULT(yes)
+               AC_DEFINE(HAVE_ADD_DISK_RET, 1,
+                   [add_disk() returns int])
+       ], [
+               AC_MSG_RESULT(no)
+       ])
+])
index bdd3caed2b3dfda75ae18f62695f0fb5a7d37007..b3ed966b726429650aedd87e3b0bc3ad7e812be6 100644 (file)
@@ -135,6 +135,7 @@ AC_DEFUN([ZFS_AC_KERNEL_TEST_SRC], [
        ZFS_AC_KERNEL_SRC_VFS_SET_PAGE_DIRTY_NOBUFFERS
        ZFS_AC_KERNEL_SRC_STANDALONE_LINUX_STDARG
        ZFS_AC_KERNEL_SRC_PAGEMAP_FOLIO_WAIT_BIT
+       ZFS_AC_KERNEL_SRC_ADD_DISK
 
        AC_MSG_CHECKING([for available kernel interfaces])
        ZFS_LINUX_TEST_COMPILE_ALL([kabi])
@@ -243,6 +244,7 @@ AC_DEFUN([ZFS_AC_KERNEL_TEST_RESULT], [
        ZFS_AC_KERNEL_VFS_SET_PAGE_DIRTY_NOBUFFERS
        ZFS_AC_KERNEL_STANDALONE_LINUX_STDARG
        ZFS_AC_KERNEL_PAGEMAP_FOLIO_WAIT_BIT
+       ZFS_AC_KERNEL_ADD_DISK
 ])
 
 dnl #
index cef52e22483a37c6db044306187d7d39a0e09020..e26d4db49778aa0ef3d55c210919799d9797448e 100644 (file)
@@ -1110,7 +1110,11 @@ out_doi:
                rw_enter(&zvol_state_lock, RW_WRITER);
                zvol_insert(zv);
                rw_exit(&zvol_state_lock);
+#ifdef HAVE_ADD_DISK_RET
+               error = add_disk(zv->zv_zso->zvo_disk);
+#else
                add_disk(zv->zv_zso->zvo_disk);
+#endif
        } else {
                ida_simple_remove(&zvol_ida, idx);
        }