From: Sage Weil Date: Tue, 13 Dec 2011 23:04:05 +0000 (-0800) Subject: osd: clean up _delete_head X-Git-Tag: v0.40~136^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=1a473b7aa55e0fadbbfdda3c55a7ede5b8a30d41;p=ceph.git osd: clean up _delete_head Might be fixing a subtle logic bug, but old flow was confusing, so not sure. :) Signed-off-by: Sage Weil Signed-off-by: Greg Farnum --- diff --git a/src/osd/ReplicatedPG.cc b/src/osd/ReplicatedPG.cc index cf9a02fa5abc..d4e42f2e7863 100644 --- a/src/osd/ReplicatedPG.cc +++ b/src/osd/ReplicatedPG.cc @@ -1737,11 +1737,7 @@ int ReplicatedPG::do_osd_ops(OpContext *ctx, vector& ops, break; case CEPH_OSD_OP_DELETE: - if (!obs.exists) { - result = -ENOENT; - } else { - _delete_head(ctx); - } + result = _delete_head(ctx); break; case CEPH_OSD_OP_CLONERANGE: @@ -2077,7 +2073,7 @@ int ReplicatedPG::do_osd_ops(OpContext *ctx, vector& ops, return result; } -inline void ReplicatedPG::_delete_head(OpContext *ctx) +inline int ReplicatedPG::_delete_head(OpContext *ctx) { SnapSet& snapset = ctx->new_snapset; ObjectState& obs = ctx->new_obs; @@ -2085,22 +2081,27 @@ inline void ReplicatedPG::_delete_head(OpContext *ctx) const hobject_t& soid = oi.soid; ObjectStore::Transaction& t = ctx->op_t; - if (obs.exists) - t.remove(coll, soid); + if (!obs.exists) + return -ENOENT; + + t.remove(coll, soid); + if (oi.size > 0) { interval_set ch; ch.insert(0, oi.size); ctx->modified_ranges.union_of(ch); } - if (obs.exists) { - ctx->delta_stats.num_objects--; - ctx->delta_stats.num_bytes -= oi.size; - ctx->delta_stats.num_kb -= SHIFT_ROUND_UP(oi.size, 10); - oi.size = 0; - snapset.head_exists = false; - obs.exists = false; - } + + ctx->delta_stats.num_objects--; + ctx->delta_stats.num_bytes -= oi.size; + ctx->delta_stats.num_kb -= SHIFT_ROUND_UP(oi.size, 10); + + oi.size = 0; + snapset.head_exists = false; + obs.exists = false; + ctx->delta_stats.num_wr++; + return 0; } int ReplicatedPG::_rollback_to(OpContext *ctx, ceph_osd_op& op) diff --git a/src/osd/ReplicatedPG.h b/src/osd/ReplicatedPG.h index 3077ddb2eaed..9a5a6e4a693d 100644 --- a/src/osd/ReplicatedPG.h +++ b/src/osd/ReplicatedPG.h @@ -801,7 +801,7 @@ private: boost::statechart::result react(const SnapTrim&); }; - void _delete_head(OpContext *ctx); + int _delete_head(OpContext *ctx); int _rollback_to(OpContext *ctx, ceph_osd_op& op); public: bool same_for_read_since(epoch_t e);