The layered file systems hashlists currently have to work on locked vnodes as the vnode operations returning vnodes return them locked. This leads to some very dirty hacks -- see layer_node_find() from sys/miscfs/genfs/layer_subr.c for example. The best solution is to change these vnode operations to return unlocked (and referenced) vnodes. The attached diff implements this change for operations create, mknod, mkdir and symlink. It passes the atf test suite and some file system stress tests I use here. Comments or objections anyone? -- J. Hannken-Illjes - hannken%eis.cs.tu-bs.de@localhost - TU Braunschweig (Germany)
Attachment:
vnode-pass2a.diff
Description: Binary data