On Thu, Aug 7, 2014 at 7:27 PM, Christoph Hellwig <hch@xxxxxx> wrote: > On Thu, Aug 07, 2014 at 07:05:03PM +0800, Peng Tao wrote: >> On Thu, Aug 7, 2014 at 3:23 PM, Christoph Hellwig <hch@xxxxxx> wrote: >> > 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. >> > >> depending on how badly the extents are fragmented, it might worth >> starting an async layoutcommit within blocklayout client when bl_count >> reaches certain limit, so that we don't send an unlimited amount of >> extents in one layoutcommit. > > I though about this, but this only reduces the problem and we'd still > need to be able to commit all extents for a data integrity operation, > so we'd still need someting like the above. > yeah, I wasn't against your patch. What I suggested is a way to limit the amount of commit extents such that we don't end up sending more that one RPC, whose size is still limited even if we allocate large enough XDR buffer. > The other option I considered and prototyped was to send multiple on the > wire layoutcommit calls from pnfs_layoutcommit_inode, but that did prove > to be even more cumbersome. -- To unsubscribe from this list: send the line "unsubscribe linux-nfs" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html