Commit 3b14d654 authored by Trond Myklebust's avatar Trond Myklebust

NFS: Reduce stack footprint of nfs3_proc_readlink()

Signed-off-by: default avatarTrond Myklebust <Trond.Myklebust@netapp.com>
parent 136f2627
...@@ -234,7 +234,7 @@ static int nfs3_proc_access(struct inode *inode, struct nfs_access_entry *entry) ...@@ -234,7 +234,7 @@ static int nfs3_proc_access(struct inode *inode, struct nfs_access_entry *entry)
static int nfs3_proc_readlink(struct inode *inode, struct page *page, static int nfs3_proc_readlink(struct inode *inode, struct page *page,
unsigned int pgbase, unsigned int pglen) unsigned int pgbase, unsigned int pglen)
{ {
struct nfs_fattr fattr; struct nfs_fattr *fattr;
struct nfs3_readlinkargs args = { struct nfs3_readlinkargs args = {
.fh = NFS_FH(inode), .fh = NFS_FH(inode),
.pgbase = pgbase, .pgbase = pgbase,
...@@ -244,14 +244,19 @@ static int nfs3_proc_readlink(struct inode *inode, struct page *page, ...@@ -244,14 +244,19 @@ static int nfs3_proc_readlink(struct inode *inode, struct page *page,
struct rpc_message msg = { struct rpc_message msg = {
.rpc_proc = &nfs3_procedures[NFS3PROC_READLINK], .rpc_proc = &nfs3_procedures[NFS3PROC_READLINK],
.rpc_argp = &args, .rpc_argp = &args,
.rpc_resp = &fattr,
}; };
int status; int status = -ENOMEM;
dprintk("NFS call readlink\n"); dprintk("NFS call readlink\n");
nfs_fattr_init(&fattr); fattr = nfs_alloc_fattr();
if (fattr == NULL)
goto out;
msg.rpc_resp = fattr;
status = rpc_call_sync(NFS_CLIENT(inode), &msg, 0); status = rpc_call_sync(NFS_CLIENT(inode), &msg, 0);
nfs_refresh_inode(inode, &fattr); nfs_refresh_inode(inode, fattr);
nfs_free_fattr(fattr);
out:
dprintk("NFS reply readlink: %d\n", status); dprintk("NFS reply readlink: %d\n", status);
return status; return status;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment