cvs commit: src/sys/nfsclient nfs_bio.c nfs_vfsops.c nfsargs.h nfsmount.h src/sys/sys buf.h bufobj.h src/sys/kern vfs_bio.c

Brian Fundakowski Feldman green at freebsd.org
Sun Jun 12 08:26:14 GMT 2005


On Sun, Jun 12, 2005 at 01:08:33AM -0700, Alfred Perlstein wrote:
> * Brian Fundakowski Feldman <green at freebsd.org> [050611 14:25] wrote:
> > On Sat, Jun 11, 2005 at 10:46:17AM -0700, Alfred Perlstein wrote:
> > > * Brian Fundakowski Feldman <green at freebsd.org> [050611 10:04] wrote:
> > > > 
> > > > Well, the easy solution is just fsync(2) :) This change jibes with
> > > > Terry's explanation (thanks, Juli).  It would be good to implement
> > > > the rest of the functionality for non-blocking NFS client, too, but I
> > > > think that can be dne gradually over time.
> > > 
> > > lol.
> > > FWIW, I was aware of Terry's explanation, I just consider it bunk.
> > 
> > Heh.  Well, we can always throw things under a kernel option.  I never
> > saw Terry's e-mail on the topic until just now -- my understanding was
> > that this was generally the Right Thing To Do after spending a while
> > reading POSIX/SUS (due to gad pointing out that it was definitely a
> > bad idea to just return short writes).
> 
> Seriously, have you tested what happens to a libc_r app that
> opens an nfs file F_SYNC?  My guess is that it's not pretty.

This code path is related to O_NONBLOCK, not O_FSYNC.  O_FSYNC is
synonymous with the slow fallback path that large transactional block
now takes, rather than deadlocking.  O_NONBLOCK really means that
whatever they do, they are required to check for EAGAIN.

-- 
Brian Fundakowski Feldman                           \'[ FreeBSD ]''''''''''\
  <> green at FreeBSD.org                               \  The Power to Serve! \
 Opinions expressed are my own.                       \,,,,,,,,,,,,,,,,,,,,,,\


More information about the cvs-src mailing list