I modified the linux NFS client, kernel 2.4.5 and 2.4.6-pre7, to send
an extra SETATTR, with special values, within nfs_open and nfs_release
so that I would be able to track file open and close. For the server I
am using a slightly modified linux user level nfs server.
What I noticed is that after this change I get:
RPC: rpciod waiting on sync task!
coming from the kernel under heavy read load, especially with
larger chunks of data 8k, 16, and 64k.
The code introduced into nfs_open and nfs_release is:
memset( &fattr, 0, sizeof(struct nfs_fattr) );
memset( &attr, 0, sizeof(struct iattr) );
attr.ia_valid = ATTR_MODE | ATTR_UID | ATTR_GID | ATTR_SIZE;
attr.ia_mode = inode->i_mode;
attr.ia_uid = -10;
attr.ia_gid = -10;
attr.ia_size = -10;
attr.ia_atime = -1;
attr.ia_mtime = -1;
attr.ia_ctime = -1;
attr.ia_attr_flags = -1;
error = NFS_PROTO(inode)->setattr(inode, &fattr, &attr);
if ( error ) {
printk( "nfs_network_openclose: error=%d\n", error );
}
Does anybody see any problems with this code? The unmodified nfs client
works fine with the unmodified nfs server.
Thanks
ttyl
Dima
-- Dima Brodsky dima@cs.ubc.ca http://www.cs.ubc.ca/~dima 201-2366 Main Mall (604) 822-6179 (Office) Department of Computer Science (604) 822-2895 (DSG Lab) University of British Columbia, Canada (604) 822-5485 (FAX)Computers are like Old Testament gods; lots of rules and no mercy. (Joseph Campbell)
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/