From: Sage Weil Date: Fri, 29 May 2015 21:19:44 +0000 (-0700) Subject: Merge pull request #4526 from athanatos/wip-11296 X-Git-Tag: v9.0.2~88 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=d07100b6606e791c878a1e4e1ec804f5438a1f5c;p=ceph.git Merge pull request #4526 from athanatos/wip-11296 Wip 11296 Reviewed-by: Sage Weil --- d07100b6606e791c878a1e4e1ec804f5438a1f5c diff --cc src/osd/ReplicatedPG.cc index b19552c9ce3a,853c81d14abc..e310db631c71 --- a/src/osd/ReplicatedPG.cc +++ b/src/osd/ReplicatedPG.cc @@@ -6676,32 -6643,9 +6705,14 @@@ void ReplicatedPG::finish_promote(int r } tctx->new_obs.oi.size = results->object_size; tctx->new_obs.oi.user_version = results->user_version; + // Don't care src object whether have data or omap digest + if (results->object_size) + tctx->new_obs.oi.set_data_digest(results->data_digest); + if (results->has_omap) + tctx->new_obs.oi.set_omap_digest(results->omap_digest); if (soid.snap != CEPH_NOSNAP) { - if (!results->snaps.empty()) { - tctx->new_obs.oi.snaps = results->snaps; - } else { - // we must have read "snap" content from the head object in - // the base pool. use snap_seq to construct what snaps should - // be for this clone (what is was before we evicted the clean - // clone from this pool, and what it will be when we flush and - // the clone eventually happens in the base pool). - SnapSet& snapset = obc->ssc->snapset; - vector::iterator p = snapset.snaps.begin(); - while (p != snapset.snaps.end() && *p > soid.snap) - ++p; - assert(p != snapset.snaps.end()); - do { - tctx->new_obs.oi.snaps.push_back(*p); - ++p; - } while (p != snapset.snaps.end() && *p > results->snap_seq); - } - dout(20) << __func__ << " snaps " << tctx->new_obs.oi.snaps << dendl; + tctx->new_obs.oi.snaps = results->snaps; assert(!tctx->new_obs.oi.snaps.empty()); assert(obc->ssc->snapset.clone_size.count(soid.snap)); assert(obc->ssc->snapset.clone_size[soid.snap] ==