From: Samuel Just Date: Sun, 6 Apr 2014 19:29:56 +0000 (-0700) Subject: ReplicatedPG: use get_clone_bytes on evict/promote X-Git-Tag: v0.80-rc1~89^2~3 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=a8a49a034ad8b5a73b97721caf151fa71b501a06;p=ceph.git ReplicatedPG: use get_clone_bytes on evict/promote Fixes: #7964 Signed-off-by: Samuel Just --- diff --git a/src/osd/ReplicatedPG.cc b/src/osd/ReplicatedPG.cc index b84cc01b45bb..dc5123b74de7 100644 --- a/src/osd/ReplicatedPG.cc +++ b/src/osd/ReplicatedPG.cc @@ -4502,7 +4502,12 @@ inline int ReplicatedPG::_delete_oid(OpContext *ctx, bool no_whiteout) } ctx->delta_stats.num_wr++; - ctx->delta_stats.num_bytes -= oi.size; + if (soid.is_snap()) { + assert(ctx->obc->ssc->snapset.clone_overlap.count(soid.snap)); + ctx->delta_stats.num_bytes -= ctx->obc->ssc->snapset.get_clone_bytes(soid.snap); + } else { + ctx->delta_stats.num_bytes -= oi.size; + } oi.size = 0; // cache: writeback: set whiteout on delete? @@ -5757,7 +5762,6 @@ void ReplicatedPG::finish_promote(int r, OpRequestRef op, tctx->discard_temp_oid = results->temp_oid; } tctx->new_obs.oi.size = results->object_size; - tctx->delta_stats.num_bytes += results->object_size; tctx->new_obs.oi.category = results->category; tctx->new_obs.oi.user_version = results->user_version; @@ -5785,6 +5789,11 @@ void ReplicatedPG::finish_promote(int r, OpRequestRef op, assert(obc->ssc->snapset.clone_size.count(soid.snap)); assert(obc->ssc->snapset.clone_size[soid.snap] == results->object_size); + assert(obc->ssc->snapset.clone_overlap.count(soid.snap)); + + tctx->delta_stats.num_bytes += obc->ssc->snapset.get_clone_bytes(soid.snap); + } else { + tctx->delta_stats.num_bytes += results->object_size; } }