From c51db18c42d73515904a6f3da666eef755a853b1 Mon Sep 17 00:00:00 2001 From: Dominik Csapak Date: Mon, 25 Oct 2021 16:01:28 +0200 Subject: [PATCH] api: ceph-mds: get mds state when multple ceph filesystems exist by iterating over all of them and saving the name to the active ones this fixes the issue that an mds that is assigned to not the first fs in the list gets wrongly shown as offline Signed-off-by: Dominik Csapak --- PVE/Ceph/Services.pm | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/PVE/Ceph/Services.pm b/PVE/Ceph/Services.pm index ca06d6e8..2a1bbcfc 100644 --- a/PVE/Ceph/Services.pm +++ b/PVE/Ceph/Services.pm @@ -185,13 +185,14 @@ sub get_cluster_mds_state { } my $add_state = sub { - my ($mds) = @_; + my ($mds, $fsname) = @_; my $state = {}; $state->{addr} = $mds->{addr}; $state->{rank} = $mds->{rank}; $state->{standby_replay} = $mds->{standby_replay} ? 1 : 0; $state->{state} = $mds->{state}; + $state->{fs_name} = $fsname; $mds_state->{$mds->{name}} = $state; }; @@ -204,13 +205,14 @@ sub get_cluster_mds_state { $add_state->($mds); } - my $fs_info = $fsmap->{filesystems}->[0]; - my $active_mds = $fs_info->{mdsmap}->{info}; + for my $fs_info (@{$fsmap->{filesystems}}) { + my $active_mds = $fs_info->{mdsmap}->{info}; - # normally there's only one active MDS, but we can have multiple active for - # different ranks (e.g., different cephs path hierarchy). So just add all. - foreach my $mds (values %$active_mds) { - $add_state->($mds); + # normally there's only one active MDS, but we can have multiple active for + # different ranks (e.g., different cephs path hierarchy). So just add all. + foreach my $mds (values %$active_mds) { + $add_state->($mds, $fs_info->{mdsmap}->{fs_name}); + } } return $mds_state;