[00:15:50] --- reuteras has left [00:27:09] --- Russ has become available [03:16:08] --- Russ has left: Disconnected [04:04:21] --- steven.jenkins has left [04:33:24] --- geekosaur has left [04:58:53] --- geekosaur has become available [05:18:33] --- reuteras has become available [05:52:44] --- meffie has become available [05:52:57] --- meffie has left [05:53:01] --- meffie has become available [07:30:59] --- deason has become available [07:39:34] --- reuteras has left [08:54:54] --- rra has become available [08:56:54] --- jaltman has left: Replaced by new connection [08:56:55] --- jaltman has become available [08:57:35] --- jaltman has left: Disconnected [08:59:00] --- jaltman has become available [10:52:49] --- jaltman has left: Disconnected [10:53:02] --- jaltman has become available [11:05:43] --- meffie has left [11:33:08] --- meffie has become available [12:19:56] --- phalenor has left [12:31:49] --- phalenor has become available [14:08:54] --- phalenor has left [14:18:55] --- phalenor has become available [14:55:58] --- meffie has left [15:36:42] --- deason has left [16:16:31] --- deason has become available [17:25:43] --- geekosaur has left [17:25:49] --- geekosaur has become available [17:53:39] --- rra has left: Disconnected [18:13:34] --- Russ has become available [21:22:10] I am rather disturbed that this removes the trivial deadlock that I can see in lookup ... diff --git a/src/afs/FBSD/osi_vnodeops.c b/src/afs/FBSD/osi_vnodeops.c index cbd94d7..5215642 100644 --- a/src/afs/FBSD/osi_vnodeops.c +++ b/src/afs/FBSD/osi_vnodeops.c @@ -531,7 +531,9 @@ afs_vop_lookup(ap) * we also always return the vnode locked. */ if (flags & ISDOTDOT) { + MA_VOP_UNLOCK(dvp, 0, p); ma_vn_lock(vp, LK_EXCLUSIVE | LK_RETRY, p); + ma_vn_lock(dvp, LK_EXCLUSIVE | LK_RETRY, p); /* always return the child locked */ if (lockparent && (flags & ISLASTCN) && (error = ma_vn_lock(dvp, LK_EXCLUSIVE, p))) { (I also think lookup should probably be rewritten from scratch, but ...) [21:32:57] --- jaltman has left: Replaced by new connection [21:32:58] --- jaltman has become available [21:44:05] --- deason has left [21:51:03] why? lock order matters [21:55:40] --- jaltman has left: Disconnected [21:55:58] --- jaltman has become available [22:12:14] --- jaltman has left: Disconnected [22:19:39] --- jaltman has become available [22:19:48] Sure. But it feels like fixing the symptom instead of fixing the problem. I kind of want to see dvp unlocked much earlier in the ISDOTDOT case, maybe even before the rpc. [23:21:10] --- reuteras has become available