tech-kern archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: Move the vnode lock into file systems
On Sun, Jun 27, 2010 at 02:06:31AM +0000, David Holland wrote:
> On Sat, Jun 26, 2010 at 10:39:27AM +0200, Juergen Hannken-Illjes wrote:
> > The vnode lock operations currently work on a rw lock located inside the
> > vnode. I propose to move this lock into the file system node.
> >
> > This place is more logical as we lock a file system node and not a vnode.
> > This becomes clear if we think of a file system where one file system node
> > is attached to more than one vnode. Ptyfs allowing multiple mounts is such
> > a candidate.
>
> I'm not convinced that sharing locks at the VFS level is a good idea
> for such cases. While ptyfs specifically is pretty limited and
> unlikely to get into trouble, something more complex easily could. I
> don't think we ought to encourage this until we have a clear plan for
> rebind mounts and the resulting namespace-handling issues. (Since
> in a sense that's the general case of multiply-mounted ptyfs.)
>
> Since I'm pretty sure that a reasonable architecture for that will
> lead to sharing vnodes between the multiple mountpoints, and
> manifesting some kind of virtual name objects akin to Linux's dentries
> to keep track of which mountpoint is which, I don't see that it's
> necessary or desirable to specialize the locking...
>
> Do you have another use case in mind?
>
> (In the absence of some clear benefits I don't think it's a
> particularly good idea to paste a dozen or two copies of genfs_lock
> everywhere. But folding vcrackmgr() into genfs_lock and genfs_unlock
> seems like a fine idea.)
Primary goal is to abstract vnode locking into the vnode operations
only and therefore completely removing vlockmgr().
For now I can live with genfs_lock()/v_lock becoming the generic
locking interface where v_lock becomes genfs_lock()-private.
--
Juergen Hannken-Illjes - hannken%eis.cs.tu-bs.de@localhost - TU Braunschweig
(Germany)
Home |
Main Index |
Thread Index |
Old Index