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)

Attachment: vfs_trans.c
Description: Binary data

Reply via email to