Messages in this thread | | | Date | Wed, 29 Oct 1997 08:35:21 -0500 | From | Bill Hawes <> | Subject | NFS pending RPC requests |
| |
After some further work I've figured out why we're getting pending RPC requests in nfs_delete_inode.
The nfs_file_close code is supposed to flush dirty pages, but is checking only for pending requests for the current pid. Since the file close operation is called only by the _last_ process that has a file open, if this isn't the one that wrote to the file, then the pages don't get flushed. Thus any file held open by multiple processes may not get flushed at close time.
The current NFS patch set handles the problem correctly at delete_inode time, but I'm working on some changes to nfs_file_close to flush the requests there.
There's also an issue of reporting errors from failed write requests. It seems to me that nfs_file_close is not a very good time to report a write error, as most software doesn't expect or check for error returns from close. And since the close operation may not be called until the process that wrote the file has already exited, it's a little late to be looking for errors.
To address this problem I'm adding code to check for write errors in nfs_fsync, which is otherwise pretty much the same as the close operation.
Will have the new patch ready in a while, after some further testing.
Regards, Bill
| |