-
Notifications
You must be signed in to change notification settings - Fork 36
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
Kernel panic - not syncing: Hard LOCKUP - v3.4 #164
Comments
Though the issue happened in v3.4, I think it affects all versions. |
Hi, Thank you for the report and investigation! I will try to look at the problem next week. Thanks, |
This patch modifies scst_sync_ext_block_dev() to support INTERRUPTIBLE waiting and handle signal-induced waiting cancellation. To achieve this, the waitqueue head is moved from the stack and allocated with the blocker. Additionally, reference counting and its management are added to the blocker to handle memory freeing from multiple contexts. Fixes: #164
Hi, I've created a PR (#172). Thanks, |
This patch modifies scst_sync_ext_block_dev() to support INTERRUPTIBLE waiting and handle signal-induced waiting cancellation. To achieve this, the waitqueue head is moved from the stack and allocated with the blocker. Additionally, reference counting and its management are added to the blocker to handle memory freeing from multiple contexts. Fixes: #164
This patch modifies scst_sync_ext_block_dev() to support INTERRUPTIBLE waiting and handle signal-induced waiting cancellation. To achieve this, the waitqueue head is moved from the stack and allocated with the blocker. Additionally, reference counting and its management are added to the blocker to handle memory freeing from multiple contexts. Fixes: #164
Hi, The PR (#172) has been merged into the master branch. Thanks, |
Thanks for your work. |
Hi, we recently experienced 2 cases of crash caused by hard lockup in SCST. Here is the crash log:
Here is what I found from the crash dump:
whereas a correct context should be like this:
It seems that the waiting task had been woke up by some signals and returned from the waiting loop in wait_event_locked() and exited from kernel space before the wake_up call is called in scst_sync_ext_blocking_done().
Below is a possible scenario:
After analysing the code, it appears to me that an uninterruptible wait is more appropriate to be used in scst_ext_block_dev(). My question is if there is any particular reason that interruptible wait is used here?
The text was updated successfully, but these errors were encountered: