diff options
Diffstat (limited to 'fs/nfs/pnfs.c')
| -rw-r--r-- | fs/nfs/pnfs.c | 39 | 
1 files changed, 1 insertions, 38 deletions
diff --git a/fs/nfs/pnfs.c b/fs/nfs/pnfs.c index 76875bfcf19..2e00feacd4b 100644 --- a/fs/nfs/pnfs.c +++ b/fs/nfs/pnfs.c @@ -583,9 +583,6 @@ send_layoutget(struct pnfs_layout_hdr *lo,  	struct nfs_server *server = NFS_SERVER(ino);  	struct nfs4_layoutget *lgp;  	struct pnfs_layout_segment *lseg = NULL; -	struct page **pages = NULL; -	int i; -	u32 max_resp_sz, max_pages;  	dprintk("--> %s\n", __func__); @@ -594,20 +591,6 @@ send_layoutget(struct pnfs_layout_hdr *lo,  	if (lgp == NULL)  		return NULL; -	/* allocate pages for xdr post processing */ -	max_resp_sz = server->nfs_client->cl_session->fc_attrs.max_resp_sz; -	max_pages = nfs_page_array_len(0, max_resp_sz); - -	pages = kcalloc(max_pages, sizeof(struct page *), gfp_flags); -	if (!pages) -		goto out_err_free; - -	for (i = 0; i < max_pages; i++) { -		pages[i] = alloc_page(gfp_flags); -		if (!pages[i]) -			goto out_err_free; -	} -  	lgp->args.minlength = PAGE_CACHE_SIZE;  	if (lgp->args.minlength > range->length)  		lgp->args.minlength = range->length; @@ -616,39 +599,19 @@ send_layoutget(struct pnfs_layout_hdr *lo,  	lgp->args.type = server->pnfs_curr_ld->id;  	lgp->args.inode = ino;  	lgp->args.ctx = get_nfs_open_context(ctx); -	lgp->args.layout.pages = pages; -	lgp->args.layout.pglen = max_pages * PAGE_SIZE;  	lgp->lsegpp = &lseg;  	lgp->gfp_flags = gfp_flags;  	/* Synchronously retrieve layout information from server and  	 * store in lseg.  	 */ -	nfs4_proc_layoutget(lgp); +	nfs4_proc_layoutget(lgp, gfp_flags);  	if (!lseg) {  		/* remember that LAYOUTGET failed and suspend trying */  		set_bit(lo_fail_bit(range->iomode), &lo->plh_flags);  	} -	/* free xdr pages */ -	for (i = 0; i < max_pages; i++) -		__free_page(pages[i]); -	kfree(pages); -  	return lseg; - -out_err_free: -	/* free any allocated xdr pages, lgp as it's not used */ -	if (pages) { -		for (i = 0; i < max_pages; i++) { -			if (!pages[i]) -				break; -			__free_page(pages[i]); -		} -		kfree(pages); -	} -	kfree(lgp); -	return NULL;  }  /*  |