summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLoic Dachary <loic@dachary.org>2013-08-28 23:04:26 +0200
committerLoic Dachary <loic@dachary.org>2013-09-04 12:33:15 +0200
commit3c9f8498c88ac600eeedbe6a033b435979704eb9 (patch)
tree4717673fd5b6dfbc67c099d047db7507491ce71e
parentd9187a73c3e1f21f0be894e983feb4a7d495b729 (diff)
downloadceph-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.rst23
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