diff options
author | Loic Dachary <loic@dachary.org> | 2013-08-28 23:04:26 +0200 |
---|---|---|
committer | Loic Dachary <loic@dachary.org> | 2013-09-04 12:33:15 +0200 |
commit | 3c9f8498c88ac600eeedbe6a033b435979704eb9 (patch) | |
tree | 4717673fd5b6dfbc67c099d047db7507491ce71e | |
parent | d9187a73c3e1f21f0be894e983feb4a7d495b729 (diff) | |
download | ceph-3c9f8498c88ac600eeedbe6a033b435979704eb9.tar.gz |
doc: erasure code ghobject is made of gen_t + shard_t
Signed-off-by: Loic Dachary <loic@dachary.org>
-rw-r--r-- | doc/dev/osd_internals/erasure_coding/pgbackend.rst | 23 |
1 files changed, 13 insertions, 10 deletions
diff --git a/doc/dev/osd_internals/erasure_coding/pgbackend.rst b/doc/dev/osd_internals/erasure_coding/pgbackend.rst index 4519ee34f9c..7b3b6f53326 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<version_t, hobject_t>. 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<hobject_t, gen_t, + shard_t>. 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<chunk_id_t, pg_t> in order to distinguish different pg +type like pair<shard_t, pg_t> 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 <http://tracker.ceph.com/issues/5862>`_ making it more like - tuple<hobject_t, version_t, chunk_id_t>. -- coll_t needs to include a chunk_id_t. + tuple<hobject_t, gen_t, shard_t>. +- 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 <http://tracker.ceph.com/issues/5863>`_ (essentially - pair<pg_t, chunk_id_t>). Similarly, pg->pg messages need to include - a chunk_id_t + pair<pg_t, shard_t>). 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 |