From 338b4ed4bed787848fb94615b8d646548d36ea49 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Mon, 19 Oct 2015 14:54:06 -0400 Subject: [PATCH] osd/ReplicatedPG: use bl-based setkeys/rmkeys FIXME: what about the tracepoint? Signed-off-by: Sage Weil --- src/osd/ReplicatedPG.cc | 41 +++++++++++++++++++++++------------------ src/tracing/osd.tp | 8 ++------ 2 files changed, 25 insertions(+), 24 deletions(-) diff --git a/src/osd/ReplicatedPG.cc b/src/osd/ReplicatedPG.cc index 4ebeb6a6233da..1464d694ec93e 100644 --- a/src/osd/ReplicatedPG.cc +++ b/src/osd/ReplicatedPG.cc @@ -5455,7 +5455,7 @@ int ReplicatedPG::do_osd_ops(OpContext *ctx, vector& ops) case CEPH_OSD_OP_OMAPSETVALS: if (!pool.info.supports_omap()) { result = -EOPNOTSUPP; - tracepoint(osd, do_osd_op_pre_omapsetvals, soid.oid.name.c_str(), soid.snap.val, "???"); + tracepoint(osd, do_osd_op_pre_omapsetvals, soid.oid.name.c_str(), soid.snap.val); break; } ctx->mod_desc.mark_unrollbackable(); @@ -5464,23 +5464,28 @@ int ReplicatedPG::do_osd_ops(OpContext *ctx, vector& ops) if (maybe_create_new_object(ctx)) { t->touch(soid); } - map to_set; + bufferlist to_set_bl; try { - ::decode(to_set, bp); + decode_str_str_map_to_bl(bp, &to_set_bl); } catch (buffer::error& e) { result = -EINVAL; - tracepoint(osd, do_osd_op_pre_omapsetvals, soid.oid.name.c_str(), soid.snap.val, "???"); + tracepoint(osd, do_osd_op_pre_omapsetvals, soid.oid.name.c_str(), soid.snap.val); goto fail; } - tracepoint(osd, do_osd_op_pre_omapsetvals, soid.oid.name.c_str(), soid.snap.val, list_keys(to_set).c_str()); - dout(20) << "setting vals: " << dendl; - for (map::iterator i = to_set.begin(); - i != to_set.end(); - ++i) { - dout(20) << "\t" << i->first << dendl; + tracepoint(osd, do_osd_op_pre_omapsetvals, soid.oid.name.c_str(), soid.snap.val); + if (g_ceph_context->_conf->subsys.should_gather(dout_subsys, 20)) { + dout(20) << "setting vals: " << dendl; + map to_set; + bufferlist::iterator pt = to_set_bl.begin(); + ::decode(to_set, pt); + for (map::iterator i = to_set.begin(); + i != to_set.end(); + ++i) { + dout(20) << "\t" << i->first << dendl; + } } - t->omap_setkeys(soid, to_set); + t->omap_setkeys(soid, to_set_bl); ctx->delta_stats.num_wr++; } obs.oi.set_flag(object_info_t::FLAG_OMAP); @@ -5530,7 +5535,7 @@ int ReplicatedPG::do_osd_ops(OpContext *ctx, vector& ops) case CEPH_OSD_OP_OMAPRMKEYS: if (!pool.info.supports_omap()) { result = -EOPNOTSUPP; - tracepoint(osd, do_osd_op_pre_omaprmkeys, soid.oid.name.c_str(), soid.snap.val, "???"); + tracepoint(osd, do_osd_op_pre_omaprmkeys, soid.oid.name.c_str(), soid.snap.val); break; } ctx->mod_desc.mark_unrollbackable(); @@ -5538,21 +5543,21 @@ int ReplicatedPG::do_osd_ops(OpContext *ctx, vector& ops) { if (!obs.exists || oi.is_whiteout()) { result = -ENOENT; - tracepoint(osd, do_osd_op_pre_omaprmkeys, soid.oid.name.c_str(), soid.snap.val, "???"); + tracepoint(osd, do_osd_op_pre_omaprmkeys, soid.oid.name.c_str(), soid.snap.val); break; } t->touch(soid); - set to_rm; + bufferlist to_rm_bl; try { - ::decode(to_rm, bp); + decode_str_set_to_bl(bp, &to_rm_bl); } catch (buffer::error& e) { result = -EINVAL; - tracepoint(osd, do_osd_op_pre_omaprmkeys, soid.oid.name.c_str(), soid.snap.val, "???"); + tracepoint(osd, do_osd_op_pre_omaprmkeys, soid.oid.name.c_str(), soid.snap.val); goto fail; } - tracepoint(osd, do_osd_op_pre_omaprmkeys, soid.oid.name.c_str(), soid.snap.val, list_entries(to_rm).c_str()); - t->omap_rmkeys(soid, to_rm); + tracepoint(osd, do_osd_op_pre_omaprmkeys, soid.oid.name.c_str(), soid.snap.val); + t->omap_rmkeys(soid, to_rm_bl); ctx->delta_stats.num_wr++; } obs.oi.set_flag(object_info_t::FLAG_OMAP); diff --git a/src/tracing/osd.tp b/src/tracing/osd.tp index ba0fd32481fb6..fd7574d6e729c 100644 --- a/src/tracing/osd.tp +++ b/src/tracing/osd.tp @@ -640,12 +640,10 @@ TRACEPOINT_EVENT(osd, do_osd_op_pre_omap_cmp, TRACEPOINT_EVENT(osd, do_osd_op_pre_omapsetvals, TP_ARGS( const char*, oid, - uint64_t, snap, - const char*, keys), + uint64_t, snap), TP_FIELDS( ctf_string(oid, oid) ctf_integer(uint64_t, snap, snap) - ctf_string(keys, keys) ) ) @@ -672,12 +670,10 @@ TRACEPOINT_EVENT(osd, do_osd_op_pre_omapclear, TRACEPOINT_EVENT(osd, do_osd_op_pre_omaprmkeys, TP_ARGS( const char*, oid, - uint64_t, snap, - const char*, keys), + uint64_t, snap), TP_FIELDS( ctf_string(oid, oid) ctf_integer(uint64_t, snap, snap) - ctf_string(keys, keys) ) ) -- 2.39.5