ceph: fix geting random mds from mdsmap
authorXiubo Li <xiubli@redhat.com>
Mon, 11 Nov 2019 11:51:05 +0000 (06:51 -0500)
committerIlya Dryomov <idryomov@gmail.com>
Mon, 25 Nov 2019 10:44:02 +0000 (11:44 +0100)
commit74d6f03019f8d70e7f634b8a6b1309051933d36e
treee2e0ee79f84bc2659484e7efc8c8d2ebf11ccd82
parent6b0a877422108372ac25b41ab651e6aa9ed273a6
ceph: fix geting random mds from mdsmap

For example, if we have 5 mds in the mdsmap and the states are:
m_info[5] --> [-1, 1, -1, 1, 1]

If we get a random number 1, then we should get the mds index 3 as
expected, but actually we will get index 2, which the state is -1.

The issue is that the for loop increment will advance past any "up"
MDS that was found during the while loop search.

Signed-off-by: Xiubo Li <xiubli@redhat.com>
Reviewed-by: Jeff Layton <jlayton@kernel.org>
Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
fs/ceph/mdsmap.c