Re: [PATCH] ceph: fix mds random selection readiness predicate

From: Viacheslav Dubeyko

Date: Fri Jul 24 2026 - 13:59:56 EST


On Fri, 2026-07-24 at 11:40 +0000, 朱一鸣 wrote:
> 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
> >

Good catch.

Reviewed-by: Viacheslav Dubeyko <slava@xxxxxxxxxxx>

Thanks,
Slava.