summaryrefslogtreecommitdiffstats
path: root/doc/dev/osd_internals/refcount.rst
diff options
context:
space:
mode:
authorSamuel Just <sjust@redhat.com>2020-03-13 01:12:01 +0100
committerSamuel Just <sjust@redhat.com>2020-05-20 06:59:04 +0200
commitbe4093a61e66e81fb32aafc54e39a655d3259d2a (patch)
treee89e2a52402c05efe32996101b38aa3de9dea1ee /doc/dev/osd_internals/refcount.rst
parentdoc: break deduplication.rst int several files (diff)
downloadceph-be4093a61e66e81fb32aafc54e39a655d3259d2a.tar.xz
ceph-be4093a61e66e81fb32aafc54e39a655d3259d2a.zip
doc: add more information for manifest tiering
Signed-off-by: Samuel Just <sjust@redhat.com> Signed-off-by: Myoungwon Oh <myoungwon.oh@samsung.com>
Diffstat (limited to '')
-rw-r--r--doc/dev/osd_internals/refcount.rst45
1 files changed, 45 insertions, 0 deletions
diff --git a/doc/dev/osd_internals/refcount.rst b/doc/dev/osd_internals/refcount.rst
new file mode 100644
index 00000000000..4d75ae01949
--- /dev/null
+++ b/doc/dev/osd_internals/refcount.rst
@@ -0,0 +1,45 @@
+========
+Refcount
+========
+
+
+Introduction
+============
+
+Dedupliation, as described in ../deduplication.rst, needs a way to
+maintain a target pool of deduplicated chunks with atomic ref
+refcounting. To that end, there exists an osd object class
+refcount responsible for using the object class machinery to
+maintain refcounts on deduped chunks and ultimately remove them
+as the refcount hits 0.
+
+Class Interface
+===============
+
+See cls/refcount/cls_refcount_client*
+
+* cls_refcount_get
+
+ Atomically increments the refcount with specified tag ::
+
+ void cls_refcount_get(librados::ObjectWriteOperation& op, const string& tag, bool implicit_ref = false);
+
+* cls_refcount_put
+
+ Atomically decrements the refcount specified by passed tag ::
+
+ void cls_refcount_put(librados::ObjectWriteOperation& op, const string& tag, bool implicit_ref = false);
+
+* cls_refcount_Set
+
+ Atomically sets the set of refcounts with passed list of tags ::
+
+ void cls_refcount_set(librados::ObjectWriteOperation& op, list<string>& refs);
+
+* cls_refcount_read
+
+ Dumps the current set of ref tags for the object ::
+
+ int cls_refcount_read(librados::IoCtx& io_ctx, string& oid, list<string> *refs, bool implicit_ref = false);
+
+