diff options
author | Sage Weil <sage@inktank.com> | 2014-03-20 09:24:26 -0700 |
---|---|---|
committer | Sage Weil <sage@inktank.com> | 2014-03-20 09:24:26 -0700 |
commit | d1f8742db1cd07b65afb7ac9ced04a2c02d85b73 (patch) | |
tree | bab49452da5e4c60ce09da59bb6c7e9fb949baa6 | |
parent | b395cb19511d9c9ec77d08c7c47f28a984e9b432 (diff) | |
parent | b4420ffbf807e691a9f0f3eed69e1d505aa55ddd (diff) | |
download | ceph-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.cc | 25 |
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 |