Linux 4.16 compat: get_disk_and_module()
As of https://github.com/torvalds/linux/commit/fb6d47a, get_disk() is now get_disk_and_module(). Add a configure check to determine if we need to use get_disk_and_module(). Reviewed-by: loli10K <ezomori.nozomu@gmail.com> Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Signed-off-by: Giuseppe Di Natale <dinatale2@llnl.gov> Closes #7264
This commit is contained in:
parent
80d52c3919
commit
dd3e1e3083
|
@ -0,0 +1,19 @@
|
|||
dnl #
|
||||
dnl # 4.16 API change
|
||||
dnl # Verify if get_disk_and_module() symbol is available.
|
||||
dnl #
|
||||
AC_DEFUN([ZFS_AC_KERNEL_GET_DISK_AND_MODULE],
|
||||
[AC_MSG_CHECKING([whether get_disk_and_module() is available])
|
||||
ZFS_LINUX_TRY_COMPILE_SYMBOL([
|
||||
#include <linux/genhd.h>
|
||||
], [
|
||||
struct gendisk *disk = NULL;
|
||||
(void) get_disk_and_module(disk);
|
||||
], [get_disk_and_module], [block/genhd.c], [
|
||||
AC_MSG_RESULT(yes)
|
||||
AC_DEFINE(HAVE_GET_DISK_AND_MODULE,
|
||||
1, [get_disk_and_module() is available])
|
||||
], [
|
||||
AC_MSG_RESULT(no)
|
||||
])
|
||||
])
|
|
@ -40,6 +40,7 @@ AC_DEFUN([ZFS_AC_CONFIG_KERNEL], [
|
|||
ZFS_AC_KERNEL_BLK_QUEUE_MAX_SEGMENTS
|
||||
ZFS_AC_KERNEL_BLK_QUEUE_HAVE_BIO_RW_UNPLUG
|
||||
ZFS_AC_KERNEL_BLK_QUEUE_HAVE_BLK_PLUG
|
||||
ZFS_AC_KERNEL_GET_DISK_AND_MODULE
|
||||
ZFS_AC_KERNEL_GET_DISK_RO
|
||||
ZFS_AC_KERNEL_GET_GENDISK
|
||||
ZFS_AC_KERNEL_HAVE_BIO_SET_OP_ATTRS
|
||||
|
|
|
@ -139,6 +139,14 @@ blk_queue_set_read_ahead(struct request_queue *q, unsigned long ra_pages)
|
|||
#endif
|
||||
}
|
||||
|
||||
#ifndef HAVE_GET_DISK_AND_MODULE
|
||||
static inline struct kobject *
|
||||
get_disk_and_module(struct gendisk *disk)
|
||||
{
|
||||
return (get_disk(disk));
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifndef HAVE_GET_DISK_RO
|
||||
static inline int
|
||||
get_disk_ro(struct gendisk *disk)
|
||||
|
|
|
@ -1589,7 +1589,7 @@ zvol_probe(dev_t dev, int *part, void *arg)
|
|||
struct kobject *kobj;
|
||||
|
||||
zv = zvol_find_by_dev(dev);
|
||||
kobj = zv ? get_disk(zv->zv_disk) : NULL;
|
||||
kobj = zv ? get_disk_and_module(zv->zv_disk) : NULL;
|
||||
ASSERT(zv == NULL || MUTEX_HELD(&zv->zv_state_lock));
|
||||
if (zv)
|
||||
mutex_exit(&zv->zv_state_lock);
|
||||
|
|
Loading…
Reference in New Issue