From: Samuel Just Date: Mon, 9 Sep 2013 22:48:50 +0000 (-0700) Subject: ReplicatedPG/Backend: fix up recalc_subsets X-Git-Tag: v0.71~68^2~8 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=b06dce3bd1ac22173f23ff800c8c748191e87003;p=ceph.git ReplicatedPG/Backend: fix up recalc_subsets Signed-off-by: Samuel Just --- diff --git a/src/osd/ReplicatedBackend.h b/src/osd/ReplicatedBackend.h index ae33b3f5588e..af8b3e291b60 100644 --- a/src/osd/ReplicatedBackend.h +++ b/src/osd/ReplicatedBackend.h @@ -300,6 +300,10 @@ private: const hobject_t &last_backfill, interval_set& data_subset, map >& clone_subsets); + ObjectRecoveryInfo recalc_subsets( + const ObjectRecoveryInfo& recovery_info, + SnapSetContext *ssc + ); }; #endif diff --git a/src/osd/ReplicatedPG.cc b/src/osd/ReplicatedPG.cc index f5c816c52c4d..1f688f97aa2e 100644 --- a/src/osd/ReplicatedPG.cc +++ b/src/osd/ReplicatedPG.cc @@ -6292,27 +6292,19 @@ void ReplicatedBackend::submit_push_complete(ObjectRecoveryInfo &recovery_info, } } -ObjectRecoveryInfo ReplicatedPG::recalc_subsets(const ObjectRecoveryInfo& recovery_info) +ObjectRecoveryInfo ReplicatedBackend::recalc_subsets( + const ObjectRecoveryInfo& recovery_info, + SnapSetContext *ssc) { if (!recovery_info.soid.snap || recovery_info.soid.snap >= CEPH_NOSNAP) return recovery_info; - - SnapSetContext *ssc = get_snapset_context(recovery_info.soid.oid, - recovery_info.soid.get_key(), - recovery_info.soid.hash, - false, - recovery_info.soid.get_namespace()); - assert(ssc); ObjectRecoveryInfo new_info = recovery_info; new_info.copy_subset.clear(); new_info.clone_subset.clear(); assert(ssc); -// TODOSAM: fix -#if 0 - calc_clone_subsets(ssc->snapset, new_info.soid, pg_log.get_missing(), info.last_backfill, + calc_clone_subsets(ssc->snapset, new_info.soid, get_parent()->get_local_missing(), + get_info().last_backfill, new_info.copy_subset, new_info.clone_subset); -#endif - put_snapset_context(ssc); return new_info; } @@ -6352,8 +6344,13 @@ bool ReplicatedBackend::handle_pull_response( pop.recovery_info.copy_subset); } - // TODOSAM: probably just kill this - //pi.recovery_info = recalc_subsets(pi.recovery_info); + bool first = pi.recovery_progress.first; + if (first) { + pi.obc = get_parent()->get_obc(pi.recovery_info.soid, pop.attrset); + pi.recovery_info.oi = pi.obc->obs.oi; + pi.recovery_info = recalc_subsets(pi.recovery_info, pi.obc->ssc); + } + interval_set usable_intervals; bufferlist usable_data; @@ -6366,7 +6363,6 @@ bool ReplicatedBackend::handle_pull_response( data.claim(usable_data); - bool first = pi.recovery_progress.first; pi.recovery_progress = pop.after_progress; pi.stat.num_bytes_recovered += data.length(); @@ -6375,11 +6371,6 @@ bool ReplicatedBackend::handle_pull_response( << ", new progress " << pi.recovery_progress << dendl; - if (first) { - pi.obc = get_parent()->get_obc(pi.recovery_info.soid, pop.attrset); - pi.recovery_info.oi = pi.obc->obs.oi; - } - bool complete = pi.is_complete(); submit_push_data(pi.recovery_info, first, diff --git a/src/osd/ReplicatedPG.h b/src/osd/ReplicatedPG.h index 2908e4291b4a..cdd57e1581a0 100644 --- a/src/osd/ReplicatedPG.h +++ b/src/osd/ReplicatedPG.h @@ -503,20 +503,6 @@ protected: set recovering; - ObjectRecoveryInfo recalc_subsets(const ObjectRecoveryInfo& recovery_info); - - void submit_push_data(ObjectRecoveryInfo &recovery_info, - bool first, - bool complete, - const interval_set &intervals_included, - bufferlist data_included, - bufferlist omap_header, - map &attrs, - map &omap_entries, - ObjectStore::Transaction *t); - void submit_push_complete(ObjectRecoveryInfo &recovery_info, - ObjectStore::Transaction *t); - // Track contents of temp collection, clear on reset set temp_contents;