From 73cd5441a0caec147af3066701f201b5b5453a7e Mon Sep 17 00:00:00 2001 From: Nitzan Mordechai Date: Mon, 14 Apr 2025 11:49:30 +0000 Subject: [PATCH] Objecter: remove balance_read and localize_read if rwordered Objecter shouldn't sent ops with mixed rwordered and balance_read flags Fixes: https://tracker.ceph.com/issues/70715 Signed-off-by: Nitzan Mordechai (cherry picked from commit 40292f2fd10f338c9baab60a019dfe4806e642c7) --- src/osdc/Objecter.h | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/osdc/Objecter.h b/src/osdc/Objecter.h index 4167660c5a8..edf0f4d285e 100644 --- a/src/osdc/Objecter.h +++ b/src/osdc/Objecter.h @@ -2933,8 +2933,15 @@ private: int _op_cancel(ceph_tid_t tid, int r); int get_read_flags(int flags) { - return flags | global_op_flags | extra_read_flags.load(std::memory_order_relaxed) | - CEPH_OSD_FLAG_READ; + int ret = flags | global_op_flags | + extra_read_flags.load(std::memory_order_relaxed) | + CEPH_OSD_FLAG_READ; + + // If the op is rwordered, strip out the balanced and localized flags. + if (flags & CEPH_OSD_FLAG_RWORDERED) { + ret &= ~(CEPH_OSD_FLAG_BALANCE_READS | CEPH_OSD_FLAG_LOCALIZE_READS); + } + return ret; } public: -- 2.39.5