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 |
||
---|---|---|
.. | ||
ext2_alloc.c | ||
ext2_balloc.c | ||
ext2_bmap.c | ||
ext2_dinode.h | ||
ext2_dir.h | ||
ext2_extern.h | ||
ext2_inode_cnv.c | ||
ext2_inode.c | ||
ext2_lookup.c | ||
ext2_mount.h | ||
ext2_subr.c | ||
ext2_vfsops.c | ||
ext2_vnops.c | ||
ext2fs.h | ||
fs.h | ||
inode.h |