On Wed, Aug 5, 2009 at 10:22 PM, Mike Christie<micha...@cs.wisc.edu> wrote: > > 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. >
Looks like this solves the problem. I've added the following patch to the centos 5.3 kernel (2.6.18-128.1.6.el5): diff --git a/kernel/workqueue.c b/kernel/workqueue.c index 8594efb..e148ed8 100644 --- a/kernel/workqueue.c +++ b/kernel/workqueue.c @@ -253,6 +253,9 @@ static int worker_thread(void *__cwq) set_current_state(TASK_INTERRUPTIBLE); while (!kthread_should_stop()) { + if (signal_pending(current)) + flush_signals(current); + add_wait_queue(&cwq->more_work, &wait); if (list_empty(&cwq->worklist)) schedule(); I'm running with open-iscsi.git + 2 commits from linux-2.6-iscsi.git (9c302cc45b70ecc4b606d65a445902381066061b & 75be23dc40ba2f215779d5ba60fda9a762271bbe). Will you push it upstream & into the RHEL kernel? Thanks, Erez --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "open-iscsi" group. To post to this group, send email to open-iscsi@googlegroups.com To unsubscribe from this group, send email to open-iscsi+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/open-iscsi -~----------~----~----~----~------~----~------~--~---