]>
Commit | Line | Data |
---|---|---|
75b07eca FG |
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 |