ceph: fix debugfs entry, simplify fsid checks
[linux-3.10.git] / fs / ceph / mon_client.c
index 017d5ae..b742b3b 100644 (file)
@@ -320,89 +320,12 @@ int ceph_monc_open_session(struct ceph_mon_client *monc)
        return 0;
 }
 
-#if 0
-
-/*
- * The monitor responds with mount ack indicate mount success.  The
- * included client ticket allows the client to talk to MDSs and OSDs.
- */
-static void handle_mount_ack(struct ceph_mon_client *monc, struct ceph_msg *msg)
-{
-       struct ceph_client *client = monc->client;
-       struct ceph_monmap *monmap = NULL, *old = monc->monmap;
-       void *p, *end;
-       s32 result;
-       u32 len;
-       s64 cnum;
-       int err = -EINVAL;
-
-       if (client->whoami >= 0) {
-               dout("handle_mount_ack - already mounted\n");
-               return;
-       }
-
-       mutex_lock(&monc->mutex);
-
-       dout("handle_mount_ack\n");
-       p = msg->front.iov_base;
-       end = p + msg->front.iov_len;
-
-       ceph_decode_64_safe(&p, end, cnum, bad);
-       ceph_decode_32_safe(&p, end, result, bad);
-       ceph_decode_32_safe(&p, end, len, bad);
-       if (result) {
-               pr_err("mount denied: %.*s (%d)\n", len, (char *)p,
-                      result);
-               err = result;
-               goto out;
-       }
-       p += len;
-
-       ceph_decode_32_safe(&p, end, len, bad);
-       ceph_decode_need(&p, end, len, bad);
-       monmap = ceph_monmap_decode(p, p + len);
-       if (IS_ERR(monmap)) {
-               pr_err("problem decoding monmap, %d\n",
-                      (int)PTR_ERR(monmap));
-               err = -EINVAL;
-               goto out;
-       }
-       p += len;
-
-       client->monc.monmap = monmap;
-       kfree(old);
-
-       client->signed_ticket = NULL;
-       client->signed_ticket_len = 0;
-
-       monc->want_mount = false;
-
-       client->whoami = cnum;
-       client->msgr->inst.name.type = CEPH_ENTITY_TYPE_CLIENT;
-       client->msgr->inst.name.num = cpu_to_le64(cnum);
-       pr_info("client%lld fsid " FSID_FORMAT "\n",
-               client->whoami, PR_FSID(&client->monc.monmap->fsid));
-
-       ceph_debugfs_client_init(client);
-       __send_subscribe(monc);
-
-       err = 0;
-       goto out;
-
-bad:
-       pr_err("error decoding mount_ack message\n");
-out:
-       client->mount_err = err;
-       mutex_unlock(&monc->mutex);
-       wake_up(&client->mount_wq);
-}
-#endif
-
 /*
  * The monitor responds with mount ack indicate mount success.  The
  * included client ticket allows the client to talk to MDSs and OSDs.
  */
-static void ceph_monc_handle_map(struct ceph_mon_client *monc, struct ceph_msg *msg)
+static void ceph_monc_handle_map(struct ceph_mon_client *monc,
+                                struct ceph_msg *msg)
 {
        struct ceph_client *client = monc->client;
        struct ceph_monmap *monmap = NULL, *old = monc->monmap;
@@ -420,42 +343,19 @@ static void ceph_monc_handle_map(struct ceph_mon_client *monc, struct ceph_msg *
                       (int)PTR_ERR(monmap));
                return;
        }
-       if (monc->have_fsid &&
-           ceph_fsid_compare(&monmap->fsid, &monc->monmap->fsid)) {
-               print_hex_dump(KERN_ERR, "monmap->fsid: ", DUMP_PREFIX_NONE, 16, 1,
-                              (void *)&monmap->fsid, 16, 0);
-               print_hex_dump(KERN_ERR, "monc->monmap->fsid: ", DUMP_PREFIX_NONE, 16, 1,
-                              (void *)&monc->monmap->fsid, 16, 0);
-
-               pr_err("fsid mismatch, got a previous map with different fsid");
+
+       if (ceph_check_fsid(monc->client, &monmap->fsid) < 0) {
                kfree(monmap);
                return;
        }
 
        client->monc.monmap = monmap;
-       client->monc.have_fsid = true;
        kfree(old);
 
        mutex_unlock(&monc->mutex);
        wake_up(&client->mount_wq);
 }
 
-
-/*
- * init client info after authentication
- */
-static void __init_authenticated_client(struct ceph_mon_client *monc)
-{
-       struct ceph_client *client = monc->client;
-
-       client->signed_ticket = NULL;
-       client->signed_ticket_len = 0;
-       client->msgr->inst.name.type = CEPH_ENTITY_TYPE_CLIENT;
-       client->msgr->inst.name.num = monc->auth->global_id;
-
-       ceph_debugfs_client_init(client);
-}
-
 /*
  * statfs
  */
@@ -754,7 +654,10 @@ static void handle_auth_reply(struct ceph_mon_client *monc,
                ceph_con_send(monc->con, monc->m_auth);
        } else if (monc->auth->ops->is_authenticated(monc->auth)) {
                dout("authenticated, starting session\n");
-               __init_authenticated_client(monc);
+
+               monc->client->msgr->inst.name.type = CEPH_ENTITY_TYPE_CLIENT;
+               monc->client->msgr->inst.name.num = monc->auth->global_id;
+
                __send_subscribe(monc);
                __resend_statfs(monc);
        }