diff options
Diffstat (limited to 'src/osd/ReplicatedPG.cc')
-rw-r--r-- | src/osd/ReplicatedPG.cc | 14 |
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); |