public void pushWriteLockedEdge ( Inode inode , String childName ) { Preconditions . checkState ( ! endsInInode ( ) ) ; Preconditions . checkState ( mLockMode == LockMode . WRITE ) ; if ( mEntries . isEmpty ( ) ) { // Cannot modify the base lock list, and the new inode is already implicitly locked. return ; } int edgeIndex = mEntries . size ( ) - 1 ; lockInodeInternal ( inode , LockMode . READ ) ; lockEdgeInternal ( childName , LockMode . WRITE ) ; downgradeEdge ( edgeIndex ) ; }
Leapfrogs the edge write lock forward reducing the lock list s write - locked scope .