summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSage Weil <sage@inktank.com>2014-03-20 09:24:26 -0700
committerSage Weil <sage@inktank.com>2014-03-20 09:24:26 -0700
commitd1f8742db1cd07b65afb7ac9ced04a2c02d85b73 (patch)
treebab49452da5e4c60ce09da59bb6c7e9fb949baa6
parentb395cb19511d9c9ec77d08c7c47f28a984e9b432 (diff)
parentb4420ffbf807e691a9f0f3eed69e1d505aa55ddd (diff)
downloadceph-d1f8742db1cd07b65afb7ac9ced04a2c02d85b73.tar.gz
Merge pull request #1506 from ceph/wip-7755
PG::find_best_info: fix log_tail component Reviewed-by: Sage Weil <sage@inktank.com>
-rw-r--r--src/osd/PG.cc25
1 files changed, 8 insertions, 17 deletions
diff --git a/src/osd/PG.cc b/src/osd/PG.cc
index 3dd8d41c4f7..82b1bdded4a 100644
--- a/src/osd/PG.cc
+++ b/src/osd/PG.cc
@@ -895,24 +895,15 @@ map<pg_shard_t, pg_info_t>::const_iterator PG::find_best_info(
continue;
}
}
- // Prefer longer tail if it brings another peer into contiguity
- for (map<pg_shard_t, pg_info_t>::const_iterator q = infos.begin();
- q != infos.end();
- ++q) {
- if (q->second.is_incomplete())
- continue; // don't care about log contiguity
- if (q->second.last_update < best->second.log_tail &&
- q->second.last_update >= p->second.log_tail) {
- dout(10) << "calc_acting prefer osd." << p->first
- << " because it brings osd." << q->first << " into log contiguity" << dendl;
- best = p;
- continue;
- }
- if (q->second.last_update < p->second.log_tail &&
- q->second.last_update >= best->second.log_tail) {
- continue;
- }
+
+ // Prefer longer tail
+ if (p->second.log_tail > best->second.log_tail) {
+ continue;
+ } else if (p->second.log_tail < best->second.log_tail) {
+ best = p;
+ continue;
}
+
// prefer current primary (usually the caller), all things being equal
if (p->first == pg_whoami) {
dout(10) << "calc_acting prefer osd." << p->first