c480f781ea
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 |
||
---|---|---|
.. | ||
nfs_clbio.c | ||
nfs_clcomsubs.c | ||
nfs_clkdtrace.c | ||
nfs_clkrpc.c | ||
nfs_clnfsiod.c | ||
nfs_clnode.c | ||
nfs_clport.c | ||
nfs_clrpcops.c | ||
nfs_clstate.c | ||
nfs_clsubs.c | ||
nfs_clvfsops.c | ||
nfs_clvnops.c | ||
nfs_kdtrace.h | ||
nfs.h | ||
nfsmount.h | ||
nfsnode.h | ||
nlminfo.h |