diff options
author | Greg Farnum <greg@inktank.com> | 2013-10-09 15:07:07 -0700 |
---|---|---|
committer | Greg Farnum <greg@inktank.com> | 2013-10-17 13:11:45 -0700 |
commit | 9326a95055fa0d9431f31e8619f646b5ea8e6fc1 (patch) | |
tree | b3b225ffeb93542ee731387e6a6a8e536d0ebcb6 | |
parent | b441406e308dc309a1801b64fea26ae967f5db67 (diff) | |
download | ceph-9326a95055fa0d9431f31e8619f646b5ea8e6fc1.tar.gz |
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 <greg@inktank.com>
-rw-r--r-- | src/osd/ReplicatedPG.cc | 4 | ||||
-rw-r--r-- | src/osd/ReplicatedPG.h | 1 | ||||
-rw-r--r-- | 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 65381b237d9..7ac102c188a 100644 --- a/src/osd/ReplicatedPG.cc +++ b/src/osd/ReplicatedPG.cc @@ -4370,8 +4370,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 a7c49bebb67..4486c9fae2d 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<string,bufferlist> attrs; bufferlist data; map<string,bufferlist> omap; diff --git a/src/osdc/Objecter.h b/src/osdc/Objecter.h index b48c6bfcc14..37c66103e0d 100644 --- a/src/osdc/Objecter.h +++ b/src/osdc/Objecter.h @@ -572,6 +572,7 @@ struct ObjectOperation { object_copy_cursor_t *cursor; uint64_t *out_size; utime_t *out_mtime; + string *out_category; std::map<std::string,bufferlist> *out_attrs; bufferlist *out_data; std::map<std::string,bufferlist> *out_omap; @@ -579,13 +580,14 @@ struct ObjectOperation { C_ObjectOperation_copyget(object_copy_cursor_t *c, uint64_t *s, utime_t *m, + string *cat, std::map<std::string,bufferlist> *a, bufferlist *d, std::map<std::string,bufferlist> *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; @@ -597,6 +599,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) @@ -616,6 +620,7 @@ struct ObjectOperation { uint64_t max, uint64_t *out_size, utime_t *out_mtime, + string *out_category, std::map<std::string,bufferlist> *out_attrs, bufferlist *out_data, std::map<std::string,bufferlist> *out_omap, @@ -627,7 +632,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; } |