Fstrans(9) is currently implemented with rwlocks. Unfortunately we have to take and release the rwlock for every vnode operation even when the file system is not suspending or suspended.
Attached is a complete rewrite based on passive serialization and condvars. The fast paths (fstrans_start/fstrans_done on a file system not suspended or suspending and fscow_run) now run without locks or other atomic operations. Suspension and cow handler insertion and removal is done with mutex / condvars. As the API remains unchanged it could be pulled up to NetBSD-6. Will commit by end of week -- comments? -- J. Hannken-Illjes - hann...@eis.cs.tu-bs.de - TU Braunschweig (Germany)
vfs_trans.c
Description: Binary data