On Fri, Nov 20, 2009 at 04:50:34PM -0500, Chuck Lever wrote: > On Nov 20, 2009, at 3:18 PM, Trond Myklebust wrote: >> On Thu, 2009-11-05 at 13:23 -0500, Chuck Lever wrote: >>> + static DEFINE_SPINLOCK(rpcb_create_local_lock); >>> + struct rpc_clnt *clnt, *clnt4; >>> + int result = 0; >>> + >>> + spin_lock(&rpcb_create_local_lock); >>> + if (rpcb_local_clnt) >>> + goto out; >>> + >>> + clnt = rpc_create(&args); >>> + if (IS_ERR(clnt)) { >>> + result = -PTR_ERR(clnt); >>> + goto out; >>> + } >>> >>> - return rpc_create(&args); >>> + clnt4 = rpc_bind_new_program(clnt, &rpcb_program, RPCBVERS_4); >>> + if (IS_ERR(clnt4)) { >>> + result = -PTR_ERR(clnt4); >>> + rpc_shutdown_client(clnt); >>> + goto out; >>> + } >>> + >>> + rpcb_local_clnt = clnt; >>> + rpcb_local_clnt4 = clnt4; >>> + >>> +out: >>> + spin_unlock(&rpcb_create_local_lock); >>> + return result; >>> } >> >> You can't have tested this. At the very least you cannot have done so >> with spinlock debugging enabled... > > I moved the rpcb_create_local_lock spinlock out of the function, enabled > every spinlock checkbox I could under kernel hacking, Including CONFIG_DEBUG_SPINLOCK_SLEEP? > and gave the guest > 2 CPUs. The spinlock checker reported a problem almost immediately with > XFS (even with just one virtual CPU), so I know it's enabled and working. > > I can't reproduce any problems with the rpcbind upcall here. Do you > have anything more specific? Isn't there an rpc ping in rpc_bind_new_program? --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