On Sat, 2008-06-14 at 10:56 +0400, Evgeniy Polyakov wrote:
quoted
That sounds great, but what do you mean by 'novel'? Don't other
modern network filesystems use asynchronous requests and replies in
some form? It seems like the obvious thing.
Maybe it was a bit naive though :)
But I checked lots of implementation, all of them use send()/recv()
approach. NFSv4 uses a bit different, but it is a cryptic, and at least
from its names it is not clear:
like nfs_pagein_multi() -> nfs_pageio_complete() -> add_stats. Presumably
we add stats when we have data handy...
You're confusing write gathering with asynchronous I/O...
NFS attempts to send multiple contiguous pages in one I/O request, and
so it has a mechanism for collecting them and dispatching the I/O as
soon as we have enough pages for an RPC call.
The actual RPC call is then handled by the sunrpc layer and is done
fully asynchronously using non-blocking I/O.
Trond