On Mon, 2012-02-27 at 15:19 -0600, Dave Kleikamp wrote: > This patch implements the read_iter and write_iter file operations which > allow kernel code to initiate directIO. This allows the loop device to > read and write directly to the server, bypassing the page cache. > > Signed-off-by: Dave Kleikamp <dave.kleikamp@xxxxxxxxxx> > Cc: Zach Brown <zab@xxxxxxxxx> > Cc: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> > Cc: linux-nfs@xxxxxxxxxxxxxxx Performance is going to be absolutely terrible for O_DIRECT bvecs if you send just one page per RPC call. We are working on merging the O_DIRECT and page cache code in order to give O_DIRECT the ability to coalesce requests and do pNFS, and I'm hoping that code will be available soon. In the meantime, wouldn't it be possible to add basic coalescing to nfs_direct_read_schedule_bvec/nfs_direct_write_schedule_bvec more or less in the same way that we do for multi-page iovec segments? i.e. if the next bvec is contiguous with the previous, and the resulting RPC read length < rsize / write length < wsize, then add it to the same RPC call. -- Trond Myklebust Linux NFS client maintainer NetApp Trond.Myklebust@xxxxxxxxxx www.netapp.com ��.n��������+%������w��{.n�����{��w���jg��������ݢj����G�������j:+v���w�m������w�������h�����٥