diff -u --recursive --new-file linux-2.5.59/fs/nfs/file.c linux-2.5.59-01-nfsv4-state-01/fs/nfs/file.c --- linux-2.5.59/fs/nfs/file.c 2002-12-18 18:37:07.000000000 +0100 +++ linux-2.5.59-01-nfsv4-state-01/fs/nfs/file.c 2003-01-17 14:15:51.000000000 +0100 @@ -47,7 +47,7 @@ .aio_read = nfs_file_read, .aio_write = nfs_file_write, .mmap = nfs_file_mmap, - .open = nfs_open, + .open = nfs_file_open, .flush = nfs_file_flush, .release = nfs_release, .fsync = nfs_fsync, diff -u --recursive --new-file linux-2.5.59/fs/nfs/inode.c linux-2.5.59-01-nfsv4-state-01/fs/nfs/inode.c --- linux-2.5.59/fs/nfs/inode.c 2003-01-12 22:40:13.000000000 +0100 +++ linux-2.5.59-01-nfsv4-state-01/fs/nfs/inode.c 2003-01-17 14:15:51.000000000 +0100 @@ -873,6 +873,11 @@ return err; } +int nfs_file_open(struct inode *inode, struct file *filp) +{ + return (NFS_PROTO(inode)->file_open(inode, filp)); +} + int nfs_release(struct inode *inode, struct file *filp) { struct rpc_cred *cred; diff -u --recursive --new-file linux-2.5.59/fs/nfs/nfs3proc.c linux-2.5.59-01-nfsv4-state-01/fs/nfs/nfs3proc.c --- linux-2.5.59/fs/nfs/nfs3proc.c 2003-01-08 12:30:45.000000000 +0100 +++ linux-2.5.59-01-nfsv4-state-01/fs/nfs/nfs3proc.c 2003-01-17 14:15:51.000000000 +0100 @@ -852,6 +852,14 @@ rpc_call_setup(&data->task, &msg, 0); } +/* + * File open is the same as dir open + */ +int nfs3_proc_file_open(struct inode *inode, struct file *filp) +{ + return(nfs_open(inode, filp)); +} + struct nfs_rpc_ops nfs_v3_clientops = { .version = 3, /* protocol version */ .getroot = nfs3_proc_get_root, @@ -880,4 +888,5 @@ .read_setup = nfs3_proc_read_setup, .write_setup = nfs3_proc_write_setup, .commit_setup = nfs3_proc_commit_setup, + .file_open = nfs3_proc_file_open, }; diff -u --recursive --new-file linux-2.5.59/fs/nfs/nfs4proc.c linux-2.5.59-01-nfsv4-state-01/fs/nfs/nfs4proc.c --- linux-2.5.59/fs/nfs/nfs4proc.c 2003-01-08 12:30:45.000000000 +0100 +++ linux-2.5.59-01-nfsv4-state-01/fs/nfs/nfs4proc.c 2003-01-17 14:15:51.000000000 +0100 @@ -1561,6 +1561,16 @@ return rpc_execute(task); } +/* +* To be changed into a real NFSv4 file_open soon. +*/ + +int +nfs4_proc_file_open(struct inode *inode, struct file *filp) +{ + return(nfs_open(inode, filp)); +} + struct nfs_rpc_ops nfs_v4_clientops = { .version = 4, /* protocol version */ .getroot = nfs4_proc_get_root, @@ -1590,6 +1600,7 @@ .read_setup = nfs4_proc_read_setup, .write_setup = nfs4_proc_write_setup, .commit_setup = nfs4_proc_commit_setup, + .file_open = nfs4_proc_file_open, }; /* diff -u --recursive --new-file linux-2.5.59/fs/nfs/proc.c linux-2.5.59-01-nfsv4-state-01/fs/nfs/proc.c --- linux-2.5.59/fs/nfs/proc.c 2003-01-08 12:30:45.000000000 +0100 +++ linux-2.5.59-01-nfsv4-state-01/fs/nfs/proc.c 2003-01-17 14:15:51.000000000 +0100 @@ -638,6 +638,14 @@ BUG(); } +/* + * File open is the same as dir open. + */ +int nfs_proc_file_open(struct inode *inode, struct file *filp) +{ + return(nfs_open(inode, filp)); +} + struct nfs_rpc_ops nfs_v2_clientops = { .version = 2, /* protocol version */ .getroot = nfs_proc_get_root, @@ -667,4 +675,5 @@ .read_setup = nfs_proc_read_setup, .write_setup = nfs_proc_write_setup, .commit_setup = nfs_proc_commit_setup, + .file_open = nfs_proc_file_open, }; diff -u --recursive --new-file linux-2.5.59/include/linux/nfs_fs.h linux-2.5.59-01-nfsv4-state-01/include/linux/nfs_fs.h --- linux-2.5.59/include/linux/nfs_fs.h 2002-12-21 07:29:02.000000000 +0100 +++ linux-2.5.59-01-nfsv4-state-01/include/linux/nfs_fs.h 2003-01-17 14:15:51.000000000 +0100 @@ -235,6 +235,7 @@ extern int nfs_getattr(struct vfsmount *, struct dentry *, struct kstat *); extern int nfs_permission(struct inode *, int); extern int nfs_open(struct inode *, struct file *); +extern int nfs_file_open(struct inode *, struct file *); extern int nfs_release(struct inode *, struct file *); extern int __nfs_revalidate_inode(struct nfs_server *, struct inode *); extern int nfs_setattr(struct dentry *, struct iattr *); diff -u --recursive --new-file linux-2.5.59/include/linux/nfs_xdr.h linux-2.5.59-01-nfsv4-state-01/include/linux/nfs_xdr.h --- linux-2.5.59/include/linux/nfs_xdr.h 2002-12-21 08:09:27.000000000 +0100 +++ linux-2.5.59-01-nfsv4-state-01/include/linux/nfs_xdr.h 2003-01-17 14:15:51.000000000 +0100 @@ -597,6 +597,7 @@ void (*read_setup) (struct nfs_read_data *, unsigned int count); void (*write_setup) (struct nfs_write_data *, unsigned int count, int how); void (*commit_setup) (struct nfs_write_data *, u64 start, u32 len, int how); + int (*file_open) (struct inode *, struct file *); }; /*