Re: USB device cannot be reconnected and khubd "blocked for morethan 120 seconds"

From: Tejun Heo
Date: Tue Jan 15 2013 - 13:39:13 EST


Hello, Alan.

On Tue, Jan 15, 2013 at 01:20:58PM -0500, Alan Stern wrote:
> It may not be so easy. When the SCSI async thread probes the new disk,
> it has to do I/O. So it needs to use a scheduler.
>
> But maybe it could use a built-in trivial scheduler until the proper
> one is loaded. Then the loading could be asynchronous.

It can be done. Noop is always built-in and block IO can do IOs with
noop. The problem here is that request_module() is done synchronously
during evelator_init(). We can punt that to a work item so that the
elevator is switched on load completion. There are some nastiness
involved tho - if module probing returns before elevator switch
happens, the userland can observe elevator being switched after some
indetermined short period of time, which can, for example, break
scripts adjusting elevator knobs and etc...

I *think* it'll be best to allow scoped synchronization of async ops.
Looking into it.

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/