]> git.proxmox.com Git - zfsonlinux.git/blame - zfs-patches/0048-Linux-4.16-compat-get_disk_and_module.patch
bump version to 0.7.7-pve1~bpo9
[zfsonlinux.git] / zfs-patches / 0048-Linux-4.16-compat-get_disk_and_module.patch
CommitLineData
75b07eca
FG
1From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
2From: Giuseppe Di Natale <dinatale2@users.noreply.github.com>
3Date: Mon, 5 Mar 2018 12:44:35 -0800
4Subject: [PATCH] Linux 4.16 compat: get_disk_and_module()
5MIME-Version: 1.0
6Content-Type: text/plain; charset=UTF-8
7Content-Transfer-Encoding: 8bit
8
9As of https://github.com/torvalds/linux/commit/fb6d47a, get_disk()
10is now get_disk_and_module(). Add a configure check to determine
11if we need to use get_disk_and_module().
12
13Reviewed-by: loli10K <ezomori.nozomu@gmail.com>
14Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
15Signed-off-by: Giuseppe Di Natale <dinatale2@llnl.gov>
16Closes #7264
17(cherry picked from commit 8d7f17798d0faa0001bf7257759be0c688b91044)
18Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
19---
20 include/linux/blkdev_compat.h | 8 ++++++++
21 module/zfs/zvol.c | 2 +-
22 config/kernel-get-disk-and-module.m4 | 19 +++++++++++++++++++
23 config/kernel.m4 | 1 +
24 4 files changed, 29 insertions(+), 1 deletion(-)
25 create mode 100644 config/kernel-get-disk-and-module.m4
26
27diff --git a/include/linux/blkdev_compat.h b/include/linux/blkdev_compat.h
28index c8a8e856d..4406493e4 100644
29--- a/include/linux/blkdev_compat.h
30+++ b/include/linux/blkdev_compat.h
31@@ -139,6 +139,14 @@ blk_queue_set_read_ahead(struct request_queue *q, unsigned long ra_pages)
32 #endif
33 }
34
35+#ifndef HAVE_GET_DISK_AND_MODULE
36+static inline struct kobject *
37+get_disk_and_module(struct gendisk *disk)
38+{
39+ return (get_disk(disk));
40+}
41+#endif
42+
43 #ifndef HAVE_GET_DISK_RO
44 static inline int
45 get_disk_ro(struct gendisk *disk)
46diff --git a/module/zfs/zvol.c b/module/zfs/zvol.c
47index aac494209..62176e1cf 100644
48--- a/module/zfs/zvol.c
49+++ b/module/zfs/zvol.c
50@@ -1559,7 +1559,7 @@ zvol_probe(dev_t dev, int *part, void *arg)
51 struct kobject *kobj;
52
53 zv = zvol_find_by_dev(dev);
54- kobj = zv ? get_disk(zv->zv_disk) : NULL;
55+ kobj = zv ? get_disk_and_module(zv->zv_disk) : NULL;
56 ASSERT(zv == NULL || MUTEX_HELD(&zv->zv_state_lock));
57 if (zv)
58 mutex_exit(&zv->zv_state_lock);
59diff --git a/config/kernel-get-disk-and-module.m4 b/config/kernel-get-disk-and-module.m4
60new file mode 100644
61index 000000000..2a51a5af7
62--- /dev/null
63+++ b/config/kernel-get-disk-and-module.m4
64@@ -0,0 +1,19 @@
65+dnl #
66+dnl # 4.16 API change
67+dnl # Verify if get_disk_and_module() symbol is available.
68+dnl #
69+AC_DEFUN([ZFS_AC_KERNEL_GET_DISK_AND_MODULE],
70+ [AC_MSG_CHECKING([whether get_disk_and_module() is available])
71+ ZFS_LINUX_TRY_COMPILE_SYMBOL([
72+ #include <linux/genhd.h>
73+ ], [
74+ struct gendisk *disk = NULL;
75+ (void) get_disk_and_module(disk);
76+ ], [get_disk_and_module], [block/genhd.c], [
77+ AC_MSG_RESULT(yes)
78+ AC_DEFINE(HAVE_GET_DISK_AND_MODULE,
79+ 1, [get_disk_and_module() is available])
80+ ], [
81+ AC_MSG_RESULT(no)
82+ ])
83+])
84diff --git a/config/kernel.m4 b/config/kernel.m4
85index 3e499e447..419ed1a2c 100644
86--- a/config/kernel.m4
87+++ b/config/kernel.m4
88@@ -40,6 +40,7 @@ AC_DEFUN([ZFS_AC_CONFIG_KERNEL], [
89 ZFS_AC_KERNEL_BLK_QUEUE_MAX_SEGMENTS
90 ZFS_AC_KERNEL_BLK_QUEUE_HAVE_BIO_RW_UNPLUG
91 ZFS_AC_KERNEL_BLK_QUEUE_HAVE_BLK_PLUG
92+ ZFS_AC_KERNEL_GET_DISK_AND_MODULE
93 ZFS_AC_KERNEL_GET_DISK_RO
94 ZFS_AC_KERNEL_GET_GENDISK
95 ZFS_AC_KERNEL_HAVE_BIO_SET_OP_ATTRS
96--
972.14.2
98