-
Notifications
You must be signed in to change notification settings - Fork 1.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
GPL-incompatible module zfs.ko uses GPL-only symbol 'migrate_enable' #11097
Comments
"This is most likely due to PREEMPTION=y as I found numerous bug reports regarding other GPL-only symbols." It isn't a bug if it isn't supposed to work imho. |
Are you sure? I've found numerous bugs regarding That being said my issue is most likely due to Looking at the Trying to compile the latest git version which lists
I do not expect this bug report to be high priority, but I do believe it to be valuable to raise attention that there are linux-rt users out there that would prefer not having to switch their systems to an inferior file system. |
@szanni Shoot, i think I misunderstood you. 0.8.5 does indeed have a wrong META file (with 5.6 listed instead of 5.9) |
It seems that the changes causing this are being back-ported. I have the same configure issue with linux-5.6.19-rt-p12 and rt-p11 on Gentoo. |
linux-rt has a different definition of
However zfs does not depend on the type or presence of rw_semaphore.wait_lock since about 4f8e643, so its configure check can be removed. |
Last use of wait_lock was removed in "Linux 5.3 compat: retire rw_tryupgrade()" (e7a99da). Fixes the issue reported in openzfs#11097 (comment)
Last use of wait_lock was removed in "Linux 5.3 compat: retire rw_tryupgrade()" (e7a99da). Fixes the issue reported in openzfs#11097 (comment) Signed-off-by: Orivej Desh <[email protected]>
Fix for |
Last use of wait_lock was removed in "Linux 5.3 compat: retire rw_tryupgrade()" (e7a99da). Fixes the issue reported in openzfs#11097 (comment) Signed-off-by: Orivej Desh <[email protected]>
The only GPL-only symbols that come from linux-rt are |
I am asking linux-rt maintainers to export these functions: https://lore.kernel.org/linux-rt-users/[email protected]/T/ |
Last use of wait_lock was removed in "Linux 5.3 compat: retire rw_tryupgrade()" (e7a99da). Fixes the issue reported in #11097 (comment) Reviewed-by: Brian Behlendorf <[email protected]> Signed-off-by: Orivej Desh <[email protected]> Closes #11309
Last use of wait_lock was removed in "Linux 5.3 compat: retire rw_tryupgrade()" (e7a99da). Fixes the issue reported in #11097 (comment) Reviewed-by: Brian Behlendorf <[email protected]> Signed-off-by: Orivej Desh <[email protected]> Closes #11309
Last use of wait_lock was removed in "Linux 5.3 compat: retire rw_tryupgrade()" (e7a99da). Fixes the issue reported in openzfs#11097 (comment) Reviewed-by: Brian Behlendorf <[email protected]> Signed-off-by: Orivej Desh <[email protected]> Closes openzfs#11309
Last use of wait_lock was removed in "Linux 5.3 compat: retire rw_tryupgrade()" (e7a99da). Fixes the issue reported in openzfs#11097 (comment) Reviewed-by: Brian Behlendorf <[email protected]> Signed-off-by: Orivej Desh <[email protected]> Closes openzfs#11309
With the PREEMPT_RT patches now (
The licensing issue keeps persisting with kernel I decided to plead to the lkml again: https://lore.kernel.org/lkml/[email protected]/T/ |
This version does still not compile due to license issues [0] yet technically works. [0] openzfs/zfs#11097
This bus is still happens on zfs 2.1.6 with debian 5.18.0-0.deb11.4-rt-amd64 |
openzfsonwindows#206 found that it is possible to trip `VERIFY(list_is_empty(&lwb->lwb_itxs))` when a zil_commit() is delayed by the scheduler long enough for a parallel zil_suspend() operation to exit `zil_commit_impl()`. This is a data race. To prevent this, we introduce a `zilog->zl_commit_lock` rwlock to ensure that all outstanding `zil_commit()` operations finish before `zil_suspend()` begins and that subsequent operations fallback to txg_wait_synced() after `zil_suspend()` has begun. On PREEMPT_RT Linux kernels, the rw_enter() implementation suffers from writer starvation. This means that a ZIL intensive system can delay zil_suspend indefinitely. This is a pre-existing problem that affects everything that uses rw locks, so it needs to be addressed in the SPL. However, builds against PREEMPT_RT Linux kernels are currently broken due to a GPL symbol issue (openzfs#11097), so we can safely disregard that issue for now. Signed-off-by: Richard Yao <[email protected]>
openzfsonwindows#206 found that it is possible to trip `VERIFY(list_is_empty(&lwb->lwb_itxs))` when a zil_commit() is delayed by the scheduler long enough for a parallel zil_suspend() operation to exit `zil_commit_impl()`. This is a data race. To prevent this, we introduce a `zilog->zl_commit_lock` rwlock to ensure that all outstanding `zil_commit()` operations finish before `zil_suspend()` begins and that subsequent operations fallback to txg_wait_synced() after `zil_suspend()` has begun. On `PREEMPT_RT` Linux kernels, the `rw_enter()` implementation suffers from writer starvation. This means that a ZIL intensive system can delay `zil_suspend()` indefinitely. This is a pre-existing problem that affects everything that uses rw locks, so it needs to be addressed in the SPL. However, builds against `PREEMPT_RT` Linux kernels are currently broken due to a GPL symbol issue (openzfs#11097), so we can safely disregard that issue for now. Signed-off-by: Richard Yao <[email protected]>
openzfsonwindows#206 found that it is possible to trip `VERIFY(list_is_empty(&lwb->lwb_itxs))` when a zil_commit() is delayed by the scheduler long enough for a parallel zil_suspend() operation to exit `zil_commit_impl()`. This is a data race. To prevent this, we introduce a `zilog->zl_commit_lock` rwlock to ensure that all outstanding `zil_commit()` operations finish before `zil_suspend()` begins and that subsequent operations fallback to txg_wait_synced() after `zil_suspend()` has begun. On `PREEMPT_RT` Linux kernels, the `rw_enter()` implementation suffers from writer starvation. This means that a ZIL intensive system can delay `zil_suspend()` indefinitely. This is a pre-existing problem that affects everything that uses rw locks, so it needs to be addressed in the SPL. However, builds against `PREEMPT_RT` Linux kernels are currently broken due to a GPL symbol issue (openzfs#11097), so we can safely disregard that issue for now. Signed-off-by: Richard Yao <[email protected]>
openzfsonwindows#206 found that it is possible to trip `VERIFY(list_is_empty(&lwb->lwb_itxs))` when a `zil_commit()` is delayed by the scheduler long enough for a parallel `zil_suspend()` operation to exit `zil_commit_impl()`. This is a data race. To prevent this, we introduce a `zilog->zl_commit_lock` rwlock to ensure that all outstanding `zil_commit()` operations finish before `zil_suspend()` begins and that subsequent operations fallback to `txg_wait_synced()` after `zil_suspend()` has begun. On `PREEMPT_RT` Linux kernels, the `rw_enter()` implementation suffers from writer starvation. This means that a ZIL intensive system can delay `zil_suspend()` indefinitely. This is a pre-existing problem that affects everything that uses rw locks, so it needs to be addressed in the SPL. However, builds against `PREEMPT_RT` Linux kernels are currently broken due to a GPL symbol issue (openzfs#11097), so we can safely disregard that issue for now. Signed-off-by: Richard Yao <[email protected]>
openzfsonwindows#206 found that it is possible to trip `VERIFY(list_is_empty(&lwb->lwb_itxs))` when a `zil_commit()` is delayed by the scheduler long enough for a parallel `zil_suspend()` operation to exit `zil_commit_impl()`. This is a data race. To prevent this, we introduce a `zilog->zl_commit_lock` rwlock to ensure that all outstanding `zil_commit()` operations finish before `zil_suspend()` begins and that subsequent operations fallback to `txg_wait_synced()` after `zil_suspend()` has begun. On `PREEMPT_RT` Linux kernels, the `rw_enter()` implementation suffers from writer starvation. This means that a ZIL intensive system can delay `zil_suspend()` indefinitely. This is a pre-existing problem that affects everything that uses rw locks, so it needs to be addressed in the SPL. However, builds against `PREEMPT_RT` Linux kernels are currently broken due to a GPL symbol issue (openzfs#11097), so we can safely disregard that issue for now. Reported-by: Arun KV <[email protected]> Signed-off-by: Richard Yao <[email protected]>
openzfsonwindows#206 found that it is possible to trip `VERIFY(list_is_empty(&lwb->lwb_itxs))` when a `zil_commit()` is delayed by the scheduler long enough for a parallel `zil_suspend()` operation to exit `zil_commit_impl()`. This is a data race. To prevent this, we introduce a `zilog->zl_commit_lock` rwlock to ensure that all outstanding `zil_commit()` operations finish before `zil_suspend()` begins and that subsequent operations fallback to `txg_wait_synced()` after `zil_suspend()` has begun. On `PREEMPT_RT` Linux kernels, the `rw_enter()` implementation suffers from writer starvation. This means that a ZIL intensive system can delay `zil_suspend()` indefinitely. This is a pre-existing problem that affects everything that uses rw locks, so it needs to be addressed in the SPL. However, builds against `PREEMPT_RT` Linux kernels are currently broken due to a GPL symbol issue (openzfs#11097), so we can safely disregard that issue for now. Reported-by: Arun KV <[email protected]> Signed-off-by: Richard Yao <[email protected]>
openzfsonwindows#206 found that it is possible to trip `VERIFY(list_is_empty(&lwb->lwb_itxs))` when a `zil_commit()` is delayed by the scheduler long enough for a parallel `zil_suspend()` operation to exit `zil_commit_impl()`. This is a data race. To prevent this, we introduce a `zilog->zl_suspend_lock` rwlock to ensure that all outstanding `zil_commit()` operations finish before `zil_suspend()` begins and that subsequent operations fallback to `txg_wait_synced()` after `zil_suspend()` has begun. On `PREEMPT_RT` Linux kernels, the `rw_enter()` implementation suffers from writer starvation. This means that a ZIL intensive system can delay `zil_suspend()` indefinitely. This is a pre-existing problem that affects everything that uses rw locks, so it needs to be addressed in the SPL. However, builds against `PREEMPT_RT` Linux kernels are currently broken due to a GPL symbol issue (openzfs#11097), so we can safely disregard that issue for now. Reported-by: Arun KV <[email protected]> Signed-off-by: Richard Yao <[email protected]>
openzfsonwindows#206 found that it is possible to trip `VERIFY(list_is_empty(&lwb->lwb_itxs))` when a `zil_commit()` is delayed by the scheduler long enough for a parallel `zil_suspend()` operation to exit `zil_commit_impl()`. This is a data race. To prevent this, we introduce a `zilog->zl_suspend_lock` rwlock to ensure that all outstanding `zil_commit()` operations finish before `zil_suspend()` begins and that subsequent operations fallback to `txg_wait_synced()` after `zil_suspend()` has begun. On `PREEMPT_RT` Linux kernels, the `rw_enter()` implementation suffers from writer starvation. This means that a ZIL intensive system can delay `zil_suspend()` indefinitely. This is a pre-existing problem that affects everything that uses rw locks, so it needs to be addressed in the SPL. However, builds against `PREEMPT_RT` Linux kernels are currently broken due to a GPL symbol issue (#11097), so we can safely disregard that issue for now. Reported-by: Arun KV <[email protected]> Reviewed-by: Alexander Motin <[email protected]> Reviewed-by: Brian Behlendorf <[email protected]> Signed-off-by: Richard Yao <[email protected]> Closes #14514
#206 found that it is possible to trip `VERIFY(list_is_empty(&lwb->lwb_itxs))` when a `zil_commit()` is delayed by the scheduler long enough for a parallel `zil_suspend()` operation to exit `zil_commit_impl()`. This is a data race. To prevent this, we introduce a `zilog->zl_suspend_lock` rwlock to ensure that all outstanding `zil_commit()` operations finish before `zil_suspend()` begins and that subsequent operations fallback to `txg_wait_synced()` after `zil_suspend()` has begun. On `PREEMPT_RT` Linux kernels, the `rw_enter()` implementation suffers from writer starvation. This means that a ZIL intensive system can delay `zil_suspend()` indefinitely. This is a pre-existing problem that affects everything that uses rw locks, so it needs to be addressed in the SPL. However, builds against `PREEMPT_RT` Linux kernels are currently broken due to a GPL symbol issue (openzfs#11097), so we can safely disregard that issue for now. Reported-by: Arun KV <[email protected]> Reviewed-by: Alexander Motin <[email protected]> Reviewed-by: Brian Behlendorf <[email protected]> Signed-off-by: Richard Yao <[email protected]> Closes openzfs#14514
openzfsonwindows#206 found that it is possible to trip `VERIFY(list_is_empty(&lwb->lwb_itxs))` when a `zil_commit()` is delayed by the scheduler long enough for a parallel `zil_suspend()` operation to exit `zil_commit_impl()`. This is a data race. To prevent this, we introduce a `zilog->zl_suspend_lock` rwlock to ensure that all outstanding `zil_commit()` operations finish before `zil_suspend()` begins and that subsequent operations fallback to `txg_wait_synced()` after `zil_suspend()` has begun. On `PREEMPT_RT` Linux kernels, the `rw_enter()` implementation suffers from writer starvation. This means that a ZIL intensive system can delay `zil_suspend()` indefinitely. This is a pre-existing problem that affects everything that uses rw locks, so it needs to be addressed in the SPL. However, builds against `PREEMPT_RT` Linux kernels are currently broken due to a GPL symbol issue (openzfs#11097), so we can safely disregard that issue for now. Reported-by: Arun KV <[email protected]> Reviewed-by: Alexander Motin <[email protected]> Reviewed-by: Brian Behlendorf <[email protected]> Signed-off-by: Richard Yao <[email protected]> Closes openzfs#14514
openzfsonwindows#206 found that it is possible to trip `VERIFY(list_is_empty(&lwb->lwb_itxs))` when a `zil_commit()` is delayed by the scheduler long enough for a parallel `zil_suspend()` operation to exit `zil_commit_impl()`. This is a data race. To prevent this, we introduce a `zilog->zl_suspend_lock` rwlock to ensure that all outstanding `zil_commit()` operations finish before `zil_suspend()` begins and that subsequent operations fallback to `txg_wait_synced()` after `zil_suspend()` has begun. On `PREEMPT_RT` Linux kernels, the `rw_enter()` implementation suffers from writer starvation. This means that a ZIL intensive system can delay `zil_suspend()` indefinitely. This is a pre-existing problem that affects everything that uses rw locks, so it needs to be addressed in the SPL. However, builds against `PREEMPT_RT` Linux kernels are currently broken due to a GPL symbol issue (openzfs#11097), so we can safely disregard that issue for now. Reported-by: Arun KV <[email protected]> Reviewed-by: Alexander Motin <[email protected]> Reviewed-by: Brian Behlendorf <[email protected]> Signed-off-by: Richard Yao <[email protected]> Closes openzfs#14514
Is there a workaround for this aside from locally changing the license? This is still a problem with the 6.3-rt kernel series and openzfs/master... |
I have sadly not come across any upstream fix so far. My hopes were that Ubuntu Studio would eventually run into the same problem and hopefully fix things - as they pay developers that work on the kernel - but so far no luck. |
For what it is worth, I had system instability (lockups) changing the license locally and running main on the 6.3-rt kernel, but I'm not sure that was necessarily due to OpenZFS, as I didn't try 6.3-rt without OpenZFS... |
I have not tried it, but If the RT kernel does not honor the preemption counter anymore, then this workaround would cause problems. :/ |
I have encountered something similar myself with certain rt kernel versions. Seemingly all input failing right after boot (not sure if this is the lockup you were talking about). The next point release usually fixed things, so I never bothered investigating. My hunch was it being related to input drivers and/or xorg and the rt kernel rather than any file system module though, but who knows. |
I also run into this issue. |
I've just got this error on Debian 12 with logs:
This solution does not work for me:
|
Yes, this is working workaround:
|
Now that Kernel 6.12-rc1, which includes build options for PREEMPT_RT without any additional patching, maybe someone might be able to help brainstorm how to deal with the GPL symbol issues with OpenZFS and PREEMPT_RT enabled? (As of last night, the exact same GPL errors pop up during an attempted dkms install with a PREEMPT_RT enabled 6.12-rc1 kernel when I try to build OpenZFS kernel modules.) |
It would indeed be great to have a more permanent solution. Pleading to the LKML has so far been fruitless. Would this be different as |
System information
Describe the problem you're observing
Trying to compile zfs
0.8.5
against the ArchLinux real time kernel linux-rt version5.9.1.18.arch1-2
fails with:This is most likely due to
PREEMPTION=y
as I found numerous bug reports regarding other GPL-only symbols. This regards a different symbol though, hence a separate bug report.Describe how to reproduce the problem
Install
linux-rt
,linux-rt-headers
, andzfs-utils
from the AUR. Then save the following contents into a file namedPKGBUILD
and runmakepkg
.The text was updated successfully, but these errors were encountered: