freebsd-dev/sys/nfsclient
Konstantin Belousov c480f781ea Current implementations of sync(2) and syncer vnode fsync() VOP uses
mnt_noasync counter to temporary remove MNTK_ASYNC mount option, which
is needed to guarantee a synchronous completion of the initiated i/o
before syscall or VOP return.  Global removal of MNTK_ASYNC option is
harmful because not only i/o started from corresponding thread becomes
synchronous, but all i/o is synchronous on the filesystem which is
initiated during sync(2) or syncer activity.

Instead of removing MNTK_ASYNC from mnt_kern_flag, provide a local
thread flag to disable async i/o for current thread only. Use the
opportunity to move DOINGASYNC() macro into sys/vnode.h and
consistently use it through places which tested for MNTK_ASYNC.

Some testing demonstrated 60-70% improvements in run time for the
metadata-intensive operations on async-mounted UFS volumes, but still
with great deviation due to other reasons.

Reviewed by:	mckusick
Tested by:	scottl
MFC after:	2 weeks
2012-02-06 11:04:36 +00:00
..
nfs_bio.c A problem with respect to data read through the buffer cache for both 2012-01-27 02:46:12 +00:00
nfs_kdtrace.c Fix the module dependency in nfs_kdtrace.c for the old NFS 2011-05-06 19:55:15 +00:00
nfs_krpc.c jwd@ reported a problem via email where the old NFS client would 2011-12-21 02:45:51 +00:00
nfs_nfsiod.c Change the sysctl naming for the old and new NFS clients 2011-05-15 20:52:43 +00:00
nfs_node.c Fix a LOR in the NFS client which could cause a deadlock. 2011-08-02 11:24:42 +00:00
nfs_subs.c Close a race in NFS lookup processing that could result in stale name cache 2012-01-20 20:02:01 +00:00
nfs_vfsops.c When a "mount -u" switches an NFS mount point from TCP to UDP, 2012-01-31 03:58:26 +00:00
nfs_vnops.c Current implementations of sync(2) and syncer vnode fsync() VOP uses 2012-02-06 11:04:36 +00:00
nfs.h Fix a comment that got missed by r221973 which changed 2011-05-16 13:12:09 +00:00
nfsargs.h Implemented a mount option "nocto" that disables cache coherency 2011-05-04 13:27:45 +00:00
nfsm_subs.h Close a race in NFS lookup processing that could result in stale name cache 2012-01-20 20:02:01 +00:00
nfsmount.h Add a timeout on positive name cache entries in the NFS client. That is, 2012-01-25 20:05:58 +00:00
nfsnode.h Close a race in NFS lookup processing that could result in stale name cache 2012-01-20 20:02:01 +00:00
nfsstats.h
nlminfo.h