Skip to content

Commit

Permalink
osd/Replicated: For CEPH_OSD_OP_WRITE, set data digest.
Browse files Browse the repository at this point in the history
Add two cases which can add data digest for OP_WRITE:
a: offset = 0, and length > original size
b: offset = original size, and original has data_digest.

Signed-off-by: Jianpeng Ma <jianpeng.ma@intel.com>
  • Loading branch information
majianpeng committed Mar 22, 2015
1 parent f6d76f9 commit c7702bf
Showing 1 changed file with 3 additions and 1 deletion.
4 changes: 3 additions & 1 deletion src/osd/ReplicatedPG.cc
Expand Up @@ -4385,8 +4385,10 @@ int ReplicatedPG::do_osd_ops(OpContext *ctx, vector<OSDOp>& ops)
write_update_size_and_usage(ctx->delta_stats, oi, ctx->modified_ranges,
op.extent.offset, op.extent.length, true);
maybe_create_new_object(ctx);
if (op.extent.offset == 0 && op.extent.length == oi.size)
if (op.extent.offset == 0 && op.extent.length >= oi.size)
obs.oi.set_data_digest(osd_op.indata.crc32c(-1));
else if (op.extent.offset == oi.size && obs.oi.is_data_digest())
obs.oi.set_data_digest(osd_op.indata.crc32c(obs.oi.data_digest));
else
obs.oi.clear_data_digest();
}
Expand Down

0 comments on commit c7702bf

Please sign in to comment.