[pnfs] [PATCH] check that the owner is unlocking

J. Bruce Fields bfields at fieldses.org
Fri May 16 12:59:35 EDT 2008


On Fri, May 16, 2008 at 09:22:40AM -0700, Marc Eshel wrote:
> "J. Bruce Fields" <bfields at fieldses.org> wrote on 05/16/2008 07:35:14 AM:
> 
> > "J. Bruce Fields" <bfields at fieldses.org> 
> > 05/16/2008 07:35 AM
> > 
> > To
> > 
> > Marc Eshel <eshel at almaden.ibm.com>
> > 
> > cc
> > 
> > pnfs at linux-nfs.org
> > 
> > Subject
> > 
> > Re: [pnfs] [PATCH] check that the owner is unlocking
> > 
> > On Thu, May 15, 2008 at 03:26:49PM -0700, Marc Eshel wrote:
> > > From: Marc Eshel <eshel at almaden.ibm.com>
> > > 
> > > 
> > > ---
> > > 
> > >  fs/nfsd/nfs4state.c |    1 +
> > >  1 files changed, 1 insertions(+), 0 deletions(-)
> > > 
> > > diff --git a/fs/nfsd/nfs4state.c b/fs/nfsd/nfs4state.c
> > > index 20a4b8e..b75a863 100644
> > > --- a/fs/nfsd/nfs4state.c
> > > +++ b/fs/nfsd/nfs4state.c
> > > @@ -134,6 +134,7 @@ nfs4_lock_state(void)
> > >  void
> > >  nfs4_unlock_state(void)
> > >  {
> > > +   BUG_ON(client_mutex_owner != current_thread_info());
> > >     client_mutex_owner = NULL;
> > >     mutex_unlock(&client_mutex);
> > 
> > The mutex code should already check for this.
> > 
> 
> but by than client_mutex_owner is already NULL

Right, but I don't understand why the client_mutex_owner is needed, when
the struct mutex already has an owner field, and already uses it to do
the above check for us; see include/linux/mutex.h.  Looks like you need
CONFIG_DEBUG_MUTEXES defined (under Kernel Hacking->"Mutex debugging:
basic checks").

--b.

> so if some thread unlocks 
> a lock that it doesn't own it will reset the real owner to NULL which will 
> confuse functions like nfs4_lock_state_nested().


More information about the pNFS mailing list