Lines Matching refs:recon_state
3613 static int send_reconnect_partial(struct ceph_reconnect_state *recon_state)
3621 if (!recon_state->allow_multi)
3625 BUG_ON(!recon_state->nr_caps == !recon_state->nr_realms);
3641 if (recon_state->nr_caps) {
3643 err = ceph_pagelist_encode_32(recon_state->pagelist, 0);
3653 err = ceph_pagelist_encode_8(recon_state->pagelist, 1);
3657 page = list_first_entry(&recon_state->pagelist->head, struct page, lru);
3659 if (recon_state->nr_caps) {
3661 *addr = cpu_to_le32(recon_state->nr_caps);
3664 *(addr + 1) = cpu_to_le32(recon_state->nr_realms);
3671 reply->hdr.data_len = cpu_to_le32(recon_state->pagelist->length);
3672 ceph_msg_data_add_pagelist(reply, recon_state->pagelist);
3674 ceph_con_send(&recon_state->session->s_con, reply);
3675 ceph_pagelist_release(recon_state->pagelist);
3677 recon_state->pagelist = _pagelist;
3678 recon_state->nr_caps = 0;
3679 recon_state->nr_realms = 0;
3680 recon_state->msg_version = 5;
3733 struct ceph_reconnect_state *recon_state = arg;
3734 struct ceph_pagelist *pagelist = recon_state->pagelist;
3749 recon_state->msg_version >= 2);
3775 if (recon_state->msg_version >= 2) {
3804 if (recon_state->msg_version >= 2) {
3840 if (recon_state->msg_version >= 3) {
3861 err = send_reconnect_partial(recon_state);
3864 pagelist = recon_state->pagelist;
3872 if (recon_state->msg_version >= 3) {
3900 recon_state->nr_caps++;
3905 struct ceph_reconnect_state *recon_state)
3908 struct ceph_pagelist *pagelist = recon_state->pagelist;
3911 if (recon_state->msg_version >= 4) {
3927 if (recon_state->msg_version >= 4) {
3932 err = send_reconnect_partial(recon_state);
3935 pagelist = recon_state->pagelist;
3957 recon_state->nr_realms++;
3980 struct ceph_reconnect_state recon_state = {
3987 recon_state.pagelist = ceph_pagelist_alloc(GFP_NOFS);
3988 if (!recon_state.pagelist)
4039 err = ceph_pagelist_encode_32(recon_state.pagelist, 0);
4044 recon_state.msg_version = 3;
4045 recon_state.allow_multi = true;
4047 recon_state.msg_version = 3;
4049 recon_state.msg_version = 2;
4052 err = ceph_iterate_session_caps(session, reconnect_caps_cb, &recon_state);
4064 recon_state.pagelist->length +
4067 if (recon_state.msg_version >= 4) {
4075 if (!recon_state.allow_multi) {
4079 if (recon_state.nr_caps) {
4080 err = send_reconnect_partial(&recon_state);
4084 recon_state.msg_version = 5;
4088 err = encode_snap_realms(mdsc, &recon_state);
4092 if (recon_state.msg_version >= 5) {
4093 err = ceph_pagelist_encode_8(recon_state.pagelist, 0);
4098 if (recon_state.nr_caps || recon_state.nr_realms) {
4100 list_first_entry(&recon_state.pagelist->head,
4103 if (recon_state.nr_caps) {
4104 WARN_ON(recon_state.nr_realms != mdsc->num_snap_realms);
4105 *addr = cpu_to_le32(recon_state.nr_caps);
4106 } else if (recon_state.msg_version >= 4) {
4107 *(addr + 1) = cpu_to_le32(recon_state.nr_realms);
4112 reply->hdr.version = cpu_to_le16(recon_state.msg_version);
4113 if (recon_state.msg_version >= 4)
4116 reply->hdr.data_len = cpu_to_le32(recon_state.pagelist->length);
4117 ceph_msg_data_add_pagelist(reply, recon_state.pagelist);
4128 ceph_pagelist_release(recon_state.pagelist);
4136 ceph_pagelist_release(recon_state.pagelist);