--- //depot/vendor/freebsd/src/sys/netsmb/smb_conn.c 2008/02/25 18:50:26 +++ //depot/user/attilio/attilio_vfs/sys/netsmb/smb_conn.c 2008/11/02 17:41:07 @@ -65,7 +65,6 @@ static void smb_co_init(struct smb_connobj *cp, int level, char *ilockname, char *lockname, struct thread *td); static void smb_co_done(struct smb_connobj *cp); -static int smb_co_lockstatus(struct smb_connobj *cp, struct thread *td); static int smb_vc_disconnect(struct smb_vc *vcp); static void smb_vc_free(struct smb_connobj *cp); @@ -105,7 +104,7 @@ smb_sm_lockvclist(int flags, struct thread *td) { - return smb_co_lock(&smb_vclist, flags | LK_CANRECURSE, td); + return smb_co_lock(&smb_vclist, flags, td); } static void @@ -232,7 +231,7 @@ { SLIST_INIT(&cp->co_children); smb_sl_init(&cp->co_interlock, ilockname); - lockinit(&cp->co_lock, PZERO, lockname, 0, 0); + lockinit(&cp->co_lock, PZERO, lockname, 0, LK_CANRECURSE); cp->co_level = level; cp->co_usecount = 1; if (smb_co_lock(cp, LK_EXCLUSIVE, td) != 0) @@ -334,24 +333,11 @@ } int -smb_co_lockstatus(struct smb_connobj *cp, struct thread *td) -{ - return lockstatus(&cp->co_lock); -} - -int smb_co_lock(struct smb_connobj *cp, int flags, struct thread *td) { if (cp->co_flags & SMBO_GONE) return EINVAL; - if ((flags & LK_TYPE_MASK) == 0) - flags |= LK_EXCLUSIVE; - if (smb_co_lockstatus(cp, td) == LK_EXCLUSIVE && - (flags & LK_CANRECURSE) == 0) { - SMBERROR("recursive lock for object %d\n", cp->co_level); - return 0; - } return lockmgr(&cp->co_lock, flags, &cp->co_interlock); } @@ -364,8 +350,6 @@ static void smb_co_addchild(struct smb_connobj *parent, struct smb_connobj *child) { - KASSERT(smb_co_lockstatus(parent, curthread) == LK_EXCLUSIVE, ("smb_co_addchild: parent not locked")); - KASSERT(smb_co_lockstatus(child, curthread) == LK_EXCLUSIVE, ("smb_co_addchild: child not locked")); smb_co_ref(parent); SLIST_INSERT_HEAD(&parent->co_children, child, co_next);