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>
This commit is contained in:
committed by
Trond Myklebust
parent
873101b337
commit
94a6d75320
@@ -358,8 +358,8 @@ struct nfs_symlinkargs {
|
||||
struct nfs_fh * fromfh;
|
||||
const char * fromname;
|
||||
unsigned int fromlen;
|
||||
const char * topath;
|
||||
unsigned int tolen;
|
||||
struct page ** pages;
|
||||
unsigned int pathlen;
|
||||
struct iattr * sattr;
|
||||
};
|
||||
|
||||
@@ -434,8 +434,8 @@ struct nfs3_symlinkargs {
|
||||
struct nfs_fh * fromfh;
|
||||
const char * fromname;
|
||||
unsigned int fromlen;
|
||||
const char * topath;
|
||||
unsigned int tolen;
|
||||
struct page ** pages;
|
||||
unsigned int pathlen;
|
||||
struct iattr * sattr;
|
||||
};
|
||||
|
||||
@@ -533,7 +533,10 @@ struct nfs4_accessres {
|
||||
struct nfs4_create_arg {
|
||||
u32 ftype;
|
||||
union {
|
||||
struct qstr * symlink; /* NF4LNK */
|
||||
struct {
|
||||
struct page ** pages;
|
||||
unsigned int len;
|
||||
} symlink; /* NF4LNK */
|
||||
struct {
|
||||
u32 specdata1;
|
||||
u32 specdata2;
|
||||
@@ -793,8 +796,8 @@ struct nfs_rpc_ops {
|
||||
int (*rename) (struct inode *, struct qstr *,
|
||||
struct inode *, struct qstr *);
|
||||
int (*link) (struct inode *, struct inode *, struct qstr *);
|
||||
int (*symlink) (struct inode *, struct dentry *, struct qstr *,
|
||||
struct iattr *);
|
||||
int (*symlink) (struct inode *, struct dentry *, struct page *,
|
||||
unsigned int, struct iattr *);
|
||||
int (*mkdir) (struct inode *, struct dentry *, struct iattr *);
|
||||
int (*rmdir) (struct inode *, struct qstr *);
|
||||
int (*readdir) (struct dentry *, struct rpc_cred *,
|
||||
|
Reference in New Issue
Block a user