Re: possible race condition for usb_stor_port_reset and usb_reset_and_verify_device

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, 10 Jul 2015, yoma sophian wrote:

> hi Alan:
> 
> 2015-05-27 22:40 GMT+08:00 Alan Stern <stern@xxxxxxxxxxxxxxxxxxx>:
> > On Wed, 27 May 2015, yoma sophian wrote:
> >
> >> After reading the kernel power document, freezing-of-tasks.txt , can I
> >> get the below conclusion:
> >> if I put my thread in freezable, it will get frozen automatically
> >> whenever the system goes in to suspend or hibernate.
> >
> > It's not entirely automatic.  Your thread has to call try_to_freeze()
> > at appropriate spots.  Of course, if your thread is a work queue then
> > the workqueue core will do that for you.
> after tracing more kernel based your guide, may I get below conclusion:
> if I try to create a thread that will do the IO
> 1. create the thread, with set_freezable, and call try_to_freeze() at
> appropriate spots.
> 2. hook my thread on system_freezable_wq
>      such as calling queue_delayed_work(system_freezable_wq, &mythread, intv)
>      or mod_delayed_work((system_freezable_wq, &mythread, intv)
> 
> is hub_thread the 1st kind?

It depends on which kernel you're looking at.  Up until commit 
32a6958998c5, which was added in the 3.18 kernel, hub_thread was the 
1st kind.

In the 3.18 kernel, hub_thread was replaced by a freezable workqueue
different from system_freezable_wq.

> if Yes, where it try_to_freeze?

Before 3.18, try_to_freeze was checked inside wait_event_freezable(),
which was called in hub_thread().

> And why not make hub_thread as above #2 kind?

We probably could, but it works okay the way it is now.

Alan Stern

--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux