From: Kefu Chai Date: Sun, 30 Aug 2020 15:09:14 +0000 (+0800) Subject: crimson/osd: check for primary out side of is_misdirected() X-Git-Tag: v16.1.0~1270^2~1 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=f77072b551b9cd1b30d8bbe8ce0c75c33c2840ba;p=ceph.git 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 --- diff --git a/src/crimson/osd/osd_operations/client_request.cc b/src/crimson/osd/osd_operations/client_request.cc index 2b6f6e742b4f..0ead1626873a 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 ||