osd: fix omap digest clearing for omap write ops

1. setvals clears the digest, even for a new object, since we aren't doing
anything clever with the digest for the provided keys (yet).

2. setheader clears the digest, always, since we aren't doing anything
clever.

Backport: hammer
Signed-off-by: Sage Weil <sage@redhat.com>
This commit is contained in:
Sage Weil 2015-03-20 17:16:26 -07:00
parent d5b3bd76dd
commit 68719f5838

View File

@ -5070,8 +5070,6 @@ int ReplicatedPG::do_osd_ops(OpContext *ctx, vector<OSDOp>& ops)
{
if (maybe_create_new_object(ctx)) {
t->touch(soid);
} else {
obs.oi.clear_omap_digest();
}
map<string, bufferlist> to_set;
try {
@ -5093,6 +5091,7 @@ int ReplicatedPG::do_osd_ops(OpContext *ctx, vector<OSDOp>& ops)
ctx->delta_stats.num_wr++;
}
obs.oi.set_flag(object_info_t::FLAG_OMAP);
obs.oi.clear_omap_digest();
break;
case CEPH_OSD_OP_OMAPSETHEADER:
@ -5113,6 +5112,7 @@ int ReplicatedPG::do_osd_ops(OpContext *ctx, vector<OSDOp>& ops)
ctx->delta_stats.num_wr++;
}
obs.oi.set_flag(object_info_t::FLAG_OMAP);
obs.oi.clear_omap_digest();
break;
case CEPH_OSD_OP_OMAPCLEAR: