From: Loic Dachary Date: Wed, 28 Aug 2013 21:04:26 +0000 (+0200) Subject: doc: erasure code ghobject is made of gen_t + shard_t X-Git-Tag: v0.71~170^2~2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=3c9f8498c88ac600eeedbe6a033b435979704eb9;p=ceph.git doc: erasure code ghobject is made of gen_t + shard_t Signed-off-by: Loic Dachary --- diff --git a/doc/dev/osd_internals/erasure_coding/pgbackend.rst b/doc/dev/osd_internals/erasure_coding/pgbackend.rst index 4519ee34f9c1..7b3b6f533269 100644 --- a/doc/dev/osd_internals/erasure_coding/pgbackend.rst +++ b/doc/dev/osd_internals/erasure_coding/pgbackend.rst @@ -79,10 +79,13 @@ Core Changes: APPEND, DELETE, (SET|RM)ATTR log entries. - The filestore needs to be able to deal with multiply versioned hobjects. This probably means adapting the filestore internally to - use a vhobject which is basically a pair. The - version needs to be included in the on-disk filename. An interface - needs to be added to get all versions of a particular hobject_t or - the most recently versioned instance of a particular hobject_t. + use a ghobject which is basically a tuple. The gen_t + shard_t need to be included in the on-disk + filename. gen_t is a unique object identifier to make sure there + are no name collisions when object N is created + + deleted + created again. An interface needs to be added to get all + versions of a particular hobject_t or the most recently versioned + instance of a particular hobject_t. PGBackend Interfaces: @@ -178,7 +181,7 @@ acting set have different pieces of the erasure coding scheme and are not interchangeable. Worse, crush might cause chunk 2 to be written to an osd which happens already to contain an (old) copy of chunk 4. This means that the OSD and PG messages need to work in terms of a -type like pair in order to distinguish different pg +type like pair in order to distinguish different pg chunks on a single OSD. Because the mapping of object name to object in the filestore must @@ -188,14 +191,14 @@ include the chunk id in the object key. Core changes: -- The filestore `vhobject_t needs to also include a chunk id +- The filestore `ghobject_t needs to also include a chunk id `_ making it more like - tuple. -- coll_t needs to include a chunk_id_t. + tuple. +- coll_t needs to include a shard_t. - The `OSD pg_map and similar pg mappings need to work in terms of a cpg_t `_ (essentially - pair). Similarly, pg->pg messages need to include - a chunk_id_t + pair). Similarly, pg->pg messages need to include + a shard_t - For client->PG messages, the OSD will need a way to know which PG chunk should get the message since the OSD may contain both a primary and non-primary chunk for the same pg