当试图写入日记的许多事务之一被破坏时,我试图了解jbd2日记的行为。
根据我的理解,对于写操作,首先执行写操作以将数据持久保存到磁盘上的位置,然后将相应的元数据事务写到日志上。元数据更新的格式如下-1)事务描述符块2)元数据块和3)事务提交块。对于多个事务,这将继续。最后在检查点期间,元数据 与这些事务相对应的数据将被写入磁盘位置。
我还了解,如果在检查点发生之前文件系统崩溃,则在重播期间需要在事务之间保持顺序。也就是说,如果我们有3个交易T1,T2,T3,则会依次重播它们。这是为了避免出现相同块被覆盖或在两个连续事务中删除和随后重新分配相同块的情况。
我的问题是在一个特殊情况下:T1,T2和T3是三个连续的事务,如果T1和T3维护说M1元数据块的元数据变化,而T2存储M2块的元数据变化。并且M1和M2完全不重叠,在这种情况下,如果T2损坏了,T3和所有后续交易会被丢弃吗?