Re: Umount and delegation release thread syncronization

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, 2011-07-12 at 11:51 +0800, Ian Kent wrote: 
> On Mon, 2011-06-20 at 15:45 +0800, Ian Kent wrote:
> > Hi all,
> > 
> > I'm having difficulty working out how delegation release threads are
> > synchronized with umount.
> > 
> > For an information about the problem please see
> > https://bugzilla.kernel.org/show_bug.cgi?id=30882 and in particular
> > comment #28.
> > 
> > Can someone please give me a description of the sequence of events at
> > umount (aka. nfs4_kill_super() function calls). In particular how does
> > nfs_free_server() know that if nfs_super_return_all_delegations() starts
> > a thread that it is finished before freeing the server struct.
> 
> No response in almost a month. everyone must be really busy.
> 
> But does no-one know how this works?
> 
> Trond, could you have a look at the above bug and offer your input
> please.

The only code that seems dubious there is the line

clp = NFS_SERVER(delegation->inode)->nfs_client;

Both the delegation and the nfs_client are guaranteed to still be around
whenever nfs_expire_unreferenced_delegations() is called: the RCU
protection of the clp->cl_superblock and server->delegations lists
ensures that.

However the delegation->inode is not guaranteed to still exist...

The obvious fix is to pass the struct nfs_server as a parameter to
nfs_mark_return_delegation() instead of trying to derive it from the
inode.

Cheers
  Trond

-- 
Trond Myklebust
Linux NFS client maintainer

NetApp
Trond.Myklebust@xxxxxxxxxx
www.netapp.com

--
To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Filesystem Development]     [Linux USB Development]     [Linux Media Development]     [Video for Linux]     [Linux NILFS]     [Linux Audio Users]     [Yosemite Info]     [Linux SCSI]

  Powered by Linux