aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux
diff options
context:
space:
mode:
authorChuck Lever <chuck.lever@oracle.com>2006-08-22 20:06:23 -0400
committerTrond Myklebust <Trond.Myklebust@netapp.com>2006-09-22 23:24:53 -0400
commit94a6d75320b3681e6e728b70e18bd186cb55e682 (patch)
tree0957071549d76ceb3857e419998818b11bce7269 /include/linux
parent873101b33776780d32610fc4c90c7358a5e98f51 (diff)
NFS: Use cached page as buffer for NFS symlink requests
Now that we have a copy of the symlink path in the page cache, we can pass a struct page down to the XDR routines instead of a string buffer. Test plan: Connectathon, all NFS versions. Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
Diffstat (limited to 'include/linux')
-rw-r--r--include/linux/nfs_xdr.h17
1 files changed, 10 insertions, 7 deletions
diff --git a/include/linux/nfs_xdr.h b/include/linux/nfs_xdr.h
index ddf5d75e97a2..dc5397d9d23c 100644
--- a/include/linux/nfs_xdr.h
+++ b/include/linux/nfs_xdr.h
@@ -358,8 +358,8 @@ struct nfs_symlinkargs {
358 struct nfs_fh * fromfh; 358 struct nfs_fh * fromfh;
359 const char * fromname; 359 const char * fromname;
360 unsigned int fromlen; 360 unsigned int fromlen;
361 const char * topath; 361 struct page ** pages;
362 unsigned int tolen; 362 unsigned int pathlen;
363 struct iattr * sattr; 363 struct iattr * sattr;
364}; 364};
365 365
@@ -434,8 +434,8 @@ struct nfs3_symlinkargs {
434 struct nfs_fh * fromfh; 434 struct nfs_fh * fromfh;
435 const char * fromname; 435 const char * fromname;
436 unsigned int fromlen; 436 unsigned int fromlen;
437 const char * topath; 437 struct page ** pages;
438 unsigned int tolen; 438 unsigned int pathlen;
439 struct iattr * sattr; 439 struct iattr * sattr;
440}; 440};
441 441
@@ -533,7 +533,10 @@ struct nfs4_accessres {
533struct nfs4_create_arg { 533struct nfs4_create_arg {
534 u32 ftype; 534 u32 ftype;
535 union { 535 union {
536 struct qstr * symlink; /* NF4LNK */ 536 struct {
537 struct page ** pages;
538 unsigned int len;
539 } symlink; /* NF4LNK */
537 struct { 540 struct {
538 u32 specdata1; 541 u32 specdata1;
539 u32 specdata2; 542 u32 specdata2;
@@ -793,8 +796,8 @@ struct nfs_rpc_ops {
793 int (*rename) (struct inode *, struct qstr *, 796 int (*rename) (struct inode *, struct qstr *,
794 struct inode *, struct qstr *); 797 struct inode *, struct qstr *);
795 int (*link) (struct inode *, struct inode *, struct qstr *); 798 int (*link) (struct inode *, struct inode *, struct qstr *);
796 int (*symlink) (struct inode *, struct dentry *, struct qstr *, 799 int (*symlink) (struct inode *, struct dentry *, struct page *,
797 struct iattr *); 800 unsigned int, struct iattr *);
798 int (*mkdir) (struct inode *, struct dentry *, struct iattr *); 801 int (*mkdir) (struct inode *, struct dentry *, struct iattr *);
799 int (*rmdir) (struct inode *, struct qstr *); 802 int (*rmdir) (struct inode *, struct qstr *);
800 int (*readdir) (struct dentry *, struct rpc_cred *, 803 int (*readdir) (struct dentry *, struct rpc_cred *,