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

Viacheslav Dubeyko <[email protected]> Fri, 24 Jul 2026 10:59:26 -0700
Newsgroups org.kernel.vger.ceph-devel,org.kernel.vger.linux-kernel,org.kernel.vger.stable
Message-ID <[email protected]>
On Fri, 2026-07-24 at 11:40 +0000, 朱一鸣 wrote:
> Adding the current Ceph client maintainer list
> 
> > On Jul 24, 2026, at 18:49, 朱一鸣 <[email protected]> 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: [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
> > 

Good catch.

Reviewed-by: Viacheslav Dubeyko <[email protected]>

Thanks,
Slava.