Re: [PATCH] ceph: fix mds random selection readiness predicate
From: 朱一鸣
Date: Fri Jul 24 2026 - 07:46:37 EST
Adding the current Ceph client maintainer list
> On Jul 24, 2026, at 18:49, 朱一鸣 <zhuyiming@xxxxxxxxxxxx> wrote:
>
> 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: stable@xxxxxxxxxxxxxxx
> Link: https://tracker.ceph.com/issues/78648
> Signed-off-by: Yiming Zhu <zhuyiming@xxxxxxxxxxxx>
> ---
> 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
>