forked from openzfs/zfs
-
Notifications
You must be signed in to change notification settings - Fork 3
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Commit torvalds/linux@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 <[email protected]> Signed-off-by: Brian Behlendorf <[email protected]> Closes openzfs#9745 Closes openzfs#10072
- Loading branch information
1 parent
87c5d5d
commit 7fd85dd
Showing
3 changed files
with
70 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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) | ||
]) | ||
]) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters