From fb1b40f5e2da1b70d9ff026a75196c79d09cf0c6 Mon Sep 17 00:00:00 2001 From: Jianpeng Ma Date: Sun, 22 Mar 2015 22:07:24 +0800 Subject: [PATCH] osd/Replicated: For CEPH_OSD_OP_WRITE, set data digest. 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 (cherry picked from commit c7702bf85d3617b3e1c6619b8ebeff34932fc3e4) --- src/osd/ReplicatedPG.cc | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/osd/ReplicatedPG.cc b/src/osd/ReplicatedPG.cc index ec7fc5ef045f7..78e8ad9645c53 100644 --- a/src/osd/ReplicatedPG.cc +++ b/src/osd/ReplicatedPG.cc @@ -4221,8 +4221,10 @@ int ReplicatedPG::do_osd_ops(OpContext *ctx, vector& 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(); } -- 2.39.5