From 76aef7ec2eb1b6e7bf086f92ad23ae25acca015c Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Thu, 18 Jun 2015 15:57:45 -0700 Subject: [PATCH] osd: use explicit ghobject_t() ctor for omap operations Omap only works for non-ec pools, so we can use ghobject_t(hobject_t). Signed-off-by: Sage Weil --- src/osd/OSD.cc | 8 ++++---- src/osd/ReplicatedPG.cc | 16 +++++++++------- 2 files changed, 13 insertions(+), 11 deletions(-) diff --git a/src/osd/OSD.cc b/src/osd/OSD.cc index 5e60b0fb7f504..30fcf75a5a302 100644 --- a/src/osd/OSD.cc +++ b/src/osd/OSD.cc @@ -4095,7 +4095,7 @@ void TestOpsSocketHook::test_ops(OSDService *service, ObjectStore *store, val.append(valstr); newattrs[key] = val; - t.omap_setkeys(coll_t(pgid), obj, newattrs); + t.omap_setkeys(coll_t(pgid), ghobject_t(obj), newattrs); r = store->apply_transaction(t); if (r < 0) ss << "error=" << r; @@ -4107,7 +4107,7 @@ void TestOpsSocketHook::test_ops(OSDService *service, ObjectStore *store, cmd_getval(service->cct, cmdmap, "key", key); keys.insert(key); - t.omap_rmkeys(coll_t(pgid), obj, keys); + t.omap_rmkeys(coll_t(pgid), ghobject_t(obj), keys); r = store->apply_transaction(t); if (r < 0) ss << "error=" << r; @@ -4119,7 +4119,7 @@ void TestOpsSocketHook::test_ops(OSDService *service, ObjectStore *store, cmd_getval(service->cct, cmdmap, "header", headerstr); newheader.append(headerstr); - t.omap_setheader(coll_t(pgid), obj, newheader); + t.omap_setheader(coll_t(pgid), ghobject_t(obj), newheader); r = store->apply_transaction(t); if (r < 0) ss << "error=" << r; @@ -4129,7 +4129,7 @@ void TestOpsSocketHook::test_ops(OSDService *service, ObjectStore *store, //Debug: Output entire omap bufferlist hdrbl; map keyvals; - r = store->omap_get(coll_t(pgid), obj, &hdrbl, &keyvals); + r = store->omap_get(coll_t(pgid), ghobject_t(obj), &hdrbl, &keyvals); if (r >= 0) { ss << "header=" << string(hdrbl.c_str(), hdrbl.length()); for (map::iterator it = keyvals.begin(); diff --git a/src/osd/ReplicatedPG.cc b/src/osd/ReplicatedPG.cc index b0658980c5aea..02ac024cb3241 100644 --- a/src/osd/ReplicatedPG.cc +++ b/src/osd/ReplicatedPG.cc @@ -4717,7 +4717,7 @@ int ReplicatedPG::do_osd_ops(OpContext *ctx, vector& ops) if (!pool.info.require_rollback()) { ObjectMap::ObjectMapIterator iter = osd->store->get_omap_iterator( - coll, soid + coll, ghobject_t(soid) ); assert(iter); iter->upper_bound(start_after); @@ -4754,7 +4754,7 @@ int ReplicatedPG::do_osd_ops(OpContext *ctx, vector& ops) if (!pool.info.require_rollback()) { ObjectMap::ObjectMapIterator iter = osd->store->get_omap_iterator( - coll, soid + coll, ghobject_t(soid) ); if (!iter) { result = -ENOENT; @@ -4784,7 +4784,7 @@ int ReplicatedPG::do_osd_ops(OpContext *ctx, vector& ops) } ++ctx->num_read; { - osd->store->omap_get_header(coll, soid, &osd_op.outdata); + osd->store->omap_get_header(coll, ghobject_t(soid), &osd_op.outdata); ctx->delta_stats.num_rd_kb += SHIFT_ROUND_UP(osd_op.outdata.length(), 10); ctx->delta_stats.num_rd++; } @@ -4805,7 +4805,7 @@ int ReplicatedPG::do_osd_ops(OpContext *ctx, vector& ops) tracepoint(osd, do_osd_op_pre_omapgetvalsbykeys, soid.oid.name.c_str(), soid.snap.val, list_entries(keys_to_get).c_str()); map out; if (!pool.info.require_rollback()) { - osd->store->omap_get_values(coll, soid, keys_to_get, &out); + osd->store->omap_get_values(coll, ghobject_t(soid), keys_to_get, &out); } // else return empty omap entries ::encode(out, osd_op.outdata); ctx->delta_stats.num_rd_kb += SHIFT_ROUND_UP(osd_op.outdata.length(), 10); @@ -4840,7 +4840,8 @@ int ReplicatedPG::do_osd_ops(OpContext *ctx, vector& ops) i != assertions.end(); ++i) to_get.insert(i->first); - int r = osd->store->omap_get_values(coll, soid, to_get, &out); + int r = osd->store->omap_get_values(coll, ghobject_t(soid), + to_get, &out); if (r < 0) { result = r; break; @@ -6094,11 +6095,12 @@ int ReplicatedPG::fill_in_copy_get( if (left > 0 && !cursor.omap_complete) { assert(cursor.data_complete); if (cursor.omap_offset.empty()) { - osd->store->omap_get_header(coll, oi.soid, &reply_obj.omap_header); + osd->store->omap_get_header(coll, ghobject_t(oi.soid), + &reply_obj.omap_header); } bufferlist omap_data; ObjectMap::ObjectMapIterator iter = - osd->store->get_omap_iterator(coll, oi.soid); + osd->store->get_omap_iterator(coll, ghobject_t(oi.soid)); assert(iter); iter->upper_bound(cursor.omap_offset); for (; iter->valid(); iter->next()) { -- 2.39.5