From: Sage Weil Date: Fri, 17 Jul 2015 18:12:29 +0000 (-0400) Subject: osd: restart backfill on peers if last_backfill sort is off X-Git-Tag: v9.1.0~346^2~47 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=26d5d7a1c0fb00d667fd008a7d48085f0272607d;p=ceph.git osd: restart backfill on peers if last_backfill sort is off If a peer has a last_backfill value but the wrong sort order, we need to restart backfill at the beginning. Signed-off-by: Sage Weil --- diff --git a/src/osd/PG.cc b/src/osd/PG.cc index 7696c4ef36a2..ca6ce719ebf0 100644 --- a/src/osd/PG.cc +++ b/src/osd/PG.cc @@ -1626,8 +1626,12 @@ void PG::activate(ObjectStore::Transaction& t, } else if ( pg_log.get_tail() > pi.last_update || pi.last_backfill == hobject_t() || + (pi.last_backfill != hobject_t::get_max() && + pi.last_backfill_bitwise != get_sort_bitwise()) || + /* ^ cover case where peer sort order was different and + last_backfill cannot be interpreted */ (backfill_targets.count(*i) && pi.last_backfill.is_max())) { - /* This last case covers a situation where a replica is not contiguous + /* ^ This last case covers a situation where a replica is not contiguous * with the auth_log, but is contiguous with this replica. Reshuffling * the active set to handle this would be tricky, so instead we just go * ahead and backfill it anyway. This is probably preferrable in any