Soft Updates一项消除大多数同步写操作的技术(2)

http://tech.ddvip.com   2006年04月01日    社区交流

本文详细介绍Soft Updates一项消除大多数同步写操作的技术(2)

  3.2 追踪位映射表依赖关系

  图1 描述了bmsafemap结构,它追踪位映射表更新。每个包含柱面组块的缓冲区都有自己的bmsafemap结构。和其他依赖关系结构一样,bmsafemap结构的第一项是一个worklist结构。当从柱面组中分配i-节点、直接块或间接块时,将创建一个相应的依赖关系结构,并连接到相应的bmsafemap表中。新分配的i-节点将由接到bmsafemap inodedep链表头指针的一个inodedep表示。类似地,直接、间接引用的新分块将分别通过接到bmsafemap上的allocdirect和allocindir表示。由于FFS代码的设计,块成功分配到代码的其余部分了解此情况有间隔。这段时间块将被一个连到bmsafemap newblk链表头指针的newblk结构描述。内核选定写入的柱面组块之后,SoftUpdates在写入完成时得到通知。它于是遍历i-节点和直接、间接块以及新分块链表,为每个依赖结构设置DEPCOMPLETE标志,并将依赖关系从表中删去。当所有的依赖关系表被清空之后,bmsafemap结构就可以被释放了。使用了多个表,因为这样更快,且能提供更好的类型-安全特性。

br>

  3.3 i-节点依赖关系追踪

  我们将通过inodedep结构来追踪i-节点更新。基本上,worklist以及"状态"字段被用来描述依赖关系结构。"filesystem ptr[文件系统指针]"和"inode number[i-节点编号]"字段用来唯一标示i-节点。当新分配一个i-节点时,它的inodedep将被挂接到bmsafemap结构的"inodedep链表"上。在那里,"deps list[依赖关系列表]"将链接新的inodedeps以及指向柱面组块的"dep bp[依赖关系块指针]"。其它inodedep字段将在后续的小节中解释。

责编:豆豆技术应用

正在加载评论...