From f77072b551b9cd1b30d8bbe8ce0c75c33c2840ba Mon Sep 17 00:00:00 2001 From: Kefu Chai Date: Sun, 30 Aug 2020 23:09:14 +0800 Subject: [PATCH] crimson/osd: check for primary out side of is_misdirected() so we can check can_serve_replica_read() without checking primary again. Signed-off-by: Kefu Chai --- src/crimson/osd/osd_operations/client_request.cc | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/crimson/osd/osd_operations/client_request.cc b/src/crimson/osd/osd_operations/client_request.cc index 2b6f6e742b4..0ead1626873 100644 --- a/src/crimson/osd/osd_operations/client_request.cc +++ b/src/crimson/osd/osd_operations/client_request.cc @@ -137,7 +137,9 @@ seastar::future<> ClientRequest::process_op( return with_blocking_future(handle.enter(pp(pg).get_obc)); }).then([this, &pg]() -> PG::load_obc_ertr::future<> { op_info.set_from_op(&*m, *pg.get_osdmap()); - if (is_misdirected(pg)) { + if (pg.is_primary()) { + // primary can handle both normal ops and balanced reads + } else if (is_misdirected(pg)) { logger().trace("process_op: dropping misdirected op"); return seastar::now(); } @@ -163,10 +165,6 @@ seastar::future<> ClientRequest::process_op( bool ClientRequest::is_misdirected(const PG& pg) const { - // primary can handle both normal ops and balanced reads - if (pg.is_primary()) { - return false; - } // otherwise take a closer look if (const int flags = m->get_flags(); flags & CEPH_OSD_FLAG_BALANCE_READS || -- 2.39.5