--- ./kernel/ve/vecalls.c.nfsdebug 2007-07-27 14:54:01.000000000 +0400 +++ ./kernel/ve/vecalls.c 2007-07-27 16:08:32.000000000 +0400 @@ -1830,6 +1830,8 @@ static void env_cleanup(struct ve_struct down_read(&ve->op_sem); old_ve = set_exec_env(ve); + BUG_ON(ve->is_running); + ve_hook_iterate_fini(VE_SS_CHAIN, ve); fini_venet(ve); --- ./net/sunrpc/xprtsock.c.nfsdebug 2007-07-27 14:54:01.000000000 +0400 +++ ./net/sunrpc/xprtsock.c 2007-07-27 16:35:40.000000000 +0400 @@ -1035,6 +1035,18 @@ static inline void xs_reclassify_socket( } #endif +int vexprt_debug(struct ve_struct *ve) +{ + if (ve->_loopback_dev != NULL) + return 0; + + printk("!!! VE%d is_running=%d is_locked=%d count=%d pcount=%d\n", + ve->veid, ve->is_running, ve->is_locked, + atomic_read(&ve->counter), + atomic_read(&ve->pcounter)); + return -EFAULT; +} + /** * xs_udp_connect_worker - set up a UDP socket * @args: RPC transport to connect @@ -1050,6 +1062,8 @@ static void xs_udp_connect_worker(void * ve = set_exec_env(xprt->owner_env); down_read(&ve->op_sem); + if (vexprt_debug(ve) < 0) + goto out; if (!ve->is_running) goto out; if (xprt->shutdown || xprt->addr.sin_port == 0)