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_bio.c | ||
nfs_kdtrace.c | ||
nfs_krpc.c | ||
nfs_nfsiod.c | ||
nfs_node.c | ||
nfs_subs.c | ||
nfs_vfsops.c | ||
nfs_vnops.c | ||
nfs.h | ||
nfsargs.h | ||
nfsm_subs.h | ||
nfsmount.h | ||
nfsnode.h | ||
nfsstats.h | ||
nlminfo.h |