The locking/waiting hierarchy here is this: - lock scp's bufCreateLock - resv multiple simul. buffers reservation - lock buffer I/O flags - lock buffer's mutex - smb_fid_t mutex - scache flags (storing, fetching, etc); if set for more than one vnode in a volume, must be set in vnode order (see cm_Rename). - scache mutex - lock tran_globalLock - lock buf_globalLock - userp->mx - lock cm_scacheLock - volp->mx - cm_connLock (locked before cm_userLock in cm_GCConnections) - cm_cellLock - cm_serverLock (locked after cm_cellLock in cm_IoctlGetCell) - other global locks - cm_aclLock (locked before cm_userLock throughout cm_aclent.c) - cm_userLock