/* Moves data beyond the current pointer position from the XDR head buffer into the page list. Any data that lies beyond current position + "len" bytes is moved into the XDR tail. The current pointer is then repositioned at the beginning of the first XDR page.  */
void xdr_enter_page(struct xdr_stream *xdr, unsigned int len)
/* Moves data beyond the current pointer position from the XDR head buffer into the page list. Any data that lies beyond current position + "len" bytes is moved into the XDR tail. The current pointer is then repositioned at the beginning of the first XDR page.  */
void xdr_enter_page(struct xdr_stream *xdr, unsigned int len)
{
	char * kaddr = page_address(xdr->buf->pages[0]);
	xdr_read_pages(xdr, len);
	if (len > PAGE_CACHE_SIZE - xdr->buf->page_base)
		len = PAGE_CACHE_SIZE - xdr->buf->page_base;
	xdr->p = (__be32 *)(kaddr + xdr->buf->page_base);
	xdr->end = (__be32 *)((char *)xdr->p + len);
}