freebsd-dev/sys/fs/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_clbio.c A problem with respect to data read through the buffer cache for both 2012-01-27 02:46:12 +00:00
nfs_clcomsubs.c Fix the new NFS client so that it handles NFSv4 state 2011-05-27 22:05:10 +00:00
nfs_clkdtrace.c Add DTrace support to the new NFS client. This is essentially 2011-06-18 23:02:53 +00:00
nfs_clkrpc.c opt_inet6.h was missing from some files in the new NFS subsystem. 2012-01-08 01:54:46 +00:00
nfs_clnfsiod.c Change the sysctl naming for the old and new NFS clients 2011-05-15 20:52:43 +00:00
nfs_clnode.c A problem with respect to data read through the buffer cache for both 2012-01-27 02:46:12 +00:00
nfs_clport.c A problem with respect to data read through the buffer cache for both 2012-01-27 02:46:12 +00:00
nfs_clrpcops.c Close a race in NFS lookup processing that could result in stale name cache 2012-01-20 20:02:01 +00:00
nfs_clstate.c Post r223774, the NFSv4 client no longer has multiple instances 2011-12-03 02:27:26 +00:00
nfs_clsubs.c Simple find/replace of VOP_ISLOCKED -> NFSVOPISLOCKED. This is done so that NFSVOPISLOCKED can be modified later to add enhanced logging and assertions. 2011-07-16 08:05:41 +00:00
nfs_clvfsops.c When a "mount -u" switches an NFS mount point from TCP to UDP, 2012-01-31 03:58:26 +00:00
nfs_clvnops.c Current implementations of sync(2) and syncer vnode fsync() VOP uses 2012-02-06 11:04:36 +00:00
nfs_kdtrace.h Add DTrace support to the new NFS client. This is essentially 2011-06-18 23:02:53 +00:00
nfs.h Modify the experimental (newnfs) NFS client so that it uses the 2011-04-25 23:12:18 +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
nlminfo.h