Soft Updates一项消除大多数同步写操作的技术(2)
http://tech.ddvip.com 2006年04月01日 社区交流
本文详细介绍Soft Updates一项消除大多数同步写操作的技术(2)
依赖关系的状态。绝大多数依赖关系结构拥有一系列标志来描述相关关系的完成状态。被改动过的缓存块可能在任何时刻写入磁盘。I/O系统将缓冲区交给SoftUpdates程序(在磁盘写入之前和之后)时,与之关联的状态将确定将进行的操作。尽管不同的结构有不同意义的状态,但三个主要的、普适的状态是:
附着(ATTACHED)
此标志表示包含此依赖关系结构的缓冲区尚未被写盘。当包括必须回滚的依赖关系的缓冲区写盘之前,这一标志将被清零,以体现在缓冲区中的回滚。当写盘完成时,此标志被清零的那些依赖关系结构对应的缓冲区将恢复原状。所以,如果此标志复位,则绝不能释放对应的依赖关系,因为它包括需要进行恢复操作,此时释放将造成这些信息丢失。
依附更新已完成(DEPCOMPLETE)
此标志表示是否所有关联的依赖关系已完成。写盘开始前,如果此标志被复位,则依赖关系描述的更新应被回滚。例如,在与新分配的i-节点或数据块关联的依赖关系中这个标志被置位而相关的位映射表被写盘时。
完成(COMPLETE)
此标志表示当前依赖关系结构所追踪的所有更新都已经写盘。对某些依赖关系,此标志被复位时,则写入磁盘之前相关更新会回滚。例如,新分配的数据块写入完成时,这个标志将被置位。
最后,写盘完成,并且ATTACHED、DEPCOMPLETE和COMPLETE三个标志都被置位时,这个结构就可以释放了。考虑处理由allocdirect结构所追踪的新分配数据块的过程的例子。ATTACHED标志将在分配结构时作为初值置位。在反映这一情况的位映射表写盘之后,DEPCOMPLETE标志将置位,而COMPLETE标志将在新块内容写盘后被置位。如果声明这个块的i-节点的DEPCOMPLETE和COMPLETE标志中至少有一个没有被置位时系统发出同步请求,则ATTACHED标志将被复位并进行适当的回滚操作;i-节点写入之后,缓冲区数据将恢复。不同依赖关系中的不同标志将在后文描述。
责编:豆豆技术应用