On Mon, Aug 28, 2017 at 02:43:05PM +1000, NeilBrown wrote: > On Fri, Aug 25 2017, J. Bruce Fields wrote: > > > From: "J. Bruce Fields" <bfields@xxxxxxxxxx> > > > > Pass around a new struct deleg_break_ctl instead of pointers to inode > > pointers; in a future patch I want to use this to pass a little more > > information from the nfs server to the lease code. > > The information you are passing from the nfs server to the lease code is > largely ignored by the lease code and is passed back to the nfs server, > in the sm_breaker_owns_lease call back. > > If try_break_deleg() passed the 'delegated_inode' pointer though to > __break_lease(), it could pass it through any_leases_conflict() and > leases_conflict() to the lm_breaker_owns_lease() callback. > Then container_of() could be used to access whatever other data nfsd had > stashed near the inode. The common code wouldn't need to know any of > the details. The new information that we need is some notion of "who" (really, which NFSv4 client) is doing the operation (unlink, whatever) that breaks the lease. We can't get that information from an inode pointer. I may just not understand your suggestion. --b.