]> git.proxmox.com Git - zfsonlinux.git/blob - 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
1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
2 From: Giuseppe Di Natale <dinatale2@users.noreply.github.com>
3 Date: Mon, 5 Mar 2018 12:44:35 -0800
4 Subject: [PATCH] Linux 4.16 compat: get_disk_and_module()
5 MIME-Version: 1.0
6 Content-Type: text/plain; charset=UTF-8
7 Content-Transfer-Encoding: 8bit
8
9 As of https://github.com/torvalds/linux/commit/fb6d47a, get_disk()
10 is now get_disk_and_module(). Add a configure check to determine
11 if we need to use get_disk_and_module().
12
13 Reviewed-by: loli10K <ezomori.nozomu@gmail.com>
14 Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
15 Signed-off-by: Giuseppe Di Natale <dinatale2@llnl.gov>
16 Closes #7264
17 (cherry picked from commit 8d7f17798d0faa0001bf7257759be0c688b91044)
18 Signed-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
27 diff --git a/include/linux/blkdev_compat.h b/include/linux/blkdev_compat.h
28 index 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)
46 diff --git a/module/zfs/zvol.c b/module/zfs/zvol.c
47 index 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);
59 diff --git a/config/kernel-get-disk-and-module.m4 b/config/kernel-get-disk-and-module.m4
60 new file mode 100644
61 index 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 +])
84 diff --git a/config/kernel.m4 b/config/kernel.m4
85 index 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 --
97 2.14.2
98