On Mar 16, 2023, at 12:24, David Howells wrote: Trond Myklebust wrote: + buf->bvec += 2; + buf->bvec[-2].bv_page = NULL; + buf->bvec[-1].bv_page = NULL; NACK. Can you elaborate? Is it that you dislike allocating extra slots for protocol bits? Or just that the bvec[] is offset by 2? Or some other reason? 1) This is code that is common to the client and the server. Why are we adding unused 3 bvec slots to every client RPC call? 2) It obfuscates the existence of these bvec slots. 3) knfsd may use splice_direct_to_actor() in order to avoid copying the page cache data into private buffers (it just takes a reference to the pages). Using MSG_SPLICE_PAGES will presumably require it to protect those pages against further writes while the socket is referencing them. _________________________________ Trond Myklebust Linux NFS client maintainer, Hammerspace trond.myklebust@hammerspace.com