On 31.08.21 11:13, Johan Hovold wrote: > The comment above usb_start_wait_urb() (which also needs to be updated, > by the way) even suggests that drivers should "implement their own > interruptible routines" so perhaps this has just gone unnoticed for 20 > odd years. And the question then becomes, why didn't we use > interruptible sleep from the start? > > And trying to answer that I find that that's precisely what we did, but > for some reason it was changed to uninterruptible sleep in v2.4.11 > without a motivation (that I could easily find spelled out). I must admit that I do not remember. But there are a lot of situations requiring control messages that do not allow signal delivery. Take for example a device that is HID and storage. We are doing HID error handling, which can involve a device reset. You absolutely cannot deliver a signal right now, as you have a device that is in an undefined state in the block layer. It looks to me very much like we need both versions and as a rule of thumb, while you would use GFP_NOIO you must also use the uninterruptible messaging. Regards Oliver