]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
doc: erasure code ghobject is made of gen_t + shard_t
authorLoic Dachary <loic@dachary.org>
Wed, 28 Aug 2013 21:04:26 +0000 (23:04 +0200)
committerLoic Dachary <loic@dachary.org>
Wed, 4 Sep 2013 10:33:15 +0000 (12:33 +0200)
Signed-off-by: Loic Dachary <loic@dachary.org>
doc/dev/osd_internals/erasure_coding/pgbackend.rst

index 4519ee34f9c1db62bb25f451a5bd6a0fef53125e..7b3b6f5332699f50ec4103687054722d058de3d8 100644 (file)
@@ -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