Lines Matching refs:recon_state

4179 static int send_reconnect_partial(struct ceph_reconnect_state *recon_state)
4187 if (!recon_state->allow_multi)
4191 BUG_ON(!recon_state->nr_caps == !recon_state->nr_realms);
4207 if (recon_state->nr_caps) {
4209 err = ceph_pagelist_encode_32(recon_state->pagelist, 0);
4219 err = ceph_pagelist_encode_8(recon_state->pagelist, 1);
4223 page = list_first_entry(&recon_state->pagelist->head, struct page, lru);
4225 if (recon_state->nr_caps) {
4227 *addr = cpu_to_le32(recon_state->nr_caps);
4230 *(addr + 1) = cpu_to_le32(recon_state->nr_realms);
4237 reply->hdr.data_len = cpu_to_le32(recon_state->pagelist->length);
4238 ceph_msg_data_add_pagelist(reply, recon_state->pagelist);
4240 ceph_con_send(&recon_state->session->s_con, reply);
4241 ceph_pagelist_release(recon_state->pagelist);
4243 recon_state->pagelist = _pagelist;
4244 recon_state->nr_caps = 0;
4245 recon_state->nr_realms = 0;
4246 recon_state->msg_version = 5;
4298 struct ceph_reconnect_state *recon_state = arg;
4299 struct ceph_pagelist *pagelist = recon_state->pagelist;
4311 recon_state->msg_version >= 2);
4347 if (recon_state->msg_version >= 2) {
4376 if (recon_state->msg_version >= 2) {
4412 if (recon_state->msg_version >= 3) {
4433 err = send_reconnect_partial(recon_state);
4436 pagelist = recon_state->pagelist;
4444 if (recon_state->msg_version >= 3) {
4472 recon_state->nr_caps++;
4477 struct ceph_reconnect_state *recon_state)
4480 struct ceph_pagelist *pagelist = recon_state->pagelist;
4483 if (recon_state->msg_version >= 4) {
4499 if (recon_state->msg_version >= 4) {
4504 err = send_reconnect_partial(recon_state);
4507 pagelist = recon_state->pagelist;
4529 recon_state->nr_realms++;
4552 struct ceph_reconnect_state recon_state = {
4559 recon_state.pagelist = ceph_pagelist_alloc(GFP_NOFS);
4560 if (!recon_state.pagelist)
4609 err = ceph_pagelist_encode_32(recon_state.pagelist, 0);
4614 recon_state.msg_version = 3;
4615 recon_state.allow_multi = true;
4617 recon_state.msg_version = 3;
4619 recon_state.msg_version = 2;
4622 err = ceph_iterate_session_caps(session, reconnect_caps_cb, &recon_state);
4634 recon_state.pagelist->length +
4637 if (recon_state.msg_version >= 4) {
4645 if (!recon_state.allow_multi) {
4649 if (recon_state.nr_caps) {
4650 err = send_reconnect_partial(&recon_state);
4654 recon_state.msg_version = 5;
4658 err = encode_snap_realms(mdsc, &recon_state);
4662 if (recon_state.msg_version >= 5) {
4663 err = ceph_pagelist_encode_8(recon_state.pagelist, 0);
4668 if (recon_state.nr_caps || recon_state.nr_realms) {
4670 list_first_entry(&recon_state.pagelist->head,
4673 if (recon_state.nr_caps) {
4674 WARN_ON(recon_state.nr_realms != mdsc->num_snap_realms);
4675 *addr = cpu_to_le32(recon_state.nr_caps);
4676 } else if (recon_state.msg_version >= 4) {
4677 *(addr + 1) = cpu_to_le32(recon_state.nr_realms);
4682 reply->hdr.version = cpu_to_le16(recon_state.msg_version);
4683 if (recon_state.msg_version >= 4)
4686 reply->hdr.data_len = cpu_to_le32(recon_state.pagelist->length);
4687 ceph_msg_data_add_pagelist(reply, recon_state.pagelist);
4698 ceph_pagelist_release(recon_state.pagelist);
4706 ceph_pagelist_release(recon_state.pagelist);