From aea985c14251090eaf8770ec217fae6881491bb8 Mon Sep 17 00:00:00 2001 From: Greg Farnum Date: Wed, 9 Oct 2013 15:07:07 -0700 Subject: [PATCH] Objecter: expose the copy-get()'ed object's category In the OSD, store the category in the CopyOp using this. Signed-off-by: Greg Farnum --- src/osd/ReplicatedPG.cc | 4 ++-- src/osd/ReplicatedPG.h | 1 + src/osdc/Objecter.h | 12 +++++++++--- 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/src/osd/ReplicatedPG.cc b/src/osd/ReplicatedPG.cc index 16f12c1d2720..c6a92830feb9 100644 --- a/src/osd/ReplicatedPG.cc +++ b/src/osd/ReplicatedPG.cc @@ -4380,8 +4380,8 @@ void ReplicatedPG::_copy_some(ObjectContextRef obc, CopyOpRef cop) assert(cop->cursor.is_initial()); } op.copy_get(&cop->cursor, cct->_conf->osd_copyfrom_max_chunk, - &cop->size, &cop->mtime, &cop->attrs, - &cop->data, &cop->omap, + &cop->size, &cop->mtime, &cop->category, + &cop->attrs, &cop->data, &cop->omap, &cop->rval); C_Copyfrom *fin = new C_Copyfrom(this, obc->obs.oi.soid, diff --git a/src/osd/ReplicatedPG.h b/src/osd/ReplicatedPG.h index fa93c8d0dfce..afa0ca7902ed 100644 --- a/src/osd/ReplicatedPG.h +++ b/src/osd/ReplicatedPG.h @@ -108,6 +108,7 @@ public: object_copy_cursor_t cursor; uint64_t size; utime_t mtime; + string category; map attrs; bufferlist data; map omap; diff --git a/src/osdc/Objecter.h b/src/osdc/Objecter.h index 9b89f9586f4c..41973ddaf5ff 100644 --- a/src/osdc/Objecter.h +++ b/src/osdc/Objecter.h @@ -569,6 +569,7 @@ struct ObjectOperation { object_copy_cursor_t *cursor; uint64_t *out_size; utime_t *out_mtime; + string *out_category; std::map *out_attrs; bufferlist *out_data; std::map *out_omap; @@ -576,13 +577,14 @@ struct ObjectOperation { C_ObjectOperation_copyget(object_copy_cursor_t *c, uint64_t *s, utime_t *m, + string *cat, std::map *a, bufferlist *d, std::map *o, int *r) : cursor(c), - out_size(s), out_mtime(m), out_attrs(a), - out_data(d), out_omap(o), prval(r) {} + out_size(s), out_mtime(m), out_category(cat), + out_attrs(a), out_data(d), out_omap(o), prval(r) {} void finish(int r) { if (r < 0) return; @@ -594,6 +596,8 @@ struct ObjectOperation { *out_size = copy_reply.size; if (out_mtime) *out_mtime = copy_reply.mtime; + if (out_category) + *out_category = copy_reply.category; if (out_attrs) *out_attrs = copy_reply.attrs; if (out_data) @@ -612,6 +616,7 @@ struct ObjectOperation { uint64_t max, uint64_t *out_size, utime_t *out_mtime, + string *out_category, std::map *out_attrs, bufferlist *out_data, std::map *out_omap, @@ -623,7 +628,8 @@ struct ObjectOperation { unsigned p = ops.size() - 1; out_rval[p] = prval; C_ObjectOperation_copyget *h = - new C_ObjectOperation_copyget(cursor, out_size, out_mtime, out_attrs, out_data, out_omap, prval); + new C_ObjectOperation_copyget(cursor, out_size, out_mtime, out_category, + out_attrs, out_data, out_omap, prval); out_bl[p] = &h->bl; out_handler[p] = h; } -- 2.47.3