-
Notifications
You must be signed in to change notification settings - Fork 37
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
scst_usr_cleanup thread causes soft lockup and scst_usr_released threads in D state #279
Comments
We saw RCU stall message together with scst_usr_cleanup kernel thread in soft lockup, and from the dumped kernel stack, the problem function is sgv_pool_flush() always.
|
While the the scst_usr_released threads D state happens in scst_wait_for_tgt_devs(), and it repeated in the msleep(). I noticed this commit of scst, f59fe00, it mentioned that it's to fix the RCU stall. However, the only change is using msleep() instead of mdelay(). The msleep() calls kernel shedule() and put the process in uninterruptible state (D state), while mdelay() is busy loop. Even it was mdealy(100), it was only 100 ms, the RCU stall error message usually is dumped after 20 seconds or more, so it means that while (scst_tgt_devs_cmds(tgt_dev_list) > 0) returns true always. After changing to msleep(), the process goes to D state instead of RCU stall, that's exactly what we saw in our environment.
|
We noticed that the scst_usr_cleanup kernel thread causes the CPU in the soft lockup state, and the scst_usr_released threads are in the D state in our storage nodes. This situation often occurs when a scst user space program exits unexpectedly, i.e. the all opened fds on /dev/scst_user are released at the same time when the user space program exits.
The issues are seen on both scst v3.6 and v3.8, and the OS is Ubuntu 22.04/Kernel 5.15.0-26.
The error logs:
The text was updated successfully, but these errors were encountered: