summaryrefslogtreecommitdiffstats
path: root/src/ceph/doc/dev/versions.rst
diff options
context:
space:
mode:
authorQiaowei Ren <qiaowei.ren@intel.com>2018-03-01 14:38:11 +0800
committerQiaowei Ren <qiaowei.ren@intel.com>2018-03-01 14:38:11 +0800
commit7da45d65be36d36b880cc55c5036e96c24b53f00 (patch)
treed4f944eb4f8f8de50a9a7584ffa408dc3a3185b2 /src/ceph/doc/dev/versions.rst
parent691462d09d0987b47e112d6ee8740375df3c51b2 (diff)
remove ceph code
This patch removes initial ceph code, due to license issue. Change-Id: I092d44f601cdf34aed92300fe13214925563081c Signed-off-by: Qiaowei Ren <qiaowei.ren@intel.com>
Diffstat (limited to 'src/ceph/doc/dev/versions.rst')
-rw-r--r--src/ceph/doc/dev/versions.rst42
1 files changed, 0 insertions, 42 deletions
diff --git a/src/ceph/doc/dev/versions.rst b/src/ceph/doc/dev/versions.rst
deleted file mode 100644
index 34ed747..0000000
--- a/src/ceph/doc/dev/versions.rst
+++ /dev/null
@@ -1,42 +0,0 @@
-==================
-Public OSD Version
-==================
-
-We maintain two versions on disk: an eversion_t pg_log.head and a
-version_t info.user_version. Each object is tagged with both the pg
-version and user_version it was last modified with. The PG version is
-modified by manipulating OpContext::at_version and then persisting it
-to the pg log as transactions, and is incremented in all the places it
-used to be. The user_version is modified by manipulating the new
-OpContext::user_at_version and is also persisted via the pg log
-transactions.
-user_at_version is modified only in PrimaryLogPG::prepare_transaction
-when the op was a "user modify" (a non-watch write), and the durable
-user_version is updated according to the following rules:
-1) set user_at_version to the maximum of ctx->new_obs.oi.user_version+1
-and info.last_user_version+1.
-2) set user_at_version to the maximum of itself and
-ctx->at_version.version.
-3) ctx->new_obs.oi.user_version = ctx->user_at_version (to change the
-object's user_version)
-
-This set of update semantics mean that for traditional pools the
-user_version will be equal to the past reassert_version, while for
-caching pools the object and PG user-version will be able to cross
-pools without making a total mess of things.
-In order to support old clients, we keep the old reassert_version but
-rename it to "bad_replay_version"; we fill it in as before: for writes
-it is set to the at_version (and is the proper replay version); for
-watches it is set to our user version; for ENOENT replies it is set to
-the replay version's epoch but the user_version's version. We also now
-fill in the version_t portion of the bad_replay_version on read ops as
-well as write ops, which should be fine for all old clients.
-
-For new clients, we prevent them from reading bad_replay_version and
-add two proper members: user_version and replay_version; user_version
-is filled in on every operation (reads included) while replay_version
-is filled in for writes.
-
-The objclass function get_current_version() now always returns the
-pg->info.last_user_version, which means it is guaranteed to contain
-the version of the last user update in the PG (including on reads!).