Messages in this thread | | | Date | Fri, 10 Feb 2012 13:12:55 -0800 | From | Tejun Heo <> | Subject | Re: Bug in disk event polling |
| |
Hello, Alan.
On Fri, Feb 10, 2012 at 04:03:51PM -0500, Alan Stern wrote: > None of those resets above should have occurred. They are the result > of trying to recover from the failure of a TEST UNIT READY command.
Thanks for the log. Yeah, I was just thinking about libata and wondering why it would break that badly.
> > > I have verified that changing all occurrences of system_nrt_wq in > > > block/genhd.c to system_freezable_wq fixes the bug. However this may > > > not be the way you want to solve it; you may prefer to have a freezable > > > non-reentrant work queue. > > > > Please feel free to send out a patch to fix the issue. :) > > Is there a real reason for using system_nrt_wq? Are you okay with just > switching over to system_freezable_wq?
I think it should be nrt. It assumes that no one else is running it concurrently; otherwise, multiple CPUs could jump into disk->fops->check_events() concurrently which can be pretty ugly.
Thanks.
-- tejun
| |