On 08/05/2009 12:34 PM, Erez Zilber wrote:
>> I found it. The problem is that we will send the signal if the xmit
>> thread is running or not. If it is not running the workqueue code will
>> keep getting woken up to handle the signal, but because we have not
>> called queue_work the workqueue code will not let the thread run so we
>> never get to flush the signal until we reconnect and send down a login
>> pdu (the login pdu does a queue_work finally).
>>
>
> When you say "the xmit thread is running", I guess that you mean that
> the xmit thread is busy with IO, right? Note that I said that this

No. workqueue.c:worker_thread() is spinning. It is looping because there 
is a signal pending, but the iscsi work code which has the flush_signals 
is not getting run because there is no work queued.

So you could add a

if (signal_pending(current))
        flush_signals(current)

to worker_thread() "for" loop and I think this will fix the problem.

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"open-iscsi" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at http://groups.google.com/group/open-iscsi
-~----------~----~----~----~------~----~------~--~---

Reply via email to