Re: Bug in disk event polling

From: Tejun Heo
Date: Fri Feb 10 2012 - 16:13:13 EST


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
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/