On Wed, Sep 24, 2008 at 01:26:08PM -0400, Trond Myklebust wrote: > On Wed, 2008-09-24 at 13:21 -0400, J. Bruce Fields wrote: > > > Well the current implementation is certainly broken. Look at what > > > happens if I clone the rpc_clnt... > > > > Hence the comment that "we assume this rpc_client is the last user of > > the program." I believe that assumption is correct in the case of nfsd > > callbacks, so Benny's patch is at least not broken--just a little > > ad-hoc. > > > > So the question is whether the above solution, which addresses only this > > particular case, is sufficient, or whether we'd like something more > > general, like adding a reference count to the program along with a > > free_program callback called only on the final put. > > It's broken... If by "broken" you mean, "introduces a new kernel bug", I don't see it. The new free_rpc_program callback is set only in fs/nfsd/nfs4callback.c:do_probe_callback(). For all other programs it is NULL, thus there's no change of behavior. And rpc_clone_client() is never called on the client created in do_probe_callback(). If your argument that it's ugly to introduce a rule like that requires you never to call rpc_clone_client on a cllient with certain properties, then I can agree. (In that case, does a reference count on the program look like an acceptable solution?) If there's some other bug, then I'd like to understand. --b. -- 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