monc             4105 drivers/block/rbd.c 		ret = ceph_monc_blacklist_add(&client->monc,
monc              176 fs/ceph/debugfs.c 	struct ceph_auth_client *ac = fsc->client->monc.auth;
monc             4514 fs/ceph/mds_client.c 	ceph_monc_got_map(&fsc->client->monc, CEPH_SUB_FSMAP, epoch);
monc             4516 fs/ceph/mds_client.c 		fsc->client->monc.fs_cluster_id = mount_fscid;
monc             4517 fs/ceph/mds_client.c 		ceph_monc_want_map(&fsc->client->monc, CEPH_SUB_MDSMAP,
monc             4519 fs/ceph/mds_client.c 		ceph_monc_renew_subs(&fsc->client->monc);
monc             4584 fs/ceph/mds_client.c 	ceph_monc_got_map(&mdsc->fsc->client->monc, CEPH_SUB_MDSMAP,
monc             4694 fs/ceph/mds_client.c 	struct ceph_auth_client *ac = mdsc->fsc->client->monc.auth;
monc             4722 fs/ceph/mds_client.c 	struct ceph_auth_client *ac = mdsc->fsc->client->monc.auth;
monc             4732 fs/ceph/mds_client.c 	struct ceph_auth_client *ac = mdsc->fsc->client->monc.auth;
monc             4741 fs/ceph/mds_client.c 	struct ceph_auth_client *ac = mdsc->fsc->client->monc.auth;
monc             4745 fs/ceph/mds_client.c 	return ceph_monc_validate_auth(&mdsc->fsc->client->monc);
monc               49 fs/ceph/super.c 	struct ceph_mon_client *monc = &fsc->client->monc;
monc               62 fs/ceph/super.c 	err = ceph_monc_do_statfs(monc, data_pool, &st);
monc               98 fs/ceph/super.c 	mutex_lock(&monc->mutex);
monc               99 fs/ceph/super.c 	fsid = le64_to_cpu(*(__le64 *)(&monc->monmap->fsid)) ^
monc              100 fs/ceph/super.c 	       le64_to_cpu(*((__le64 *)&monc->monmap->fsid + 1));
monc              101 fs/ceph/super.c 	mutex_unlock(&monc->mutex);
monc              708 fs/ceph/super.c 		ceph_monc_want_map(&fsc->client->monc, CEPH_SUB_MDSMAP,
monc              711 fs/ceph/super.c 		ceph_monc_want_map(&fsc->client->monc, CEPH_SUB_FSMAP,
monc              137 include/linux/ceph/libceph.h 	struct ceph_mon_client monc;
monc               32 include/linux/ceph/mon_client.h typedef void (*ceph_monc_request_func_t)(struct ceph_mon_client *monc,
monc               37 include/linux/ceph/mon_client.h 	struct ceph_mon_client *monc;
monc               51 include/linux/ceph/mon_client.h 	struct ceph_mon_client *monc;
monc              110 include/linux/ceph/mon_client.h extern int ceph_monc_init(struct ceph_mon_client *monc, struct ceph_client *cl);
monc              111 include/linux/ceph/mon_client.h extern void ceph_monc_stop(struct ceph_mon_client *monc);
monc              112 include/linux/ceph/mon_client.h extern void ceph_monc_reopen_session(struct ceph_mon_client *monc);
monc              129 include/linux/ceph/mon_client.h bool ceph_monc_want_map(struct ceph_mon_client *monc, int sub, u32 epoch,
monc              131 include/linux/ceph/mon_client.h void ceph_monc_got_map(struct ceph_mon_client *monc, int sub, u32 epoch);
monc              132 include/linux/ceph/mon_client.h void ceph_monc_renew_subs(struct ceph_mon_client *monc);
monc              134 include/linux/ceph/mon_client.h extern int ceph_monc_wait_osdmap(struct ceph_mon_client *monc, u32 epoch,
monc              137 include/linux/ceph/mon_client.h int ceph_monc_do_statfs(struct ceph_mon_client *monc, u64 data_pool,
monc              140 include/linux/ceph/mon_client.h int ceph_monc_get_version(struct ceph_mon_client *monc, const char *what,
monc              142 include/linux/ceph/mon_client.h int ceph_monc_get_version_async(struct ceph_mon_client *monc, const char *what,
monc              145 include/linux/ceph/mon_client.h int ceph_monc_blacklist_add(struct ceph_mon_client *monc,
monc              148 include/linux/ceph/mon_client.h extern int ceph_monc_open_session(struct ceph_mon_client *monc);
monc              150 include/linux/ceph/mon_client.h extern int ceph_monc_validate_auth(struct ceph_mon_client *monc);
monc              181 net/ceph/ceph_common.c 		if (ceph_monmap_contains(client->monc.monmap,
monc              634 net/ceph/ceph_common.c 	return client->monc.auth->global_id;
monc              676 net/ceph/ceph_common.c 	err = ceph_monc_init(&client->monc, client);
monc              686 net/ceph/ceph_common.c 	ceph_monc_stop(&client->monc);
monc              702 net/ceph/ceph_common.c 	ceph_monc_stop(&client->monc);
monc              717 net/ceph/ceph_common.c 	ceph_monc_reopen_session(&client->monc);
monc              727 net/ceph/ceph_common.c 	return client->monc.monmap && client->monc.monmap->epoch &&
monc              740 net/ceph/ceph_common.c 	err = ceph_monc_open_session(&client->monc);
monc              788 net/ceph/ceph_common.c 	ret = ceph_monc_get_version(&client->monc, "osdmap", &newest_epoch);
monc              796 net/ceph/ceph_common.c 	return ceph_monc_wait_osdmap(&client->monc, newest_epoch, timeout);
monc               39 net/ceph/debugfs.c 	if (client->monc.monmap == NULL)
monc               42 net/ceph/debugfs.c 	seq_printf(s, "epoch %d\n", client->monc.monmap->epoch);
monc               43 net/ceph/debugfs.c 	for (i = 0; i < client->monc.monmap->num_mon; i++) {
monc               45 net/ceph/debugfs.c 			&client->monc.monmap->mon_inst[i];
monc              140 net/ceph/debugfs.c 	struct ceph_mon_client *monc = &client->monc;
monc              144 net/ceph/debugfs.c 	mutex_lock(&monc->mutex);
monc              146 net/ceph/debugfs.c 	for (i = 0; i < ARRAY_SIZE(monc->subs); i++) {
monc              148 net/ceph/debugfs.c 			   monc->subs[i].have);
monc              149 net/ceph/debugfs.c 		if (monc->subs[i].want)
monc              151 net/ceph/debugfs.c 				   le64_to_cpu(monc->subs[i].item.start),
monc              152 net/ceph/debugfs.c 				   (monc->subs[i].item.flags &
monc              156 net/ceph/debugfs.c 	seq_printf(s, "fs_cluster_id %d\n", monc->fs_cluster_id);
monc              158 net/ceph/debugfs.c 	for (rp = rb_first(&monc->generic_request_tree); rp; rp = rb_next(rp)) {
monc              170 net/ceph/debugfs.c 	mutex_unlock(&monc->mutex);
monc              407 net/ceph/debugfs.c 		 client->monc.auth->global_id);
monc              413 net/ceph/debugfs.c 	client->monc.debugfs_file = debugfs_create_file("monc",
monc              451 net/ceph/debugfs.c 	debugfs_remove(client->monc.debugfs_file);
monc               37 net/ceph/mon_client.c static int __validate_auth(struct ceph_mon_client *monc);
monc              108 net/ceph/mon_client.c static void __send_prepared_auth_request(struct ceph_mon_client *monc, int len)
monc              110 net/ceph/mon_client.c 	monc->pending_auth = 1;
monc              111 net/ceph/mon_client.c 	monc->m_auth->front.iov_len = len;
monc              112 net/ceph/mon_client.c 	monc->m_auth->hdr.front_len = cpu_to_le32(len);
monc              113 net/ceph/mon_client.c 	ceph_msg_revoke(monc->m_auth);
monc              114 net/ceph/mon_client.c 	ceph_msg_get(monc->m_auth);  /* keep our ref */
monc              115 net/ceph/mon_client.c 	ceph_con_send(&monc->con, monc->m_auth);
monc              121 net/ceph/mon_client.c static void __close_session(struct ceph_mon_client *monc)
monc              123 net/ceph/mon_client.c 	dout("__close_session closing mon%d\n", monc->cur_mon);
monc              124 net/ceph/mon_client.c 	ceph_msg_revoke(monc->m_auth);
monc              125 net/ceph/mon_client.c 	ceph_msg_revoke_incoming(monc->m_auth_reply);
monc              126 net/ceph/mon_client.c 	ceph_msg_revoke(monc->m_subscribe);
monc              127 net/ceph/mon_client.c 	ceph_msg_revoke_incoming(monc->m_subscribe_ack);
monc              128 net/ceph/mon_client.c 	ceph_con_close(&monc->con);
monc              130 net/ceph/mon_client.c 	monc->pending_auth = 0;
monc              131 net/ceph/mon_client.c 	ceph_auth_reset(monc->auth);
monc              138 net/ceph/mon_client.c static void pick_new_mon(struct ceph_mon_client *monc)
monc              140 net/ceph/mon_client.c 	int old_mon = monc->cur_mon;
monc              142 net/ceph/mon_client.c 	BUG_ON(monc->monmap->num_mon < 1);
monc              144 net/ceph/mon_client.c 	if (monc->monmap->num_mon == 1) {
monc              145 net/ceph/mon_client.c 		monc->cur_mon = 0;
monc              147 net/ceph/mon_client.c 		int max = monc->monmap->num_mon;
monc              151 net/ceph/mon_client.c 		if (monc->cur_mon >= 0) {
monc              152 net/ceph/mon_client.c 			if (monc->cur_mon < monc->monmap->num_mon)
monc              153 net/ceph/mon_client.c 				o = monc->cur_mon;
monc              162 net/ceph/mon_client.c 		monc->cur_mon = n;
monc              166 net/ceph/mon_client.c 	     monc->cur_mon, monc->monmap->num_mon);
monc              172 net/ceph/mon_client.c static void __open_session(struct ceph_mon_client *monc)
monc              176 net/ceph/mon_client.c 	pick_new_mon(monc);
monc              178 net/ceph/mon_client.c 	monc->hunting = true;
monc              179 net/ceph/mon_client.c 	if (monc->had_a_connection) {
monc              180 net/ceph/mon_client.c 		monc->hunt_mult *= CEPH_MONC_HUNT_BACKOFF;
monc              181 net/ceph/mon_client.c 		if (monc->hunt_mult > CEPH_MONC_HUNT_MAX_MULT)
monc              182 net/ceph/mon_client.c 			monc->hunt_mult = CEPH_MONC_HUNT_MAX_MULT;
monc              185 net/ceph/mon_client.c 	monc->sub_renew_after = jiffies; /* i.e., expired */
monc              186 net/ceph/mon_client.c 	monc->sub_renew_sent = 0;
monc              188 net/ceph/mon_client.c 	dout("%s opening mon%d\n", __func__, monc->cur_mon);
monc              189 net/ceph/mon_client.c 	ceph_con_open(&monc->con, CEPH_ENTITY_TYPE_MON, monc->cur_mon,
monc              190 net/ceph/mon_client.c 		      &monc->monmap->mon_inst[monc->cur_mon].addr);
monc              196 net/ceph/mon_client.c 	ceph_con_keepalive(&monc->con);
monc              199 net/ceph/mon_client.c 	ret = ceph_auth_build_hello(monc->auth,
monc              200 net/ceph/mon_client.c 				    monc->m_auth->front.iov_base,
monc              201 net/ceph/mon_client.c 				    monc->m_auth->front_alloc_len);
monc              203 net/ceph/mon_client.c 	__send_prepared_auth_request(monc, ret);
monc              206 net/ceph/mon_client.c static void reopen_session(struct ceph_mon_client *monc)
monc              208 net/ceph/mon_client.c 	if (!monc->hunting)
monc              210 net/ceph/mon_client.c 		    monc->cur_mon, ceph_pr_addr(&monc->con.peer_addr));
monc              212 net/ceph/mon_client.c 	__close_session(monc);
monc              213 net/ceph/mon_client.c 	__open_session(monc);
monc              216 net/ceph/mon_client.c void ceph_monc_reopen_session(struct ceph_mon_client *monc)
monc              218 net/ceph/mon_client.c 	mutex_lock(&monc->mutex);
monc              219 net/ceph/mon_client.c 	reopen_session(monc);
monc              220 net/ceph/mon_client.c 	mutex_unlock(&monc->mutex);
monc              223 net/ceph/mon_client.c static void un_backoff(struct ceph_mon_client *monc)
monc              225 net/ceph/mon_client.c 	monc->hunt_mult /= 2; /* reduce by 50% */
monc              226 net/ceph/mon_client.c 	if (monc->hunt_mult < 1)
monc              227 net/ceph/mon_client.c 		monc->hunt_mult = 1;
monc              228 net/ceph/mon_client.c 	dout("%s hunt_mult now %d\n", __func__, monc->hunt_mult);
monc              234 net/ceph/mon_client.c static void __schedule_delayed(struct ceph_mon_client *monc)
monc              238 net/ceph/mon_client.c 	if (monc->hunting)
monc              239 net/ceph/mon_client.c 		delay = CEPH_MONC_HUNT_INTERVAL * monc->hunt_mult;
monc              244 net/ceph/mon_client.c 	mod_delayed_work(system_wq, &monc->delayed_work,
monc              259 net/ceph/mon_client.c static void __send_subscribe(struct ceph_mon_client *monc)
monc              261 net/ceph/mon_client.c 	struct ceph_msg *msg = monc->m_subscribe;
monc              267 net/ceph/mon_client.c 	dout("%s sent %lu\n", __func__, monc->sub_renew_sent);
monc              269 net/ceph/mon_client.c 	BUG_ON(monc->cur_mon < 0);
monc              271 net/ceph/mon_client.c 	if (!monc->sub_renew_sent)
monc              272 net/ceph/mon_client.c 		monc->sub_renew_sent = jiffies | 1; /* never 0 */
monc              276 net/ceph/mon_client.c 	for (i = 0; i < ARRAY_SIZE(monc->subs); i++) {
monc              277 net/ceph/mon_client.c 		if (monc->subs[i].want)
monc              282 net/ceph/mon_client.c 	for (i = 0; i < ARRAY_SIZE(monc->subs); i++) {
monc              286 net/ceph/mon_client.c 		if (!monc->subs[i].want)
monc              291 net/ceph/mon_client.c 		    monc->fs_cluster_id != CEPH_FS_CLUSTER_ID_NONE)
monc              292 net/ceph/mon_client.c 			len += sprintf(buf + len, ".%d", monc->fs_cluster_id);
monc              295 net/ceph/mon_client.c 		     le64_to_cpu(monc->subs[i].item.start),
monc              296 net/ceph/mon_client.c 		     monc->subs[i].item.flags);
monc              298 net/ceph/mon_client.c 		memcpy(p, &monc->subs[i].item, sizeof(monc->subs[i].item));
monc              299 net/ceph/mon_client.c 		p += sizeof(monc->subs[i].item);
monc              306 net/ceph/mon_client.c 	ceph_con_send(&monc->con, ceph_msg_get(msg));
monc              309 net/ceph/mon_client.c static void handle_subscribe_ack(struct ceph_mon_client *monc,
monc              319 net/ceph/mon_client.c 	mutex_lock(&monc->mutex);
monc              320 net/ceph/mon_client.c 	if (monc->sub_renew_sent) {
monc              325 net/ceph/mon_client.c 		monc->sub_renew_after = monc->sub_renew_sent +
monc              328 net/ceph/mon_client.c 		     monc->sub_renew_sent, seconds, monc->sub_renew_after);
monc              329 net/ceph/mon_client.c 		monc->sub_renew_sent = 0;
monc              332 net/ceph/mon_client.c 		     monc->sub_renew_sent, monc->sub_renew_after);
monc              334 net/ceph/mon_client.c 	mutex_unlock(&monc->mutex);
monc              347 net/ceph/mon_client.c static bool __ceph_monc_want_map(struct ceph_mon_client *monc, int sub,
monc              356 net/ceph/mon_client.c 	if (monc->subs[sub].want &&
monc              357 net/ceph/mon_client.c 	    monc->subs[sub].item.start == start &&
monc              358 net/ceph/mon_client.c 	    monc->subs[sub].item.flags == flags)
monc              361 net/ceph/mon_client.c 	monc->subs[sub].item.start = start;
monc              362 net/ceph/mon_client.c 	monc->subs[sub].item.flags = flags;
monc              363 net/ceph/mon_client.c 	monc->subs[sub].want = true;
monc              368 net/ceph/mon_client.c bool ceph_monc_want_map(struct ceph_mon_client *monc, int sub, u32 epoch,
monc              373 net/ceph/mon_client.c 	mutex_lock(&monc->mutex);
monc              374 net/ceph/mon_client.c 	need_request = __ceph_monc_want_map(monc, sub, epoch, continuous);
monc              375 net/ceph/mon_client.c 	mutex_unlock(&monc->mutex);
monc              386 net/ceph/mon_client.c static void __ceph_monc_got_map(struct ceph_mon_client *monc, int sub,
monc              391 net/ceph/mon_client.c 	if (monc->subs[sub].want) {
monc              392 net/ceph/mon_client.c 		if (monc->subs[sub].item.flags & CEPH_SUBSCRIBE_ONETIME)
monc              393 net/ceph/mon_client.c 			monc->subs[sub].want = false;
monc              395 net/ceph/mon_client.c 			monc->subs[sub].item.start = cpu_to_le64(epoch + 1);
monc              398 net/ceph/mon_client.c 	monc->subs[sub].have = epoch;
monc              401 net/ceph/mon_client.c void ceph_monc_got_map(struct ceph_mon_client *monc, int sub, u32 epoch)
monc              403 net/ceph/mon_client.c 	mutex_lock(&monc->mutex);
monc              404 net/ceph/mon_client.c 	__ceph_monc_got_map(monc, sub, epoch);
monc              405 net/ceph/mon_client.c 	mutex_unlock(&monc->mutex);
monc              409 net/ceph/mon_client.c void ceph_monc_renew_subs(struct ceph_mon_client *monc)
monc              411 net/ceph/mon_client.c 	mutex_lock(&monc->mutex);
monc              412 net/ceph/mon_client.c 	__send_subscribe(monc);
monc              413 net/ceph/mon_client.c 	mutex_unlock(&monc->mutex);
monc              423 net/ceph/mon_client.c int ceph_monc_wait_osdmap(struct ceph_mon_client *monc, u32 epoch,
monc              429 net/ceph/mon_client.c 	mutex_lock(&monc->mutex);
monc              430 net/ceph/mon_client.c 	while (monc->subs[CEPH_SUB_OSDMAP].have < epoch) {
monc              431 net/ceph/mon_client.c 		mutex_unlock(&monc->mutex);
monc              436 net/ceph/mon_client.c 		ret = wait_event_interruptible_timeout(monc->client->auth_wq,
monc              437 net/ceph/mon_client.c 				     monc->subs[CEPH_SUB_OSDMAP].have >= epoch,
monc              442 net/ceph/mon_client.c 		mutex_lock(&monc->mutex);
monc              445 net/ceph/mon_client.c 	mutex_unlock(&monc->mutex);
monc              454 net/ceph/mon_client.c int ceph_monc_open_session(struct ceph_mon_client *monc)
monc              456 net/ceph/mon_client.c 	mutex_lock(&monc->mutex);
monc              457 net/ceph/mon_client.c 	__ceph_monc_want_map(monc, CEPH_SUB_MONMAP, 0, true);
monc              458 net/ceph/mon_client.c 	__ceph_monc_want_map(monc, CEPH_SUB_OSDMAP, 0, false);
monc              459 net/ceph/mon_client.c 	__open_session(monc);
monc              460 net/ceph/mon_client.c 	__schedule_delayed(monc);
monc              461 net/ceph/mon_client.c 	mutex_unlock(&monc->mutex);
monc              466 net/ceph/mon_client.c static void ceph_monc_handle_map(struct ceph_mon_client *monc,
monc              469 net/ceph/mon_client.c 	struct ceph_client *client = monc->client;
monc              470 net/ceph/mon_client.c 	struct ceph_monmap *monmap = NULL, *old = monc->monmap;
monc              473 net/ceph/mon_client.c 	mutex_lock(&monc->mutex);
monc              487 net/ceph/mon_client.c 	if (ceph_check_fsid(monc->client, &monmap->fsid) < 0) {
monc              492 net/ceph/mon_client.c 	client->monc.monmap = monmap;
monc              495 net/ceph/mon_client.c 	__ceph_monc_got_map(monc, CEPH_SUB_MONMAP, monc->monmap->epoch);
monc              499 net/ceph/mon_client.c 	mutex_unlock(&monc->mutex);
monc              537 net/ceph/mon_client.c alloc_generic_request(struct ceph_mon_client *monc, gfp_t gfp)
monc              545 net/ceph/mon_client.c 	req->monc = monc;
monc              556 net/ceph/mon_client.c 	struct ceph_mon_client *monc = req->monc;
monc              561 net/ceph/mon_client.c 	req->tid = ++monc->last_tid;
monc              562 net/ceph/mon_client.c 	insert_generic_request(&monc->generic_request_tree, req);
monc              565 net/ceph/mon_client.c static void send_generic_request(struct ceph_mon_client *monc,
monc              572 net/ceph/mon_client.c 	ceph_con_send(&monc->con, ceph_msg_get(req->request));
monc              577 net/ceph/mon_client.c 	struct ceph_mon_client *monc = req->monc;
monc              580 net/ceph/mon_client.c 	erase_generic_request(&monc->generic_request_tree, req);
monc              603 net/ceph/mon_client.c 	struct ceph_mon_client *monc = req->monc;
monc              608 net/ceph/mon_client.c 	mutex_lock(&monc->mutex);
monc              609 net/ceph/mon_client.c 	lookup_req = lookup_generic_request(&monc->generic_request_tree,
monc              616 net/ceph/mon_client.c 	mutex_unlock(&monc->mutex);
monc              637 net/ceph/mon_client.c 	struct ceph_mon_client *monc = con->private;
monc              642 net/ceph/mon_client.c 	mutex_lock(&monc->mutex);
monc              643 net/ceph/mon_client.c 	req = lookup_generic_request(&monc->generic_request_tree, tid);
monc              658 net/ceph/mon_client.c 	mutex_unlock(&monc->mutex);
monc              665 net/ceph/mon_client.c static void handle_statfs_reply(struct ceph_mon_client *monc,
monc              677 net/ceph/mon_client.c 	mutex_lock(&monc->mutex);
monc              678 net/ceph/mon_client.c 	req = lookup_generic_request(&monc->generic_request_tree, tid);
monc              680 net/ceph/mon_client.c 		mutex_unlock(&monc->mutex);
monc              687 net/ceph/mon_client.c 	mutex_unlock(&monc->mutex);
monc              700 net/ceph/mon_client.c int ceph_monc_do_statfs(struct ceph_mon_client *monc, u64 data_pool,
monc              707 net/ceph/mon_client.c 	req = alloc_generic_request(monc, GFP_NOFS);
monc              723 net/ceph/mon_client.c 	mutex_lock(&monc->mutex);
monc              730 net/ceph/mon_client.c 	h->fsid = monc->monmap->fsid;
monc              733 net/ceph/mon_client.c 	send_generic_request(monc, req);
monc              734 net/ceph/mon_client.c 	mutex_unlock(&monc->mutex);
monc              743 net/ceph/mon_client.c static void handle_get_version_reply(struct ceph_mon_client *monc,
monc              759 net/ceph/mon_client.c 	mutex_lock(&monc->mutex);
monc              760 net/ceph/mon_client.c 	req = lookup_generic_request(&monc->generic_request_tree, handle);
monc              762 net/ceph/mon_client.c 		mutex_unlock(&monc->mutex);
monc              769 net/ceph/mon_client.c 	mutex_unlock(&monc->mutex);
monc              780 net/ceph/mon_client.c __ceph_monc_get_version(struct ceph_mon_client *monc, const char *what,
monc              785 net/ceph/mon_client.c 	req = alloc_generic_request(monc, GFP_NOIO);
monc              803 net/ceph/mon_client.c 	mutex_lock(&monc->mutex);
monc              813 net/ceph/mon_client.c 	send_generic_request(monc, req);
monc              814 net/ceph/mon_client.c 	mutex_unlock(&monc->mutex);
monc              828 net/ceph/mon_client.c int ceph_monc_get_version(struct ceph_mon_client *monc, const char *what,
monc              834 net/ceph/mon_client.c 	req = __ceph_monc_get_version(monc, what, NULL, 0);
monc              852 net/ceph/mon_client.c int ceph_monc_get_version_async(struct ceph_mon_client *monc, const char *what,
monc              857 net/ceph/mon_client.c 	req = __ceph_monc_get_version(monc, what, cb, private_data);
monc              866 net/ceph/mon_client.c static void handle_command_ack(struct ceph_mon_client *monc,
monc              880 net/ceph/mon_client.c 	mutex_lock(&monc->mutex);
monc              881 net/ceph/mon_client.c 	req = lookup_generic_request(&monc->generic_request_tree, tid);
monc              883 net/ceph/mon_client.c 		mutex_unlock(&monc->mutex);
monc              889 net/ceph/mon_client.c 	mutex_unlock(&monc->mutex);
monc              899 net/ceph/mon_client.c int ceph_monc_blacklist_add(struct ceph_mon_client *monc,
monc              907 net/ceph/mon_client.c 	req = alloc_generic_request(monc, GFP_NOIO);
monc              920 net/ceph/mon_client.c 	mutex_lock(&monc->mutex);
monc              926 net/ceph/mon_client.c 	h->fsid = monc->monmap->fsid;
monc              933 net/ceph/mon_client.c 	send_generic_request(monc, req);
monc              934 net/ceph/mon_client.c 	mutex_unlock(&monc->mutex);
monc              944 net/ceph/mon_client.c 		ret = ceph_wait_for_latest_osdmap(monc->client, 0);
monc              955 net/ceph/mon_client.c static void __resend_generic_request(struct ceph_mon_client *monc)
monc              960 net/ceph/mon_client.c 	for (p = rb_first(&monc->generic_request_tree); p; p = rb_next(p)) {
monc              964 net/ceph/mon_client.c 		ceph_con_send(&monc->con, ceph_msg_get(req->request));
monc              975 net/ceph/mon_client.c 	struct ceph_mon_client *monc =
monc              979 net/ceph/mon_client.c 	mutex_lock(&monc->mutex);
monc              980 net/ceph/mon_client.c 	if (monc->hunting) {
monc              982 net/ceph/mon_client.c 		reopen_session(monc);
monc              984 net/ceph/mon_client.c 		int is_auth = ceph_auth_is_authenticated(monc->auth);
monc              985 net/ceph/mon_client.c 		if (ceph_con_keepalive_expired(&monc->con,
monc              989 net/ceph/mon_client.c 			reopen_session(monc);
monc              992 net/ceph/mon_client.c 		if (!monc->hunting) {
monc              993 net/ceph/mon_client.c 			ceph_con_keepalive(&monc->con);
monc              994 net/ceph/mon_client.c 			__validate_auth(monc);
monc              995 net/ceph/mon_client.c 			un_backoff(monc);
monc              999 net/ceph/mon_client.c 		    !(monc->con.peer_features & CEPH_FEATURE_MON_STATEFUL_SUB)) {
monc             1003 net/ceph/mon_client.c 			     __func__, now, monc->sub_renew_after);
monc             1004 net/ceph/mon_client.c 			if (time_after_eq(now, monc->sub_renew_after))
monc             1005 net/ceph/mon_client.c 				__send_subscribe(monc);
monc             1008 net/ceph/mon_client.c 	__schedule_delayed(monc);
monc             1009 net/ceph/mon_client.c 	mutex_unlock(&monc->mutex);
monc             1016 net/ceph/mon_client.c static int build_initial_monmap(struct ceph_mon_client *monc)
monc             1018 net/ceph/mon_client.c 	struct ceph_options *opt = monc->client->options;
monc             1024 net/ceph/mon_client.c 	monc->monmap = kzalloc(struct_size(monc->monmap, mon_inst, num_mon),
monc             1026 net/ceph/mon_client.c 	if (!monc->monmap)
monc             1029 net/ceph/mon_client.c 		monc->monmap->mon_inst[i].addr = mon_addr[i];
monc             1030 net/ceph/mon_client.c 		monc->monmap->mon_inst[i].addr.nonce = 0;
monc             1031 net/ceph/mon_client.c 		monc->monmap->mon_inst[i].name.type =
monc             1033 net/ceph/mon_client.c 		monc->monmap->mon_inst[i].name.num = cpu_to_le64(i);
monc             1035 net/ceph/mon_client.c 	monc->monmap->num_mon = num_mon;
monc             1039 net/ceph/mon_client.c int ceph_monc_init(struct ceph_mon_client *monc, struct ceph_client *cl)
monc             1044 net/ceph/mon_client.c 	memset(monc, 0, sizeof(*monc));
monc             1045 net/ceph/mon_client.c 	monc->client = cl;
monc             1046 net/ceph/mon_client.c 	monc->monmap = NULL;
monc             1047 net/ceph/mon_client.c 	mutex_init(&monc->mutex);
monc             1049 net/ceph/mon_client.c 	err = build_initial_monmap(monc);
monc             1055 net/ceph/mon_client.c 	monc->auth = ceph_auth_init(cl->options->name,
monc             1057 net/ceph/mon_client.c 	if (IS_ERR(monc->auth)) {
monc             1058 net/ceph/mon_client.c 		err = PTR_ERR(monc->auth);
monc             1061 net/ceph/mon_client.c 	monc->auth->want_keys =
monc             1067 net/ceph/mon_client.c 	monc->m_subscribe_ack = ceph_msg_new(CEPH_MSG_MON_SUBSCRIBE_ACK,
monc             1070 net/ceph/mon_client.c 	if (!monc->m_subscribe_ack)
monc             1073 net/ceph/mon_client.c 	monc->m_subscribe = ceph_msg_new(CEPH_MSG_MON_SUBSCRIBE, 128,
monc             1075 net/ceph/mon_client.c 	if (!monc->m_subscribe)
monc             1078 net/ceph/mon_client.c 	monc->m_auth_reply = ceph_msg_new(CEPH_MSG_AUTH_REPLY, 4096,
monc             1080 net/ceph/mon_client.c 	if (!monc->m_auth_reply)
monc             1083 net/ceph/mon_client.c 	monc->m_auth = ceph_msg_new(CEPH_MSG_AUTH, 4096, GFP_KERNEL, true);
monc             1084 net/ceph/mon_client.c 	monc->pending_auth = 0;
monc             1085 net/ceph/mon_client.c 	if (!monc->m_auth)
monc             1088 net/ceph/mon_client.c 	ceph_con_init(&monc->con, monc, &mon_con_ops,
monc             1089 net/ceph/mon_client.c 		      &monc->client->msgr);
monc             1091 net/ceph/mon_client.c 	monc->cur_mon = -1;
monc             1092 net/ceph/mon_client.c 	monc->had_a_connection = false;
monc             1093 net/ceph/mon_client.c 	monc->hunt_mult = 1;
monc             1095 net/ceph/mon_client.c 	INIT_DELAYED_WORK(&monc->delayed_work, delayed_work);
monc             1096 net/ceph/mon_client.c 	monc->generic_request_tree = RB_ROOT;
monc             1097 net/ceph/mon_client.c 	monc->last_tid = 0;
monc             1099 net/ceph/mon_client.c 	monc->fs_cluster_id = CEPH_FS_CLUSTER_ID_NONE;
monc             1104 net/ceph/mon_client.c 	ceph_msg_put(monc->m_auth_reply);
monc             1106 net/ceph/mon_client.c 	ceph_msg_put(monc->m_subscribe);
monc             1108 net/ceph/mon_client.c 	ceph_msg_put(monc->m_subscribe_ack);
monc             1110 net/ceph/mon_client.c 	ceph_auth_destroy(monc->auth);
monc             1112 net/ceph/mon_client.c 	kfree(monc->monmap);
monc             1118 net/ceph/mon_client.c void ceph_monc_stop(struct ceph_mon_client *monc)
monc             1121 net/ceph/mon_client.c 	cancel_delayed_work_sync(&monc->delayed_work);
monc             1123 net/ceph/mon_client.c 	mutex_lock(&monc->mutex);
monc             1124 net/ceph/mon_client.c 	__close_session(monc);
monc             1125 net/ceph/mon_client.c 	monc->cur_mon = -1;
monc             1126 net/ceph/mon_client.c 	mutex_unlock(&monc->mutex);
monc             1136 net/ceph/mon_client.c 	ceph_auth_destroy(monc->auth);
monc             1138 net/ceph/mon_client.c 	WARN_ON(!RB_EMPTY_ROOT(&monc->generic_request_tree));
monc             1140 net/ceph/mon_client.c 	ceph_msg_put(monc->m_auth);
monc             1141 net/ceph/mon_client.c 	ceph_msg_put(monc->m_auth_reply);
monc             1142 net/ceph/mon_client.c 	ceph_msg_put(monc->m_subscribe);
monc             1143 net/ceph/mon_client.c 	ceph_msg_put(monc->m_subscribe_ack);
monc             1145 net/ceph/mon_client.c 	kfree(monc->monmap);
monc             1149 net/ceph/mon_client.c static void finish_hunting(struct ceph_mon_client *monc)
monc             1151 net/ceph/mon_client.c 	if (monc->hunting) {
monc             1152 net/ceph/mon_client.c 		dout("%s found mon%d\n", __func__, monc->cur_mon);
monc             1153 net/ceph/mon_client.c 		monc->hunting = false;
monc             1154 net/ceph/mon_client.c 		monc->had_a_connection = true;
monc             1155 net/ceph/mon_client.c 		un_backoff(monc);
monc             1156 net/ceph/mon_client.c 		__schedule_delayed(monc);
monc             1160 net/ceph/mon_client.c static void handle_auth_reply(struct ceph_mon_client *monc,
monc             1166 net/ceph/mon_client.c 	mutex_lock(&monc->mutex);
monc             1167 net/ceph/mon_client.c 	was_auth = ceph_auth_is_authenticated(monc->auth);
monc             1168 net/ceph/mon_client.c 	monc->pending_auth = 0;
monc             1169 net/ceph/mon_client.c 	ret = ceph_handle_auth_reply(monc->auth, msg->front.iov_base,
monc             1171 net/ceph/mon_client.c 				     monc->m_auth->front.iov_base,
monc             1172 net/ceph/mon_client.c 				     monc->m_auth->front_alloc_len);
monc             1174 net/ceph/mon_client.c 		__send_prepared_auth_request(monc, ret);
monc             1178 net/ceph/mon_client.c 	finish_hunting(monc);
monc             1181 net/ceph/mon_client.c 		monc->client->auth_err = ret;
monc             1182 net/ceph/mon_client.c 	} else if (!was_auth && ceph_auth_is_authenticated(monc->auth)) {
monc             1185 net/ceph/mon_client.c 		monc->client->msgr.inst.name.type = CEPH_ENTITY_TYPE_CLIENT;
monc             1186 net/ceph/mon_client.c 		monc->client->msgr.inst.name.num =
monc             1187 net/ceph/mon_client.c 					cpu_to_le64(monc->auth->global_id);
monc             1189 net/ceph/mon_client.c 		__send_subscribe(monc);
monc             1190 net/ceph/mon_client.c 		__resend_generic_request(monc);
monc             1192 net/ceph/mon_client.c 		pr_info("mon%d %s session established\n", monc->cur_mon,
monc             1193 net/ceph/mon_client.c 			ceph_pr_addr(&monc->con.peer_addr));
monc             1197 net/ceph/mon_client.c 	mutex_unlock(&monc->mutex);
monc             1198 net/ceph/mon_client.c 	if (monc->client->auth_err < 0)
monc             1199 net/ceph/mon_client.c 		wake_up_all(&monc->client->auth_wq);
monc             1202 net/ceph/mon_client.c static int __validate_auth(struct ceph_mon_client *monc)
monc             1206 net/ceph/mon_client.c 	if (monc->pending_auth)
monc             1209 net/ceph/mon_client.c 	ret = ceph_build_auth(monc->auth, monc->m_auth->front.iov_base,
monc             1210 net/ceph/mon_client.c 			      monc->m_auth->front_alloc_len);
monc             1213 net/ceph/mon_client.c 	__send_prepared_auth_request(monc, ret);
monc             1217 net/ceph/mon_client.c int ceph_monc_validate_auth(struct ceph_mon_client *monc)
monc             1221 net/ceph/mon_client.c 	mutex_lock(&monc->mutex);
monc             1222 net/ceph/mon_client.c 	ret = __validate_auth(monc);
monc             1223 net/ceph/mon_client.c 	mutex_unlock(&monc->mutex);
monc             1233 net/ceph/mon_client.c 	struct ceph_mon_client *monc = con->private;
monc             1236 net/ceph/mon_client.c 	if (!monc)
monc             1241 net/ceph/mon_client.c 		handle_auth_reply(monc, msg);
monc             1245 net/ceph/mon_client.c 		handle_subscribe_ack(monc, msg);
monc             1249 net/ceph/mon_client.c 		handle_statfs_reply(monc, msg);
monc             1253 net/ceph/mon_client.c 		handle_get_version_reply(monc, msg);
monc             1257 net/ceph/mon_client.c 		handle_command_ack(monc, msg);
monc             1261 net/ceph/mon_client.c 		ceph_monc_handle_map(monc, msg);
monc             1265 net/ceph/mon_client.c 		ceph_osdc_handle_map(&monc->client->osdc, msg);
monc             1270 net/ceph/mon_client.c 		if (monc->client->extra_mon_dispatch &&
monc             1271 net/ceph/mon_client.c 		    monc->client->extra_mon_dispatch(monc->client, msg) == 0)
monc             1287 net/ceph/mon_client.c 	struct ceph_mon_client *monc = con->private;
monc             1296 net/ceph/mon_client.c 		m = ceph_msg_get(monc->m_subscribe_ack);
monc             1302 net/ceph/mon_client.c 		m = ceph_msg_get(monc->m_auth_reply);
monc             1345 net/ceph/mon_client.c 	struct ceph_mon_client *monc = con->private;
monc             1347 net/ceph/mon_client.c 	mutex_lock(&monc->mutex);
monc             1348 net/ceph/mon_client.c 	dout("%s mon%d\n", __func__, monc->cur_mon);
monc             1349 net/ceph/mon_client.c 	if (monc->cur_mon >= 0) {
monc             1350 net/ceph/mon_client.c 		if (!monc->hunting) {
monc             1352 net/ceph/mon_client.c 			reopen_session(monc);
monc             1353 net/ceph/mon_client.c 			__schedule_delayed(monc);
monc             1358 net/ceph/mon_client.c 	mutex_unlock(&monc->mutex);
monc             2270 net/ceph/osd_client.c 	if (ceph_monc_want_map(&osdc->client->monc, CEPH_SUB_OSDMAP,
monc             2272 net/ceph/osd_client.c 		ceph_monc_renew_subs(&osdc->client->monc);
monc             2604 net/ceph/osd_client.c 	struct ceph_osd_client *osdc = &greq->monc->client->osdc;
monc             2645 net/ceph/osd_client.c 	ret = ceph_monc_get_version_async(&osdc->client->monc, "osdmap",
monc             3198 net/ceph/osd_client.c 	struct ceph_osd_client *osdc = &greq->monc->client->osdc;
monc             3241 net/ceph/osd_client.c 	ret = ceph_monc_get_version_async(&osdc->client->monc, "osdmap",
monc             4053 net/ceph/osd_client.c 	ceph_monc_got_map(&osdc->client->monc, CEPH_SUB_OSDMAP,
monc             5582 net/ceph/osd_client.c 	struct ceph_auth_client *ac = osdc->client->monc.auth;
monc             5610 net/ceph/osd_client.c 	struct ceph_auth_client *ac = osdc->client->monc.auth;
monc             5620 net/ceph/osd_client.c 	struct ceph_auth_client *ac = osdc->client->monc.auth;
monc             5629 net/ceph/osd_client.c 	struct ceph_auth_client *ac = osdc->client->monc.auth;
monc             5632 net/ceph/osd_client.c 	return ceph_monc_validate_auth(&osdc->client->monc);