]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
ceph: fix MDS random selection readiness predicate
authorYiming Zhu <zhuyiming@kuaishou.com>
Fri, 24 Jul 2026 10:49:20 +0000 (18:49 +0800)
committerIlya Dryomov <idryomov@gmail.com>
Wed, 12 Aug 2026 19:21:41 +0000 (21:21 +0200)
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.

Cc: stable@vger.kernel.org
Fixes: b38c9eb4757d ("ceph: add possible_max_rank and make the code more readable")
Link: https://tracker.ceph.com/issues/78648
Signed-off-by: Yiming Zhu <zhuyiming@kuaishou.com>
Reviewed-by: Viacheslav Dubeyko <slava@dubeyko.com>
Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
fs/ceph/mdsmap.c

index d8e46eb7e5eb5f2f76ec3d928cebb6746acb5326..450a4dc9662e53f6d9e3af48728205020118a5db 100644 (file)
@@ -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)
 {