On Mon, 2021-08-30 at 20:33 +0800, xiubli@xxxxxxxxxx wrote: > From: Xiubo Li <xiubli@xxxxxxxxxx> > > Signed-off-by: Xiubo Li <xiubli@xxxxxxxxxx> > --- > fs/ceph/mds_client.c | 8 +++++--- > 1 file changed, 5 insertions(+), 3 deletions(-) > > diff --git a/fs/ceph/mds_client.c b/fs/ceph/mds_client.c > index 7ddc36c14b92..aa0ab069db40 100644 > --- a/fs/ceph/mds_client.c > +++ b/fs/ceph/mds_client.c > @@ -4434,7 +4434,7 @@ static void check_new_map(struct ceph_mds_client *mdsc, > struct ceph_mdsmap *newmap, > struct ceph_mdsmap *oldmap) > { > - int i, err; > + int i, j, err; > int oldstate, newstate; > struct ceph_mds_session *s; > unsigned long targets[DIV_ROUND_UP(CEPH_MAX_MDS, sizeof(unsigned long))] = {0}; > @@ -4443,8 +4443,10 @@ static void check_new_map(struct ceph_mds_client *mdsc, > newmap->m_epoch, oldmap->m_epoch); > > if (newmap->m_info) { > - for (i = 0; i < newmap->m_info->num_export_targets; i++) > - set_bit(newmap->m_info->export_targets[i], targets); > + for (i = 0; i < newmap->m_num_active_mds; i++) { > + for (j = 0; j < newmap->m_info[i].num_export_targets; j++) > + set_bit(newmap->m_info[i].export_targets[j], targets); > + } > } > > for (i = 0; i < oldmap->possible_max_rank && i < mdsc->max_sessions; i++) { Looks sane. I'll plan to fold this into "ceph: reconnect to the export targets on new mdsmaps". Thanks, -- Jeff Layton <jlayton@xxxxxxxxxx>