From: Sage Weil Date: Tue, 1 Apr 2014 21:27:31 +0000 (-0700) Subject: osd/ReplicatedPG: mark_unrollbackable when _rollback_to head X-Git-Tag: v0.79~23^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=refs%2Fpull%2F1579%2Fhead;p=ceph.git osd/ReplicatedPG: mark_unrollbackable when _rollback_to head We fell into the case in _rollback_to where we just set ctx->modify = true and don't explicitly mark the ctx and unrollbackable. Later, we screw up in proc_replica_log as a result because we think we can rollback this update to the head when in reality we cannot. Fixes: #7907 Signed-off-by: Sage Weil --- diff --git a/src/osd/ReplicatedPG.cc b/src/osd/ReplicatedPG.cc index 27528c84643..179d899a94c 100644 --- a/src/osd/ReplicatedPG.cc +++ b/src/osd/ReplicatedPG.cc @@ -5096,6 +5096,9 @@ void ReplicatedPG::finish_ctx(OpContext *ctx, int log_op_type) changing.insert(OI_ATTR); changing.insert(SS_ATTR); ctx->obc->fill_in_setattrs(changing, &(ctx->mod_desc)); + } else { + // replicated pools are never rollbackable in this case + ctx->mod_desc.mark_unrollbackable(); } } else { dout(10) << " no snapset (this is a clone)" << dendl;