mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2024-11-18 02:20:59 +03:00
49f065d5a4
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
38 lines
1.0 KiB
Plaintext
38 lines
1.0 KiB
Plaintext
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)
|
|
])
|
|
])
|