Hi, KeyValueStore is a implementation of ObjectStore which use KeyValueDB as main data access interface. It discard FileJournal and reply to the backend of KeyValueDB to get the atomic of transaction. KeyValueStore make a object composed of multi key/value pair in the side of KeyValueDB. Much like DBObjectMap, each object has a header to manage the metadata such as size, bitmap. As I mentioned in previous mail, DBObjectMap has some defect in KeyValueStore. GenericObjectMap is aimed to provide more generic KeyValueDB wrapper. The main differences between GenericObjectMap and DBObjectMap contains: 1. add "coll_t" field to the key of header 2. expose Header to successor and all write operations are accessed via header 3. expose key prefix to caller I think point 2 is the primary change may confuse. KeyValueStore use GenericObjectMap to implement ObjectStore interfaces. it will combine all operations in the same transaction and apply in to the time. Like OSDMap::Incremental, here we need to make the former operation visible to the following operations in the same transaction. The header and data created/modified should be know by the following operations. So GenericObjectMap will expose "header" to caller among write operations. StripObjectMap is the successor of GenericObjectMap and used by KeyValueStore directly. It encapsulate the interface of GenericObjectMap and make more suitable for KeyValueStore. Best regards, Haomai Wang, UnitedStack Inc. -- To unsubscribe from this list: send the line "unsubscribe ceph-devel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html