freebsd-nq/sys/geom
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
..
bde
cache Mark all SYSCTL_NODEs static that have no corresponding SYSCTL_DECLs. 2011-11-07 15:43:11 +00:00
concat Mark all SYSCTL_NODEs static that have no corresponding SYSCTL_DECLs. 2011-11-07 15:43:11 +00:00
eli replace uses of libkern gets with cngets 2011-12-17 15:26:34 +00:00
gate Mark all SYSCTL_NODEs static that have no corresponding SYSCTL_DECLs. 2011-11-07 15:43:11 +00:00
journal Current implementations of sync(2) and syncer vnode fsync() VOP uses 2012-02-06 11:04:36 +00:00
label Include sys/sbuf.h directly. 2011-07-11 05:22:31 +00:00
linux_lvm
mirror Mark all SYSCTL_NODEs static that have no corresponding SYSCTL_DECLs. 2011-11-07 15:43:11 +00:00
mountver Avoid to check the same cache line/variable from all the locking 2012-01-28 14:00:21 +00:00
multipath Major GEOM MULTIPATH class rewrite: 2011-11-12 09:52:27 +00:00
nop Mark all SYSCTL_NODEs static that have no corresponding SYSCTL_DECLs. 2011-11-07 15:43:11 +00:00
part Correct typo in comment (numbver) 2012-02-04 18:14:39 +00:00
raid Add support for >2TB disks in GEOM RAID for Intel metadata format. 2012-01-09 23:01:42 +00:00
raid3 Mark all SYSCTL_NODEs static that have no corresponding SYSCTL_DECLs. 2011-11-07 15:43:11 +00:00
sched Mark all SYSCTL_NODEs static that have no corresponding SYSCTL_DECLs. 2011-11-07 15:43:11 +00:00
shsec Mark all SYSCTL_NODEs static that have no corresponding SYSCTL_DECLs. 2011-11-07 15:43:11 +00:00
stripe Mark all SYSCTL_NODEs static that have no corresponding SYSCTL_DECLs. 2011-11-07 15:43:11 +00:00
uncompress GEOM_UNCOMPRESS module, can be used with uzip images and with new ulzma images. 2012-01-04 23:39:11 +00:00
uzip Mark MALLOC_DEFINEs static that have no corresponding MALLOC_DECLAREs. 2011-11-07 06:44:47 +00:00
vinum Mark all SYSCTL_NODEs static that have no corresponding SYSCTL_DECLs. 2011-11-07 15:43:11 +00:00
virstor Mark all SYSCTL_NODEs static that have no corresponding SYSCTL_DECLs. 2011-11-07 15:43:11 +00:00
zero Mark all SYSCTL_NODEs static that have no corresponding SYSCTL_DECLs. 2011-11-07 15:43:11 +00:00
geom_aes.c Don't pass error value pointer to g_read_data(9) at all if we don't 2005-11-30 22:15:00 +00:00
geom_bsd_enc.c Decode as many or as few partition entries as the label claims there 2007-12-09 22:44:22 +00:00
geom_bsd.c Avoid to check the same cache line/variable from all the locking 2012-01-28 14:00:21 +00:00
geom_ccd.c Include sys/sbuf.h directly. 2011-07-11 05:22:31 +00:00
geom_ctl.c Finish r210923, 210926. Mark some devices as eternal. 2011-01-04 10:59:38 +00:00
geom_ctl.h Simplify the GEOM OAM api: Drop the request type, and let everything 2003-06-01 13:47:51 +00:00
geom_dev.c Temporary revert r227009 to fix freeze on UP systems without PREEMPTION. 2011-11-14 19:32:05 +00:00
geom_disk.c Mark all SYSCTL_NODEs static that have no corresponding SYSCTL_DECLs. 2011-11-07 15:43:11 +00:00
geom_disk.h Plumb device physical path reporting from CAM devices, through GEOM and 2011-06-14 17:10:32 +00:00
geom_dump.c Do not hide stripeoffset from libgeom(3), it may be useful even when 2011-06-02 12:49:45 +00:00
geom_event.c Workaround the problem introduced by combination of r162200 and r215687. 2011-11-01 08:57:49 +00:00
geom_fox.c Add some FEATURE macros for various GEOM classes. 2011-02-25 10:24:35 +00:00
geom_int.h Use unit number allocation functions for GEOM minor numbers. 2004-10-25 12:28:28 +00:00
geom_io.c Correct bioq_disksort so that bioq_insert_tail() offers barrier semantic. 2010-09-02 19:40:28 +00:00
geom_kern.c Move the three geom kprocs as threads under a single pid. 2011-05-11 21:47:30 +00:00
geom_map.c Updates to geom_map from the author. 2011-05-05 14:43:09 +00:00
geom_mbr_enc.c /* -> /*- for copyright notices, minor format tweaks as necessary 2005-01-06 18:27:30 +00:00
geom_mbr.c Avoid to check the same cache line/variable from all the locking 2012-01-28 14:00:21 +00:00
geom_pc98_enc.c Fix signed vs unsigned warning. 2005-05-01 09:44:50 +00:00
geom_pc98.c Avoid to check the same cache line/variable from all the locking 2012-01-28 14:00:21 +00:00
geom_redboot.c - Give geom_redboot taste of flash/spi. Now there is another provider 2010-02-03 01:12:19 +00:00
geom_slice.c Change the way in which zero stripesize is handled. Instead of reporting 2010-01-06 13:14:37 +00:00
geom_slice.h Allow to use g_slice_orphan() from outside. 2006-02-18 11:21:17 +00:00
geom_subr.c Plumb device physical path reporting from CAM devices, through GEOM and 2011-06-14 17:10:32 +00:00
geom_sunlabel_enc.c Support VTOC volume names. This can be useful to distinguish multiple 2005-03-30 09:33:10 +00:00
geom_sunlabel.c
geom_vfs.c Close race between geom destruction on g_vfs_close() when softc destroyed 2011-12-02 17:09:48 +00:00
geom_vfs.h Remove the struct thread unuseful argument from bufobj interface. 2008-10-10 21:23:50 +00:00
geom_vol_ffs.c Add some FEATURE macros for various GEOM classes. 2011-02-25 10:24:35 +00:00
geom.h Add some spare fields to the g_class and g_geom structures needed to implement 2011-07-17 20:35:30 +00:00
notes For removable devices without media we set a zero mediasize but a non-zero 2004-09-05 21:15:58 +00:00