InodeLockList接口,表示在inode tree里一个加了锁的路径。
沿着path,inodes和edges都被加锁了。path可能从edge或inode任意一个开始。
锁列表总是包含了一定数量的读锁(0个或多个),随后跟随着一些数量的写锁(0个或多个)。
举个例子:
对 /a/b/c/d
进行加锁,c->d这个边是第一个写锁模式的元素,那么locked list可以表示成如下:
[->/, /, /->a, a, a->b, b, b->c, c, c->d*, d*]
其中 *
表示写锁模式, edges是边,由parentName指向childName。
locked list开头的 ->/
是一个伪边(pseudo-edge),用来让root能够使用WRITE_EDGE锁模式。
这个->/
edge只能通过lockRootEdge来加锁。
InodeLockList接口有两个实现类:CompositeInodeLockList和SimpleInodeLockList
InodeLockList接口定义了核心方法:
lockInode、lockEdge、lockRootEdge、pushWriteLockedEdge、unlockLastEdge、unlockLastInode
e