]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
osd/Replicated: First calc crc then call write_update_size_and_usage.
authorJianpeng Ma <jianpeng.ma@intel.com>
Thu, 2 Jul 2015 08:50:41 +0000 (16:50 +0800)
committerJianpeng Ma <jianpeng.ma@intel.com>
Thu, 2 Jul 2015 08:50:41 +0000 (16:50 +0800)
Because write_update_size_and_usage will change oi.size which cause
don't calc new crc.

Signed-off-by: Jianpeng Ma <jianpeng.ma@intel.com>
src/osd/ReplicatedPG.cc

index da47fe0a7dd3c06d991f98b0c2289f8506e643f2..da72ce7a17e3188b78e78a4db153efbbbdd07a98 100644 (file)
@@ -4211,8 +4211,7 @@ int ReplicatedPG::do_osd_ops(OpContext *ctx, vector<OSDOp>& ops)
        } else {
          t->write(soid, op.extent.offset, op.extent.length, osd_op.indata, op.flags);
        }
-       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)
          obs.oi.set_data_digest(osd_op.indata.crc32c(-1));
@@ -4220,6 +4219,9 @@ int ReplicatedPG::do_osd_ops(OpContext *ctx, vector<OSDOp>& ops)
          obs.oi.set_data_digest(osd_op.indata.crc32c(obs.oi.data_digest));
        else
          obs.oi.clear_data_digest();
+       write_update_size_and_usage(ctx->delta_stats, oi, ctx->modified_ranges,
+                                   op.extent.offset, op.extent.length, true);
+
       }
       break;