diff options
author | Yan, Zheng <zyan@redhat.com> | 2017-01-04 16:21:58 +0800 |
---|---|---|
committer | Ilya Dryomov <idryomov@gmail.com> | 2017-01-12 19:31:01 +0100 |
commit | cc8e8342930129aa2c9b629e1653e4681f0896ea (patch) | |
tree | 0bfaf0674b0d7db469b3eb27dc1755bcff182c93 /fs/ceph/mds_client.c | |
parent | a121103c922847ba5010819a3f250f1f7fc84ab8 (diff) | |
download | op-kernel-dev-cc8e8342930129aa2c9b629e1653e4681f0896ea.zip op-kernel-dev-cc8e8342930129aa2c9b629e1653e4681f0896ea.tar.gz |
ceph: fix mds cluster availability check
We should apply the check after getting the initial mdsmap.
Fixes: e9e427f0a14f ("ceph: check availability of mds cluster on mount")
Link: http://tracker.ceph.com/issues/18161
Signed-off-by: Yan, Zheng <zyan@redhat.com>
Diffstat (limited to 'fs/ceph/mds_client.c')
-rw-r--r-- | fs/ceph/mds_client.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/fs/ceph/mds_client.c b/fs/ceph/mds_client.c index 4f49253..ec6b35e 100644 --- a/fs/ceph/mds_client.c +++ b/fs/ceph/mds_client.c @@ -2106,6 +2106,11 @@ static int __do_request(struct ceph_mds_client *mdsc, dout("do_request mdsmap err %d\n", err); goto finish; } + if (mdsc->mdsmap->m_epoch == 0) { + dout("do_request no mdsmap, waiting for map\n"); + list_add(&req->r_wait, &mdsc->waiting_for_map); + goto finish; + } if (!(mdsc->fsc->mount_options->flags & CEPH_MOUNT_OPT_MOUNTWAIT) && !ceph_mdsmap_is_cluster_available(mdsc->mdsmap)) { |