pnfs/blocklayout: allocate separate pages for the layoutcommit payload
authorChristoph Hellwig <hch@lst.de>
Thu, 11 Sep 2014 00:36:30 +0000 (17:36 -0700)
committerTrond Myklebust <trond.myklebust@primarydata.com>
Fri, 12 Sep 2014 17:22:45 +0000 (13:22 -0400)
commit34dc93c2fc04da0d01acf8a1660b4ab276208af7
tree89c6c0dbc294682703f7172e1285a8bf5245ce52
parentd4b18c3e00b8d18fbd316abe9639b91ad416e1f3
pnfs/blocklayout: allocate separate pages for the layoutcommit payload

Instead of overflowing the XDR send buffer with our extent list allocate
pages and pre-encode the layoutupdate payload into them.  We optimistically
allocate a single page use alloc_page and only switch to vmalloc when we
have more extents outstanding.  Currently there is only a single testcase
(xfstests generic/113) which can reproduce large enough extent lists for
this to occur.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
fs/nfs/blocklayout/blocklayout.c
fs/nfs/blocklayout/blocklayout.h
fs/nfs/blocklayout/extent_tree.c