diff options
| author | Trond Myklebust <trond.myklebust@fys.uio.no> | 2002-10-09 22:47:02 -0700 |
|---|---|---|
| committer | Linus Torvalds <torvalds@penguin.transmeta.com> | 2002-10-09 22:47:02 -0700 |
| commit | 62d86355a150657b217f03a0617a757962a6fde9 (patch) | |
| tree | e14922e840990cdbaa6c1e5b773f1cfbde915da6 | |
| parent | 40a4b2a4836023d76b652f1fd695c1c6d4d63632 (diff) | |
[PATCH] A basic NFSv4 client for 2.5.x
This patch changes the interface of the ->setattr() nfs_rpc_op
so that its first argument is a dentry instead of an inode.
[Explanation: The dentry is required because in NFSv4, we may
need to OPEN the file before doing the SETATTR. (This is
required if the file size is changed as part of the setattr.)
Opening the file requires making use of the containing
directory's inode.]
| -rw-r--r-- | fs/nfs/inode.c | 2 | ||||
| -rw-r--r-- | fs/nfs/nfs3proc.c | 3 | ||||
| -rw-r--r-- | fs/nfs/proc.c | 3 | ||||
| -rw-r--r-- | include/linux/nfs_xdr.h | 2 |
4 files changed, 6 insertions, 4 deletions
diff --git a/fs/nfs/inode.c b/fs/nfs/inode.c index 9b3329c2064f..c3f915274169 100644 --- a/fs/nfs/inode.c +++ b/fs/nfs/inode.c @@ -781,7 +781,7 @@ printk("nfs_setattr: revalidate failed, error=%d\n", error); if (error) goto out; - error = NFS_PROTO(inode)->setattr(inode, &fattr, attr); + error = NFS_PROTO(inode)->setattr(dentry, &fattr, attr); if (error) goto out; /* diff --git a/fs/nfs/nfs3proc.c b/fs/nfs/nfs3proc.c index c0d8be017f80..980c97043a9f 100644 --- a/fs/nfs/nfs3proc.c +++ b/fs/nfs/nfs3proc.c @@ -86,9 +86,10 @@ nfs3_proc_getattr(struct inode *inode, struct nfs_fattr *fattr) } static int -nfs3_proc_setattr(struct inode *inode, struct nfs_fattr *fattr, +nfs3_proc_setattr(struct dentry *dentry, struct nfs_fattr *fattr, struct iattr *sattr) { + struct inode *inode = dentry->d_inode; struct nfs3_sattrargs arg = { .fh = NFS_FH(inode), .sattr = sattr, diff --git a/fs/nfs/proc.c b/fs/nfs/proc.c index 411461013124..9c8e22151160 100644 --- a/fs/nfs/proc.c +++ b/fs/nfs/proc.c @@ -78,9 +78,10 @@ nfs_proc_getattr(struct inode *inode, struct nfs_fattr *fattr) } static int -nfs_proc_setattr(struct inode *inode, struct nfs_fattr *fattr, +nfs_proc_setattr(struct dentry *dentry, struct nfs_fattr *fattr, struct iattr *sattr) { + struct inode *inode = dentry->d_inode; struct nfs_sattrargs arg = { .fh = NFS_FH(inode), .sattr = sattr diff --git a/include/linux/nfs_xdr.h b/include/linux/nfs_xdr.h index b27525074317..5f6b8b84e37f 100644 --- a/include/linux/nfs_xdr.h +++ b/include/linux/nfs_xdr.h @@ -307,7 +307,7 @@ struct nfs_rpc_ops { int (*getroot) (struct nfs_server *, struct nfs_fh *, struct nfs_fattr *); int (*getattr) (struct inode *, struct nfs_fattr *); - int (*setattr) (struct inode *, struct nfs_fattr *, + int (*setattr) (struct dentry *, struct nfs_fattr *, struct iattr *); int (*lookup) (struct inode *, struct qstr *, struct nfs_fh *, struct nfs_fattr *); |
