Umm. The regular read does this quite well. If something isn't up-to-date,
it tries a synchronous read. Once.
You're totally ignoring the real issue - user space that uses splice()
*knows* that it uses splice(). It's a private mmap().
NFSD, on the other hand, is supposed to act as NFSD. I think that
currently it assumes that nobody else modifies the files, which is
reasonable, but breaks with FUSE.
But do you see? That's a NFSD/FUSE issue, not a splice one!
Linus
--