f2fs解析(五)什么叫做compacted summary

f2fs中普通的summary是长这样的:每一个段的SSA block中,前半部分是这个段的SSA,然后对于HOT_DATA以及COLD_DATA段,存放是的是nat journal 和 sit journal,最后是一个ssa_footer,footer里面存放的是这个段是一个DATA段还是NODE段等信息,这是一个典型SSA的block的分布;

但是对于compact段来说,它的布局是这样的:

//------------------------------------------------------

1. nat journal

2 sit journal

3 hot data summary

4 warm data summary

5 cold data summary

//--------------------------------------------------------

基本打破了正常情况下SSA段中的分布,为什么要搞这玩意儿?

为了能够让每次写checkpoint时更加集中,这样的话并不是把ssa的更新散落在ssa区域中了!让写更加集中!

有个疑问:每次写checkpoint,假设都是采用compacted方式存储ssa的信息,那么本次写会把上次的写的给覆盖,这要怎么办呢?

回答:这是无所谓的,当这个段不是curseg的时候,这个段的ssa会写到它真正的地地方,那才是它的家,而这里的compacted 方式的ssa存储都是对于当前段。

如果你还有疑问,那么我想这应该是如何读取这个很奇葩的compacted ssa的结构了!

首先nat_journal 和 sit_journal的结构都很好读取了,因为它们本来就是定长的,但是HOT/WARM/COLD却不是定长的。

没关系,checkpoint中存储了这三个DATA段中每一个段到底有几个SSA_ENTRY,所以直接简单地读取就可以!这样curseg的数据,就能够在另一次挂载的时候完璧归赵了!

 

posted @ 2015-10-25 19:38  honpey  阅读(1041)  评论(0编辑  收藏  举报