lkml.org 
[lkml]   [1998]   [Dec]   [25]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
SubjectRe: 2.1.133-1: NFS: Arghhh, stuck RPC requests!
From
Date
Steffen Zahn <zahn@berlin.snafu.de> writes:

> Hello,
>
> I get the following syslog messages on a NFS client under high NFS load:
[snip]
> Dec 23 17:04:33 zahn vmunix: RPC: rpciod waiting on sync task!
>

Hi,
Does the following patch get rid of them?

Cheers,
Trond


Linus (if you're reading this): Shouldn't we really also be protecting
asynchronous read requests using a dput/dget? I'm thinking about the
case in which a silly-delete clobbers the dentry/inode before the read
request is handled.



--- linux/fs/nfs/write.c-2.1.132 Fri Dec 18 00:54:25 1998
+++ linux/fs/nfs/write.c Fri Dec 25 15:04:20 1998
@@ -266,6 +266,7 @@
if (!--req->wb_count) {
struct inode *inode = req->wb_inode;
remove_write_request(&NFS_WRITEBACK(inode), req);
+ dput(req->wb_dentry);
kfree(req);
nr_write_requests--;
}
@@ -302,7 +303,7 @@
goto out_req;

/* Put the task on inode's writeback request list. */
- wreq->wb_dentry = dentry;
+ wreq->wb_dentry = dget(dentry);
wreq->wb_inode = inode;
wreq->wb_pid = current->pid;
wreq->wb_page = page;
@@ -459,7 +460,6 @@
* The IO completion will then free the page and the dentry.
*/
atomic_inc(&page->count);
- dget(dentry);

/* Schedule request */
synchronous = schedule_write_request(req, sync);
@@ -698,7 +698,6 @@
clear_bit(PG_uptodate, &page->flags);

__free_page(page);
- dput(req->wb_dentry);

wake_up(&req->wb_wait);

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2005-03-22 13:46    [W:2.180 / U:0.016 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site