Details
-
Bug
-
Resolution: Fixed
-
Minor
-
Lustre 2.12.0
-
ARM client running TOSS kernel 4.14.0-115.6.1.1chaos.ch6a.aarch64
-
3
-
9223372036854775807
Description
kernel: do not call blocking ops when !TASK_RUNNING; state=1 set at <ffff000002a473d0>] ptlrpcd+0x410/0x5c0 [ptlrpc] kernel: ------------[ cut here ]------------ kernel: WARNING: CPU: 35 PID: 14128 at kernel/sched/core.c:5988 __might_sleep+0x84/0x8c
Attachments
Issue Links
- is blocking
-
LU-10756 Send Uevents for interesting Lustre changes
-
- Open
-
- is related to
-
LU-12431 Close race on cp_state changes
-
- Resolved
-
-
LU-12511 Prepare lustre for adoption into the linux kernel
-
- Open
-
- is related to
-
LU-10756 Send Uevents for interesting Lustre changes
-
- Open
-
-
LU-10467 use standard linux wait_event macros
-
- Resolved
-
-
LU-10300 Can the Lustre 2.10.x clients support 64K kernel page?
-
- Resolved
-
(1 is related to )
It turns out that this is really easy to fix. Since Linux 3.19 we have had a "wait_woken" function.
This effective implements that "change every place that calls wake_up in ->set_wait to also set a flag." option that I have above.
The "wake_up" is made to call woken_wake_function which sets WQ_FLAG_WOKEN, and wait_woken() waits for that flag to be set, then clears it.
The only difficult part of adding that functionality for older kernels (do we still support kernels before 3.19??). Apart from that, the patch is "1 file changed, 19 insertions
, 8 deletions
"