Merge tag 'fallthrough-pseudo-keyword-5.9-rc3' of git://git.kernel.org/pub/scm/linux...
[linux-2.6-microblaze.git] / fs / ceph / mds_client.c
index af7221d..4a26862 100644 (file)
@@ -1103,8 +1103,7 @@ static int __choose_mds(struct ceph_mds_client *mdsc,
                                     frag.frag, mds);
                                if (ceph_mdsmap_get_state(mdsc->mdsmap, mds) >=
                                    CEPH_MDS_STATE_ACTIVE) {
-                                       if (mode == USE_ANY_MDS &&
-                                           !ceph_mdsmap_is_laggy(mdsc->mdsmap,
+                                       if (!ceph_mdsmap_is_laggy(mdsc->mdsmap,
                                                                  mds))
                                                goto out;
                                }
@@ -3359,8 +3358,10 @@ static void handle_session(struct ceph_mds_session *session,
                        goto bad;
                /* version >= 3, feature bits */
                ceph_decode_32_safe(&p, end, len, bad);
-               ceph_decode_64_safe(&p, end, features, bad);
-               p += len - sizeof(features);
+               if (len) {
+                       ceph_decode_64_safe(&p, end, features, bad);
+                       p += len - sizeof(features);
+               }
        }
 
        mutex_lock(&mdsc->mutex);
@@ -4453,7 +4454,6 @@ int ceph_mdsc_init(struct ceph_fs_client *fsc)
                goto err_mdsc;
        }
 
-       fsc->mdsc = mdsc;
        init_completion(&mdsc->safe_umount_waiters);
        init_waitqueue_head(&mdsc->session_close_wq);
        INIT_LIST_HEAD(&mdsc->waiting_for_map);
@@ -4508,6 +4508,8 @@ int ceph_mdsc_init(struct ceph_fs_client *fsc)
 
        strscpy(mdsc->nodename, utsname()->nodename,
                sizeof(mdsc->nodename));
+
+       fsc->mdsc = mdsc;
        return 0;
 
 err_mdsmap: