summaryrefslogtreecommitdiff
path: root/src/osd/ReplicatedPG.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/osd/ReplicatedPG.cc')
-rw-r--r--src/osd/ReplicatedPG.cc14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/osd/ReplicatedPG.cc b/src/osd/ReplicatedPG.cc
index ab9c8099a44..eb300792e3a 100644
--- a/src/osd/ReplicatedPG.cc
+++ b/src/osd/ReplicatedPG.cc
@@ -5128,6 +5128,13 @@ void ReplicatedPG::calc_head_subsets(ObjectContext *obc, SnapSet& snapset, const
<< " overlap " << prev << dendl;
}
+
+ if (cloning.num_intervals() > g_conf->osd_recover_clone_overlap_limit) {
+ dout(10) << "skipping clone, too many holes" << dendl;
+ clone_subsets.clear();
+ cloning.clear();
+ }
+
// what's left for us to push?
data_subset.subtract(cloning);
@@ -5197,6 +5204,13 @@ void ReplicatedPG::calc_clone_subsets(SnapSet& snapset, const hobject_t& soid,
dout(10) << "calc_clone_subsets " << soid << " does not have next " << c
<< " overlap " << next << dendl;
}
+
+ if (cloning.num_intervals() > g_conf->osd_recover_clone_overlap_limit) {
+ dout(10) << "skipping clone, too many holes" << dendl;
+ clone_subsets.clear();
+ cloning.clear();
+ }
+
// what's left for us to push?
data_subset.subtract(cloning);