From 0ba2e145d08b0560f155e30f643ce6cf6c5b763c Mon Sep 17 00:00:00 2001 From: Samuel Just Date: Mon, 17 Aug 2015 12:58:58 -0700 Subject: [PATCH] Revert "osd/ReplicatedPG: snapset is not persisted" --- src/osd/ReplicatedPG.cc | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/osd/ReplicatedPG.cc b/src/osd/ReplicatedPG.cc index 4f5382cffce8..c6958664b194 100644 --- a/src/osd/ReplicatedPG.cc +++ b/src/osd/ReplicatedPG.cc @@ -5754,7 +5754,9 @@ void ReplicatedPG::finish_ctx(OpContext *ctx, int log_op_type, bool maintain_ssc ctx->snapset_obc->obs.exists = false; } } - } else if (ctx->new_snapset.clones.size() && !ctx->cache_evict) { + } else if (ctx->new_snapset.clones.size() && + !ctx->cache_evict && + (!ctx->snapset_obc || !ctx->snapset_obc->obs.exists)) { // save snapset on _snap hobject_t snapoid(soid.oid, soid.get_key(), CEPH_SNAPDIR, soid.get_hash(), info.pgid.pool(), soid.get_namespace()); @@ -5782,9 +5784,6 @@ void ReplicatedPG::finish_ctx(OpContext *ctx, int log_op_type, bool maintain_ssc } else if (!pool.info.require_rollback()) { ctx->log.back().mod_desc.mark_unrollbackable(); } - if (!ctx->snapset_obc->obs.exists) { - ctx->op_t->touch(snapoid); - } ctx->snapset_obc->obs.exists = true; ctx->snapset_obc->obs.oi.version = ctx->at_version; ctx->snapset_obc->obs.oi.last_reqid = ctx->reqid; @@ -5793,6 +5792,7 @@ void ReplicatedPG::finish_ctx(OpContext *ctx, int log_op_type, bool maintain_ssc bufferlist bv(sizeof(ctx->new_obs.oi)); ::encode(ctx->snapset_obc->obs.oi, bv); + ctx->op_t->touch(snapoid); setattr_maybe_cache(ctx->snapset_obc, ctx, ctx->op_t, OI_ATTR, bv); setattr_maybe_cache(ctx->snapset_obc, ctx, ctx->op_t, SS_ATTR, bss); if (pool.info.require_rollback()) { -- 2.47.3