[PATCH] ceph: fix mds random selection readiness predicate

Yiming Zhu <[email protected]> Fri, 24 Jul 2026 18:49:20 +0800
Newsgroups org.kernel.vger.ceph-devel,org.kernel.vger.stable
Message-ID <[email protected]>
CEPH_MDS_IS_READY() is parsed so that the ternary expression can
return true for an MDS entry with state 0 when it is not laggy. This
allows the random selector to choose a down/DNE rank.

Group the ternary expression under the state check so zero-state ranks
are not treated as ready.

Fixes: b38c9eb4757d ("ceph: allow choose random mds")
Cc: [email protected]
Link: https://tracker.ceph.com/issues/78648
Signed-off-by: Yiming Zhu <[email protected]>
---
 fs/ceph/mdsmap.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/fs/ceph/mdsmap.c b/fs/ceph/mdsmap.c
index d8e46eb7e5eb..450a4dc9662e 100644
--- a/fs/ceph/mdsmap.c
+++ b/fs/ceph/mdsmap.c
@@ -15,7 +15,7 @@
 #include "super.h"
 
 #define CEPH_MDS_IS_READY(i, ignore_laggy) \
-	(m->m_info[i].state > 0 && ignore_laggy ? true : !m->m_info[i].laggy)
+	(m->m_info[i].state > 0 && (ignore_laggy ? true : !m->m_info[i].laggy))
 
 static int __mdsmap_get_random_mds(struct ceph_mdsmap *m, bool ignore_laggy)
 {

base-commit: 48a5a7ab8d6ab7090564339e039c421f315de912
-- 
2.55.0