mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2026-05-22 10:37:35 +03:00
Linux 5.5 compat: blkg_tryget()
Commit https://github.com/torvalds/linux/commit/9e8d42a0f accidentally converted the static inline function blkg_tryget() to GPL-only for kernels built with CONFIG_PREEMPT_RCU=y and CONFIG_BLK_CGROUP=y. Resolve the build issue by providing our own equivalent functionality when needed which uses rcu_read_lock_sched() internally as before. Reviewed-by: Tony Hutter <hutter2@llnl.gov> Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov> Closes #9745 Closes #10072
This commit is contained in:
committed by
Tony Hutter
parent
ebc8e360d5
commit
49f065d5a4
@@ -0,0 +1,37 @@
|
||||
dnl #
|
||||
dnl # Linux 5.5 API,
|
||||
dnl #
|
||||
dnl # The Linux 5.5 kernel updated percpu_ref_tryget() which is inlined by
|
||||
dnl # blkg_tryget() to use rcu_read_lock() instead of rcu_read_lock_sched().
|
||||
dnl # As a side effect the function was converted to GPL-only.
|
||||
dnl #
|
||||
AC_DEFUN([ZFS_AC_KERNEL_SRC_BLKG_TRYGET], [
|
||||
ZFS_LINUX_TEST_SRC([blkg_tryget], [
|
||||
#include <linux/blk-cgroup.h>
|
||||
#include <linux/bio.h>
|
||||
#include <linux/fs.h>
|
||||
],[
|
||||
struct blkcg_gq blkg __attribute__ ((unused));
|
||||
bool rc __attribute__ ((unused));
|
||||
rc = blkg_tryget(&blkg);
|
||||
], [], [$ZFS_META_LICENSE])
|
||||
])
|
||||
|
||||
AC_DEFUN([ZFS_AC_KERNEL_BLKG_TRYGET], [
|
||||
AC_MSG_CHECKING([whether blkg_tryget() is available])
|
||||
ZFS_LINUX_TEST_RESULT([blkg_tryget], [
|
||||
AC_MSG_RESULT(yes)
|
||||
AC_DEFINE(HAVE_BLKG_TRYGET, 1, [blkg_tryget() is available])
|
||||
|
||||
AC_MSG_CHECKING([whether blkg_tryget() is GPL-only])
|
||||
ZFS_LINUX_TEST_RESULT([blkg_tryget_license], [
|
||||
AC_MSG_RESULT(no)
|
||||
],[
|
||||
AC_MSG_RESULT(yes)
|
||||
AC_DEFINE(HAVE_BLKG_TRYGET_GPL_ONLY, 1,
|
||||
[blkg_tryget() GPL-only])
|
||||
])
|
||||
],[
|
||||
AC_MSG_RESULT(no)
|
||||
])
|
||||
])
|
||||
@@ -78,6 +78,7 @@ AC_DEFUN([ZFS_AC_KERNEL_TEST_SRC], [
|
||||
ZFS_AC_KERNEL_SRC_BLK_QUEUE_MAX_HW_SECTORS
|
||||
ZFS_AC_KERNEL_SRC_BLK_QUEUE_MAX_SEGMENTS
|
||||
ZFS_AC_KERNEL_SRC_BLK_QUEUE_PLUG
|
||||
ZFS_AC_KERNEL_SRC_BLKG_TRYGET
|
||||
ZFS_AC_KERNEL_SRC_GET_DISK_AND_MODULE
|
||||
ZFS_AC_KERNEL_SRC_GET_DISK_RO
|
||||
ZFS_AC_KERNEL_SRC_GENERIC_READLINK_GLOBAL
|
||||
@@ -186,6 +187,7 @@ AC_DEFUN([ZFS_AC_KERNEL_TEST_RESULT], [
|
||||
ZFS_AC_KERNEL_BIO_BI_STATUS
|
||||
ZFS_AC_KERNEL_BIO_RW_BARRIER
|
||||
ZFS_AC_KERNEL_BIO_RW_DISCARD
|
||||
ZFS_AC_KERNEL_BLKG_TRYGET
|
||||
ZFS_AC_KERNEL_BLK_QUEUE_BDI
|
||||
ZFS_AC_KERNEL_BLK_QUEUE_DISCARD
|
||||
ZFS_AC_KERNEL_BLK_QUEUE_SECURE_ERASE
|
||||
|
||||
Reference in New Issue
Block a user