2005-12-15 10:57:11

by Shunichi Sagawa

[permalink] [raw]
Subject: kernel 2.4 The process hang on NFS

Hello,

In the multithreaded NFS access program,
"Ctrl + C" causes the process hang.

498 static int
499 __rpc_execute(struct rpc_task *task)
500 {
:
560 while (RPC_IS_SLEEPING(task)) {
561 /* sync task: sleep here */
562 dprintk("RPC: %4d sync task going to sleepn",
563 task->tk_pid);
564 if (current->pid == rpciod_pid)
565 printk(KERN_ERR "RPC: rpciod waiting on sync task!n");
566
567 __wait_event(task->tk_wait, !RPC_IS_SLEEPING(task)); <= here


Even though a task receives a signal, __wait_event() does not resume the task.
I think that __wait_event_interruptible() should be used instead of __wait_event().

Is it right?

Best Regards,
Sagawa.


-------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc. Do you grep through log files
for problems? Stop! Download the new AJAX search engine that makes
searching your log files as easy as surfing the web. DOWNLOAD SPLUNK!
http://ads.osdn.com/?ad_id=7637&alloc_id=16865&op=click
_______________________________________________
NFS maillist - [email protected]
https://lists.sourceforge.net/lists/listinfo/nfs


2005-12-16 06:38:49

by Shunichi Sagawa

[permalink] [raw]
Subject: Re: kernel 2.4 The process hang on NFS

On Thu, 15 Dec 2005 09:10:45 -0500
Trond Myklebust <[email protected]> wrote:

> On Thu, 2005-12-15 at 19:59 +0900, Shunichi Sagawa wrote:
> > Hello,
> >
> > In the multithreaded NFS access program,
> > "Ctrl + C" causes the process hang.
> >
> > 498 static int
> > 499 __rpc_execute(struct rpc_task *task)
> > 500 {
> > :
> > 560 while (RPC_IS_SLEEPING(task)) {
> > 561 /* sync task: sleep here */
> > 562 dprintk("RPC: %4d sync task going to sleepn",
> > 563 task->tk_pid);
> > 564 if (current->pid == rpciod_pid)
> > 565 printk(KERN_ERR "RPC: rpciod waiting on sync task!n");
> > 566
> > 567 __wait_event(task->tk_wait, !RPC_IS_SLEEPING(task)); <= here
> >
> >
> > Even though a task receives a signal, __wait_event() does not resume the task.
> > I think that __wait_event_interruptible() should be used instead of __wait_event().
> >
> > Is it right?
>
> Yes. See the 2.6 kernels, which have fixed this.

Do you have a plan to fix this problem on kernel 2.4?
And, in kernel 2.4, only have to change __wait_event()
to wait_event_interruptible() ?

Best Regards,
Sagawa.



-------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc. Do you grep through log files
for problems? Stop! Download the new AJAX search engine that makes
searching your log files as easy as surfing the web. DOWNLOAD SPLUNK!
http://ads.osdn.com/?ad_id=7637&alloc_id=16865&op=click
_______________________________________________
NFS maillist - [email protected]
https://lists.sourceforge.net/lists/listinfo/nfs

2005-12-16 07:26:00

by Trond Myklebust

[permalink] [raw]
Subject: Re: kernel 2.4 The process hang on NFS

On Fri, 2005-12-16 at 15:40 +0900, Shunichi Sagawa wrote:
> Do you have a plan to fix this problem on kernel 2.4?
> And, in kernel 2.4, only have to change __wait_event()
> to wait_event_interruptible() ?

No. 2.4 kernels have been frozen for over a year. Only critical fixes
will be pushed upstream to Marcelo.

Cheers,
Trond



-------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc. Do you grep through log files
for problems? Stop! Download the new AJAX search engine that makes
searching your log files as easy as surfing the web. DOWNLOAD SPLUNK!
http://ads.osdn.com/?ad_id=7637&alloc_id=16865&op=click
_______________________________________________
NFS maillist - [email protected]
https://lists.sourceforge.net/lists/listinfo/nfs

2005-12-16 07:39:16

by Shunichi Sagawa

[permalink] [raw]
Subject: Re: kernel 2.4 The process hang on NFS

On Fri, 16 Dec 2005 02:25:23 -0500
Trond Myklebust <[email protected]> wrote:

> On Fri, 2005-12-16 at 15:40 +0900, Shunichi Sagawa wrote:
> > Do you have a plan to fix this problem on kernel 2.4?
> > And, in kernel 2.4, only have to change __wait_event()
> > to wait_event_interruptible() ?
>
> No. 2.4 kernels have been frozen for over a year. Only critical fixes
> will be pushed upstream to Marcelo.

Thank you for your kindly reply.

Best Regards,
Sagawa.


-------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc. Do you grep through log files
for problems? Stop! Download the new AJAX search engine that makes
searching your log files as easy as surfing the web. DOWNLOAD SPLUNK!
http://ads.osdn.com/?ad_id=7637&alloc_id=16865&op=click
_______________________________________________
NFS maillist - [email protected]
https://lists.sourceforge.net/lists/listinfo/nfs

2005-12-15 14:11:13

by Trond Myklebust

[permalink] [raw]
Subject: Re: kernel 2.4 The process hang on NFS

On Thu, 2005-12-15 at 19:59 +0900, Shunichi Sagawa wrote:
> Hello,
>
> In the multithreaded NFS access program,
> "Ctrl + C" causes the process hang.
>
> 498 static int
> 499 __rpc_execute(struct rpc_task *task)
> 500 {
> :
> 560 while (RPC_IS_SLEEPING(task)) {
> 561 /* sync task: sleep here */
> 562 dprintk("RPC: %4d sync task going to sleepn",
> 563 task->tk_pid);
> 564 if (current->pid == rpciod_pid)
> 565 printk(KERN_ERR "RPC: rpciod waiting on sync task!n");
> 566
> 567 __wait_event(task->tk_wait, !RPC_IS_SLEEPING(task)); <= here
>
>
> Even though a task receives a signal, __wait_event() does not resume the task.
> I think that __wait_event_interruptible() should be used instead of __wait_event().
>
> Is it right?

Yes. See the 2.6 kernels, which have fixed this.

Cheers,
Trond



-------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc. Do you grep through log files
for problems? Stop! Download the new AJAX search engine that makes
searching your log files as easy as surfing the web. DOWNLOAD SPLUNK!
http://ads.osdn.com/?ad_id=7637&alloc_id=16865&op=click
_______________________________________________
NFS maillist - [email protected]
https://lists.sourceforge.net/lists/listinfo/nfs