From: xuxuehan xuxuehan Date: Fri, 14 Feb 2020 11:52:28 +0000 (+0800) Subject: crimson/osd: make PGRecovery::start_primary_recovery_ops take objs recovered by Urgen... X-Git-Tag: v16.1.0~10^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=refs%2Fpull%2F38880%2Fhead;p=ceph.git crimson/osd: make PGRecovery::start_primary_recovery_ops take objs recovered by UrgentRecovery into account Signed-off-by: Xuehan Xu --- diff --git a/src/crimson/osd/pg_recovery.cc b/src/crimson/osd/pg_recovery.cc index c0ce0088b23..7d70b5e8ffb 100644 --- a/src/crimson/osd/pg_recovery.cc +++ b/src/crimson/osd/pg_recovery.cc @@ -147,13 +147,15 @@ size_t PGRecovery::start_primary_recovery_ops( pg->get_recovery_backend()->is_recovering(head) ? " (recovering head)":""); // TODO: handle lost/unfound - if (!pg->get_recovery_backend()->is_recovering(soid)) { - if (pg->get_recovery_backend()->is_recovering(head)) { - ++skipped; - } else { - out->push_back(recover_missing(soid, item.need)); - ++started; - } + if (pg->get_recovery_backend()->is_recovering(soid)) { + auto& recovery_waiter = pg->get_recovery_backend()->get_recovering(soid); + out->push_back(recovery_waiter.wait_for_recovered_blocking()); + ++started; + } else if (pg->get_recovery_backend()->is_recovering(head)) { + ++skipped; + } else { + out->push_back(recover_missing(soid, item.need)); + ++started; } if (!skipped)