Subject: Re: CVS commit: src
To: None <hannken@netbsd.org>
From: YAMAMOTO Takashi <yamt@mwd.biglobe.ne.jp>
List: tech-kern
Date: 06/21/2004 09:09:10
> > > > > Module Name: src
> > > > > Committed By: hannken
> > > > > Date: Tue May 25 14:55:47 UTC 2004
> > > >
> > > > > - Add function transferlockers to transfer any waiting processes from
> > > > > one lock to another.
> > > >
> > > > i strongly object against adding a new fancy lockmgr feature.
> > > > in this case, it should be handled in an ffs-internal manner.
> > >
> > > Well, what else should he have done? He has to move the sleepers from one
> > > lock to another, given what he's doing (I looked hard at this at the time
> > > it was added). At the time he decides to do the transfer, the sleepers are
> > > ALREADY asleep on a lock. So there's no ffs-internal way to handle this;
> > > the sleepers are already outside of the ffs code.
> >
> > i think that having some tricks in VOP_LOCK/UNLOCK/ISLOCKED is enough.
> > (in addition to stopping exporting v_vnlock, of course.)
>
> What "tricks" could merge locks A and B into B?
something like this:
ffs_lock(...)
{
genfs_lock(vp, ...);
if (vp is snapshot) {
lockmgr(snaplk, ...);
}
}
YAMAMOTO Takashi