Subject: Vnode locking issues
To: None <tech-kern@netbsd.org>
From: Julio M. Merino Vidal <jmmv84@gmail.com>
List: tech-kern
Date: 08/30/2005 18:50:36
Hi all,
While implementing tmpfs' vnode operations, I think I've found
several inconsistencies between the vnodeops(9) manual page
and existing code (as seen in ufs and msdosfs, for example)
as regards locking status. I'm going to put these inconsistencies
here so that we can either fix the manual page, the code or my
understanding on the whole issue.
- vnodeops(9) says that vop_getattr receives a locked vnode,
which must remain locked on exit. However, the operation
receives a locked or unlocked vnode, depending on the
situation.
- vnodeops(9) says that vop_link's dvp is locked on entry and
should remain locked on exit. However, file-systems do an
vput(dvp) before exiting the function, thus unlocking it.
- vnodeops(9) says that vop_rmdir should return with dvp and
vp locked. However, file-systems do an vput of both
vnodes; this means that dvp is unlocked upon return and that
vp is possibly invalid (if it has been immediately reclaimed),
so it cannot be locked.
Comments?
Thanks,
--=20
Julio M. Merino Vidal <jmmv84@gmail.com>
http://www.livejournal.com/users/jmmv/
The NetBSD Project - http://www.NetBSD.org/