CurveFS rename 接口实现方案rename 流程举例说明? 例 1:rename A→B (A 存在,而 B 不存在) 例 2:rename A→C (A 存在,而 C 存在) 4. 当 2 个操作的 dentry 属于同一个 copyset 有什么不一样? 背景 当前 curvefs 并没有实现 rename 接口,本文档是对 rename 接口实现的调研及方案设计。 rename 操作,主要操作的是 dentry,如 rename 整体思路如下: 在 MDS 所有 copyset 中增加一个 txid 字段,保存当前 copyset 已成功的事务 id(该事务 id 顺序递增,事务每成功一次则加一) 每次 rename 开始时, (其实就是创建副本,不管是删除/创建/更改都是创建相应 将 srcDentry, dstDentry 所在 copyset 对应的 txid 分别加 1 (copyset_txid+1) 去删除/创建/修改 去删除/创建/修改 dentry copyset_txid+1 为 key 的副本,原始 dentry 不动),并设置 PendingTx 为本次事务 如果上一步骤成功了,就提交事务,将 srcDentry, dstDentry 所在 copyset 的 txid 都加 1(这一步是通过 etcd 的事务保证的),如果上一步或这一步失败,因为 txid 不变,原始数据版本也在,还是保证原子性(其实就是一个 txid0 码力 | 15 页 | 555.93 KB | 6 月前3
共 1 条
- 1













