Lines Matching refs:v2

114 	     iov_iter_is_discard(&con->v2.in_iter) ? "discard" : "need",
115 iov_iter_count(&con->v2.in_iter));
116 ret = do_recvmsg(con->sock, &con->v2.in_iter);
118 iov_iter_count(&con->v2.in_iter));
201 iov_iter_count(&con->v2.out_iter), con->v2.out_iter_sendpage);
202 if (con->v2.out_iter_sendpage)
203 ret = do_try_sendpage(con->sock, &con->v2.out_iter);
205 ret = do_sendmsg(con->sock, &con->v2.out_iter);
207 iov_iter_count(&con->v2.out_iter));
213 BUG_ON(con->v2.in_kvec_cnt >= ARRAY_SIZE(con->v2.in_kvecs));
214 WARN_ON(!iov_iter_is_kvec(&con->v2.in_iter));
216 con->v2.in_kvecs[con->v2.in_kvec_cnt].iov_base = buf;
217 con->v2.in_kvecs[con->v2.in_kvec_cnt].iov_len = len;
218 con->v2.in_kvec_cnt++;
220 con->v2.in_iter.nr_segs++;
221 con->v2.in_iter.count += len;
226 WARN_ON(iov_iter_count(&con->v2.in_iter));
228 con->v2.in_kvec_cnt = 0;
229 iov_iter_kvec(&con->v2.in_iter, ITER_DEST, con->v2.in_kvecs, 0, 0);
234 WARN_ON(iov_iter_count(&con->v2.in_iter));
236 con->v2.in_bvec = *bv;
237 iov_iter_bvec(&con->v2.in_iter, ITER_DEST, &con->v2.in_bvec, 1, bv->bv_len);
242 WARN_ON(iov_iter_count(&con->v2.in_iter));
245 iov_iter_discard(&con->v2.in_iter, ITER_DEST, len);
250 BUG_ON(con->v2.out_kvec_cnt >= ARRAY_SIZE(con->v2.out_kvecs));
251 WARN_ON(!iov_iter_is_kvec(&con->v2.out_iter));
252 WARN_ON(con->v2.out_zero);
254 con->v2.out_kvecs[con->v2.out_kvec_cnt].iov_base = buf;
255 con->v2.out_kvecs[con->v2.out_kvec_cnt].iov_len = len;
256 con->v2.out_kvec_cnt++;
258 con->v2.out_iter.nr_segs++;
259 con->v2.out_iter.count += len;
264 WARN_ON(iov_iter_count(&con->v2.out_iter));
265 WARN_ON(con->v2.out_zero);
267 con->v2.out_kvec_cnt = 0;
269 iov_iter_kvec(&con->v2.out_iter, ITER_SOURCE, con->v2.out_kvecs, 0, 0);
270 con->v2.out_iter_sendpage = false;
276 WARN_ON(iov_iter_count(&con->v2.out_iter));
277 WARN_ON(con->v2.out_zero);
279 con->v2.out_bvec = *bv;
280 con->v2.out_iter_sendpage = zerocopy;
281 iov_iter_bvec(&con->v2.out_iter, ITER_SOURCE, &con->v2.out_bvec, 1,
282 con->v2.out_bvec.bv_len);
287 WARN_ON(iov_iter_count(&con->v2.out_iter));
288 WARN_ON(!con->v2.out_zero);
290 bvec_set_page(&con->v2.out_bvec, ceph_zero_page,
291 min(con->v2.out_zero, (int)PAGE_SIZE), 0);
292 con->v2.out_iter_sendpage = true;
293 iov_iter_bvec(&con->v2.out_iter, ITER_SOURCE, &con->v2.out_bvec, 1,
294 con->v2.out_bvec.bv_len);
300 con->v2.out_zero += len;
309 if (WARN_ON(con->v2.conn_buf_cnt >= ARRAY_SIZE(con->v2.conn_bufs)))
316 con->v2.conn_bufs[con->v2.conn_buf_cnt++] = buf;
322 while (con->v2.conn_buf_cnt)
323 kvfree(con->v2.conn_bufs[--con->v2.conn_buf_cnt]);
328 BUG_ON(con->v2.in_sign_kvec_cnt >= ARRAY_SIZE(con->v2.in_sign_kvecs));
330 con->v2.in_sign_kvecs[con->v2.in_sign_kvec_cnt].iov_base = buf;
331 con->v2.in_sign_kvecs[con->v2.in_sign_kvec_cnt].iov_len = len;
332 con->v2.in_sign_kvec_cnt++;
337 con->v2.in_sign_kvec_cnt = 0;
342 BUG_ON(con->v2.out_sign_kvec_cnt >= ARRAY_SIZE(con->v2.out_sign_kvecs));
344 con->v2.out_sign_kvecs[con->v2.out_sign_kvec_cnt].iov_base = buf;
345 con->v2.out_sign_kvecs[con->v2.out_sign_kvec_cnt].iov_len = len;
346 con->v2.out_sign_kvec_cnt++;
351 con->v2.out_sign_kvec_cnt = 0;
356 return con->v2.con_mode == CEPH_CON_MODE_SECURE;
567 con->v2.out_epil.late_status = aborted ? FRAME_LATE_STATUS_ABORTED :
569 cpu_to_le32s(&con->v2.out_epil.front_crc);
570 cpu_to_le32s(&con->v2.out_epil.middle_crc);
571 cpu_to_le32s(&con->v2.out_epil.data_crc);
576 memset(&con->v2.out_epil, 0, sizeof(con->v2.out_epil));
577 con->v2.out_epil.late_status = aborted ? FRAME_LATE_STATUS_ABORTED :
641 int ctrl_len = con->v2.in_desc.fd_lens[0];
644 WARN_ON(con->v2.in_kvecs[0].iov_len != ctrl_len);
645 WARN_ON(con->v2.in_kvecs[1].iov_len != CEPH_CRC_LEN);
647 crc = crc32c(-1, con->v2.in_kvecs[0].iov_base, ctrl_len);
648 expected_crc = get_unaligned_le32(con->v2.in_kvecs[1].iov_base);
711 __func__, con, con->v2.con_mode, session_key_len, con_secret_len);
712 WARN_ON(con->v2.hmac_tfm || con->v2.gcm_tfm || con->v2.gcm_req);
714 if (con->v2.con_mode != CEPH_CON_MODE_CRC &&
715 con->v2.con_mode != CEPH_CON_MODE_SECURE) {
716 pr_err("bad con_mode %d\n", con->v2.con_mode);
721 WARN_ON(con->v2.con_mode != CEPH_CON_MODE_CRC);
727 con->v2.hmac_tfm = crypto_alloc_shash("hmac(sha256)", 0, 0);
729 if (IS_ERR(con->v2.hmac_tfm)) {
730 ret = PTR_ERR(con->v2.hmac_tfm);
731 con->v2.hmac_tfm = NULL;
737 crypto_shash_alignmask(con->v2.hmac_tfm));
738 ret = crypto_shash_setkey(con->v2.hmac_tfm, session_key,
745 if (con->v2.con_mode == CEPH_CON_MODE_CRC) {
756 con->v2.gcm_tfm = crypto_alloc_aead("gcm(aes)", 0, 0);
758 if (IS_ERR(con->v2.gcm_tfm)) {
759 ret = PTR_ERR(con->v2.gcm_tfm);
760 con->v2.gcm_tfm = NULL;
766 crypto_aead_alignmask(con->v2.gcm_tfm));
767 ret = crypto_aead_setkey(con->v2.gcm_tfm, con_secret, CEPH_GCM_KEY_LEN);
773 WARN_ON(crypto_aead_ivsize(con->v2.gcm_tfm) != CEPH_GCM_IV_LEN);
774 ret = crypto_aead_setauthsize(con->v2.gcm_tfm, CEPH_GCM_TAG_LEN);
780 con->v2.gcm_req = aead_request_alloc(con->v2.gcm_tfm, GFP_NOIO);
781 if (!con->v2.gcm_req) {
786 crypto_init_wait(&con->v2.gcm_wait);
787 aead_request_set_callback(con->v2.gcm_req, CRYPTO_TFM_REQ_MAY_BACKLOG,
788 crypto_req_done, &con->v2.gcm_wait);
790 memcpy(&con->v2.in_gcm_nonce, con_secret + CEPH_GCM_KEY_LEN,
792 memcpy(&con->v2.out_gcm_nonce,
801 SHASH_DESC_ON_STACK(desc, con->v2.hmac_tfm); /* tfm arg is ignored */
806 con->v2.hmac_tfm, kvec_cnt);
808 if (!con->v2.hmac_tfm) {
813 desc->tfm = con->v2.hmac_tfm;
820 crypto_shash_alignmask(con->v2.hmac_tfm));
849 nonce = encrypt ? &con->v2.out_gcm_nonce : &con->v2.in_gcm_nonce;
851 aead_request_set_ad(con->v2.gcm_req, 0); /* no AAD */
852 aead_request_set_crypt(con->v2.gcm_req, src, dst, src_len, (u8 *)nonce);
853 ret = crypto_wait_req(encrypt ? crypto_aead_encrypt(con->v2.gcm_req) :
854 crypto_aead_decrypt(con->v2.gcm_req),
855 &con->v2.gcm_wait);
1068 sg_init_one(&sg, con->v2.in_buf, CEPH_PREAMBLE_SECURE_LEN);
1074 int ctrl_len = con->v2.in_desc.fd_lens[0];
1079 WARN_ON(con->v2.in_kvecs[0].iov_len != rem_len);
1080 WARN_ON(con->v2.in_kvecs[1].iov_len != pt_len);
1083 sg_set_buf(&sgs[0], con->v2.in_kvecs[0].iov_base, rem_len);
1084 sg_set_buf(&sgs[1], con->v2.in_buf, pt_len);
1094 struct ceph_msg_data_cursor *cursor = &con->v2.in_cursor;
1109 struct page *spage = con->v2.in_enc_pages[idx];
1141 ret = sg_alloc_table_from_pages(&enc_sgt, con->v2.in_enc_pages,
1142 con->v2.in_enc_page_cnt, 0, tail_len,
1149 pages = con->v2.in_enc_pages;
1152 ret = setup_message_sgs(&sgt, con->in_msg, FRONT_PAD(con->v2.in_buf),
1153 MIDDLE_PAD(con->v2.in_buf), DATA_PAD(con->v2.in_buf),
1154 con->v2.in_buf, pages, dpos, true);
1159 con->in_msg, con->v2.in_enc_page_cnt, sgt.orig_nents);
1165 ret = process_v2_sparse_read(con, con->v2.in_enc_pages, dpos);
1170 WARN_ON(!con->v2.in_enc_page_cnt);
1171 ceph_release_page_vector(con->v2.in_enc_pages,
1172 con->v2.in_enc_page_cnt);
1173 con->v2.in_enc_pages = NULL;
1174 con->v2.in_enc_page_cnt = 0;
1469 ret = hmac_sha256(con, con->v2.in_sign_kvecs, con->v2.in_sign_kvec_cnt,
1486 WARN_ON(con->v2.server_cookie);
1487 WARN_ON(con->v2.connect_seq);
1488 WARN_ON(con->v2.peer_global_seq);
1490 if (!con->v2.client_cookie) {
1492 get_random_bytes(&con->v2.client_cookie,
1493 sizeof(con->v2.client_cookie));
1494 } while (!con->v2.client_cookie);
1496 con->v2.client_cookie);
1499 con->v2.client_cookie);
1505 global_id, con->v2.global_seq, client->supported_features,
1506 client->required_features, con->v2.client_cookie);
1520 ceph_encode_64(&p, con->v2.global_seq);
1524 ceph_encode_64(&p, con->v2.client_cookie);
1536 WARN_ON(!con->v2.client_cookie);
1537 WARN_ON(!con->v2.server_cookie);
1538 WARN_ON(!con->v2.connect_seq);
1539 WARN_ON(!con->v2.peer_global_seq);
1543 con->v2.client_cookie, con->v2.server_cookie, con->v2.global_seq,
1544 con->v2.connect_seq, con->in_seq);
1555 ceph_encode_64(&p, con->v2.client_cookie);
1556 ceph_encode_64(&p, con->v2.server_cookie);
1557 ceph_encode_64(&p, con->v2.global_seq);
1558 ceph_encode_64(&p, con->v2.connect_seq);
1567 struct ceph_timespec *ts = CTRL_BODY(con->v2.out_buf);
1577 return prepare_control(con, FRAME_TAG_KEEPALIVE2, con->v2.out_buf,
1589 p = CTRL_BODY(con->v2.out_buf);
1593 return prepare_control(con, FRAME_TAG_ACK, con->v2.out_buf, 8);
1599 con->out_msg, aborted, con->v2.out_epil.front_crc,
1600 con->v2.out_epil.middle_crc, con->v2.out_epil.data_crc);
1603 add_out_kvec(con, &con->v2.out_epil, CEPH_EPILOGUE_PLAIN_LEN);
1614 prepare_head_plain(con, con->v2.out_buf,
1623 con->v2.out_state = OUT_S_FINISH_MESSAGE;
1627 con->v2.out_epil.front_crc = -1;
1628 con->v2.out_epil.middle_crc = -1;
1629 con->v2.out_state = OUT_S_QUEUE_DATA;
1634 con->v2.out_epil.front_crc = crc32c(-1, msg->front.iov_base,
1639 con->v2.out_epil.front_crc = -1;
1643 con->v2.out_epil.middle_crc =
1647 con->v2.out_epil.middle_crc = data_len(msg) ? -1 : 0;
1651 con->v2.out_state = OUT_S_QUEUE_DATA;
1653 con->v2.out_epil.data_crc = 0;
1655 con->v2.out_state = OUT_S_FINISH_MESSAGE;
1676 ret = prepare_head_secure_small(con, con->v2.out_buf,
1687 con->v2.out_state = OUT_S_FINISH_MESSAGE;
1693 &con->v2.out_epil, NULL, 0, false);
1704 WARN_ON(con->v2.out_enc_pages || con->v2.out_enc_page_cnt);
1705 con->v2.out_enc_pages = enc_pages;
1706 con->v2.out_enc_page_cnt = enc_page_cnt;
1707 con->v2.out_enc_resid = tail_len;
1708 con->v2.out_enc_i = 0;
1722 con->v2.out_state = OUT_S_QUEUE_ENC_PAGE;
1752 encode_preamble(&desc, con->v2.out_buf);
1753 fill_header2(CTRL_BODY(con->v2.out_buf), &con->out_msg->hdr,
1802 add_in_kvec(con, con->v2.in_buf,
1805 con->v2.in_state = IN_S_HANDLE_PREAMBLE;
1810 int ctrl_len = con->v2.in_desc.fd_lens[0];
1823 memcpy(buf, con->v2.in_buf, CEPH_PREAMBLE_LEN);
1836 add_in_kvec(con, CTRL_BODY(con->v2.in_buf), ctrl_len);
1838 add_in_kvec(con, con->v2.in_buf, CEPH_CRC_LEN);
1840 con->v2.in_state = IN_S_HANDLE_CONTROL;
1846 int ctrl_len = con->v2.in_desc.fd_lens[0];
1854 memcpy(buf, CTRL_BODY(con->v2.in_buf), CEPH_PREAMBLE_INLINE_LEN);
1858 add_in_kvec(con, con->v2.in_buf,
1860 con->v2.in_state = IN_S_HANDLE_CONTROL_REMAINDER;
1869 ceph_msg_data_cursor_init(&con->v2.in_cursor, con->in_msg,
1872 get_bvec_at(&con->v2.in_cursor, &bv);
1886 con->v2.in_state = IN_S_PREPARE_READ_DATA_CONT;
1897 con->v2.in_bvec.bv_len);
1899 get_bvec_at(&con->v2.in_cursor, &bv);
1902 con->v2.in_bvec.bv_len);
1905 con->v2.in_bvec.bv_page,
1906 con->v2.in_bvec.bv_offset,
1907 con->v2.in_bvec.bv_len);
1910 ceph_msg_data_advance(&con->v2.in_cursor, con->v2.in_bvec.bv_len);
1911 if (con->v2.in_cursor.total_resid) {
1912 get_bvec_at(&con->v2.in_cursor, &bv);
1918 WARN_ON(con->v2.in_state != IN_S_PREPARE_READ_DATA_CONT);
1926 add_in_kvec(con, con->v2.in_buf, CEPH_EPILOGUE_PLAIN_LEN);
1927 con->v2.in_state = IN_S_HANDLE_EPILOGUE;
1935 struct ceph_msg_data_cursor *cursor = &con->v2.in_cursor;
1937 WARN_ON(con->v2.in_state != IN_S_PREPARE_SPARSE_DATA_CONT);
1939 if (iov_iter_is_bvec(&con->v2.in_iter)) {
1943 con->v2.in_bvec.bv_len);
1947 con->v2.in_bvec.bv_len);
1950 con->v2.in_bvec.bv_page,
1951 con->v2.in_bvec.bv_offset,
1952 con->v2.in_bvec.bv_len);
1955 ceph_msg_data_advance(cursor, con->v2.in_bvec.bv_len);
1956 cursor->sr_resid -= con->v2.in_bvec.bv_len;
1958 con->v2.in_bvec.bv_len, cursor->sr_resid);
1969 con->v2.data_len_remain -= bv.bv_len;
1972 } else if (iov_iter_is_kvec(&con->v2.in_iter)) {
1974 if (con->v2.in_kvec_cnt) {
1975 WARN_ON_ONCE(con->v2.in_kvec_cnt > 1);
1977 con->v2.in_kvecs[0].iov_base,
1978 con->v2.in_kvecs[0].iov_len);
1991 add_in_kvec(con, con->v2.in_buf, CEPH_EPILOGUE_PLAIN_LEN);
1992 con->v2.in_state = IN_S_HANDLE_EPILOGUE;
2000 con->v2.data_len_remain -= ret;
2025 con->v2.data_len_remain -= ret;
2042 con->v2.in_state = IN_S_PREPARE_SPARSE_DATA_CONT;
2043 con->v2.data_len_remain = data_len(msg);
2068 con->v2.in_state = IN_S_PREPARE_SPARSE_DATA;
2070 con->v2.in_state = IN_S_PREPARE_READ_DATA;
2072 add_in_kvec(con, con->v2.in_buf, CEPH_EPILOGUE_PLAIN_LEN);
2073 con->v2.in_state = IN_S_HANDLE_EPILOGUE;
2082 dout("%s con %p i %d resid %d\n", __func__, con, con->v2.in_enc_i,
2083 con->v2.in_enc_resid);
2084 WARN_ON(!con->v2.in_enc_resid);
2086 bvec_set_page(&bv, con->v2.in_enc_pages[con->v2.in_enc_i],
2087 min(con->v2.in_enc_resid, (int)PAGE_SIZE), 0);
2090 con->v2.in_enc_i++;
2091 con->v2.in_enc_resid -= bv.bv_len;
2093 if (con->v2.in_enc_resid) {
2094 con->v2.in_state = IN_S_PREPARE_READ_ENC_PAGE;
2102 WARN_ON(con->v2.in_enc_i != con->v2.in_enc_page_cnt);
2103 con->v2.in_state = IN_S_HANDLE_EPILOGUE;
2120 WARN_ON(con->v2.in_enc_pages || con->v2.in_enc_page_cnt);
2121 con->v2.in_enc_pages = enc_pages;
2122 con->v2.in_enc_page_cnt = enc_page_cnt;
2123 con->v2.in_enc_resid = tail_len;
2124 con->v2.in_enc_i = 0;
2138 struct ceph_frame_desc *desc = &con->v2.in_desc;
2150 con->v2.in_state = IN_S_FINISH_SKIP;
2159 WARN_ON(con->v2.in_kvecs[0].iov_len != CEPH_BANNER_V2_PREFIX_LEN);
2161 p = con->v2.in_kvecs[0].iov_base;
2179 void *end = con->v2.in_kvecs[0].iov_base + con->v2.in_kvecs[0].iov_len;
2186 p = con->v2.in_kvecs[0].iov_base;
2405 ceph_decode_32_safe(&p, end, con->v2.con_mode, bad);
2409 __func__, con, global_id, con->v2.con_mode, payload_len);
2464 ret = hmac_sha256(con, con->v2.out_sign_kvecs,
2465 con->v2.out_sign_kvec_cnt, hmac);
2478 if (!con->v2.server_cookie) {
2561 con->v2.peer_global_seq = global_seq;
2564 con->v2.server_cookie = cookie;
2568 WARN_ON(con->v2.server_cookie);
2570 WARN_ON(!con->v2.server_cookie);
2579 con->v2.out_state = OUT_S_GET_NEXT;
2630 con->v2.out_state = OUT_S_GET_NEXT;
2652 WARN_ON(connect_seq <= con->v2.connect_seq);
2653 con->v2.connect_seq = connect_seq + 1;
2685 WARN_ON(global_seq <= con->v2.global_seq);
2686 con->v2.global_seq = ceph_get_global_seq(con->msgr, global_seq);
2795 int tag = con->v2.in_desc.fd_tag;
2863 struct ceph_frame_desc *desc = &con->v2.in_desc;
2922 void *end = p + con->v2.in_desc.fd_lens[0];
2926 if (con->v2.in_desc.fd_tag != FRAME_TAG_MESSAGE)
2962 struct ceph_frame_desc *desc = &con->v2.in_desc;
2974 ret = decode_preamble(con->v2.in_buf, desc);
2993 return __handle_control(con, CTRL_BODY(con->v2.in_buf));
2998 int ctrl_len = con->v2.in_desc.fd_lens[0];
3015 memcpy(buf, con->v2.in_kvecs[0].iov_base, ctrl_len);
3019 return __handle_control(con, con->v2.in_kvecs[0].iov_base);
3035 return __handle_control(con, con->v2.in_kvecs[0].iov_base -
3053 ret = decode_epilogue(con->v2.in_buf, NULL, NULL, NULL);
3059 ret = decode_epilogue(con->v2.in_buf, &front_crc,
3082 gcm_inc_nonce(&con->v2.in_gcm_nonce);
3092 con->v2.in_state);
3093 WARN_ON(iov_iter_count(&con->v2.in_iter));
3102 switch (con->v2.in_state) {
3137 WARN(1, "bad in_state %d", con->v2.in_state);
3149 if (WARN_ON(!iov_iter_count(&con->v2.in_iter)))
3152 iov_iter_count(&con->v2.in_iter));
3161 iov_iter_count(&con->v2.in_iter));
3171 if (WARN_ON(!iov_iter_count(&con->v2.in_iter)))
3192 con->v2.out_epil.data_crc = -1;
3193 ceph_msg_data_cursor_init(&con->v2.out_cursor, con->out_msg,
3196 get_bvec_at(&con->v2.out_cursor, &bv);
3198 con->v2.out_state = OUT_S_QUEUE_DATA_CONT;
3205 con->v2.out_epil.data_crc = ceph_crc32c_page(
3206 con->v2.out_epil.data_crc, con->v2.out_bvec.bv_page,
3207 con->v2.out_bvec.bv_offset, con->v2.out_bvec.bv_len);
3209 ceph_msg_data_advance(&con->v2.out_cursor, con->v2.out_bvec.bv_len);
3210 if (con->v2.out_cursor.total_resid) {
3211 get_bvec_at(&con->v2.out_cursor, &bv);
3213 WARN_ON(con->v2.out_state != OUT_S_QUEUE_DATA_CONT);
3223 con->v2.out_state = OUT_S_FINISH_MESSAGE;
3230 dout("%s con %p i %d resid %d\n", __func__, con, con->v2.out_enc_i,
3231 con->v2.out_enc_resid);
3232 WARN_ON(!con->v2.out_enc_resid);
3234 bvec_set_page(&bv, con->v2.out_enc_pages[con->v2.out_enc_i],
3235 min(con->v2.out_enc_resid, (int)PAGE_SIZE), 0);
3238 con->v2.out_enc_i++;
3239 con->v2.out_enc_resid -= bv.bv_len;
3241 if (con->v2.out_enc_resid) {
3242 WARN_ON(con->v2.out_state != OUT_S_QUEUE_ENC_PAGE);
3250 WARN_ON(con->v2.out_enc_i != con->v2.out_enc_page_cnt);
3251 con->v2.out_state = OUT_S_FINISH_MESSAGE;
3256 dout("%s con %p out_zero %d\n", __func__, con, con->v2.out_zero);
3258 if (con->v2.out_zero) {
3260 con->v2.out_zero -= con->v2.out_bvec.bv_len;
3261 con->v2.out_state = OUT_S_QUEUE_ZEROS;
3272 con->v2.out_state = OUT_S_FINISH_MESSAGE;
3280 if (con->v2.out_enc_pages) {
3281 WARN_ON(!con->v2.out_enc_page_cnt);
3282 ceph_release_page_vector(con->v2.out_enc_pages,
3283 con->v2.out_enc_page_cnt);
3284 con->v2.out_enc_pages = NULL;
3285 con->v2.out_enc_page_cnt = 0;
3293 con->v2.out_state = OUT_S_GET_NEXT;
3301 con->v2.out_state);
3302 WARN_ON(iov_iter_count(&con->v2.out_iter));
3310 switch (con->v2.out_state) {
3332 WARN(1, "bad out_state %d", con->v2.out_state);
3336 WARN_ON(con->v2.out_state != OUT_S_GET_NEXT);
3361 if (WARN_ON(!iov_iter_count(&con->v2.out_iter)))
3364 iov_iter_count(&con->v2.out_iter));
3368 WARN_ON(iov_iter_count(&con->v2.out_iter));
3379 iov_iter_count(&con->v2.out_iter));
3390 con->v2.global_seq = ceph_get_global_seq(con->msgr, 0);
3391 if (con->v2.server_cookie)
3392 con->v2.connect_seq++;
3417 if (!iov_iter_count(&con->v2.out_iter)) {
3466 con->v2.out_epil.front_crc =
3468 con->v2.out_epil.front_crc =
3469 crc32c_zeros(con->v2.out_epil.front_crc, resid);
3471 con->v2.out_epil.front_crc = crc32c_zeros(-1, resid);
3474 con->v2.out_iter.count -= resid;
3487 con->v2.out_epil.middle_crc =
3489 con->v2.out_epil.middle_crc =
3490 crc32c_zeros(con->v2.out_epil.middle_crc, resid);
3492 con->v2.out_epil.middle_crc = crc32c_zeros(-1, resid);
3495 con->v2.out_iter.count -= resid;
3502 con->v2.out_epil.data_crc = crc32c_zeros(-1, data_len(con->out_msg));
3512 WARN_ON(!iov_iter_is_kvec(&con->v2.out_iter));
3513 resid = iov_iter_count(&con->v2.out_iter);
3525 WARN_ON(iov_iter_count(&con->v2.out_iter) != resid);
3526 con->v2.out_state = OUT_S_QUEUE_ZEROS;
3554 WARN_ON(!iov_iter_is_bvec(&con->v2.out_iter));
3555 resid = iov_iter_count(&con->v2.out_iter);
3556 WARN_ON(!resid || resid > con->v2.out_bvec.bv_len);
3557 sent = con->v2.out_bvec.bv_len - resid;
3561 con->v2.out_epil.data_crc = ceph_crc32c_page(
3562 con->v2.out_epil.data_crc, con->v2.out_bvec.bv_page,
3563 con->v2.out_bvec.bv_offset, sent);
3564 ceph_msg_data_advance(&con->v2.out_cursor, sent);
3566 WARN_ON(resid > con->v2.out_cursor.total_resid);
3567 con->v2.out_epil.data_crc = crc32c_zeros(con->v2.out_epil.data_crc,
3568 con->v2.out_cursor.total_resid);
3570 con->v2.out_iter.count -= resid;
3571 out_zero_add(con, con->v2.out_cursor.total_resid);
3580 WARN_ON(!iov_iter_is_kvec(&con->v2.out_iter));
3581 resid = iov_iter_count(&con->v2.out_iter);
3601 con->v2.out_iter.count -= CEPH_EPILOGUE_PLAIN_LEN;
3602 WARN_ON(iov_iter_count(&con->v2.out_iter) != resid);
3603 con->v2.out_state = OUT_S_QUEUE_ZEROS;
3614 con->v2.out_iter.count -= CEPH_EPILOGUE_PLAIN_LEN;
3624 con->v2.out_iter.count -= CEPH_EPILOGUE_PLAIN_LEN;
3635 WARN_ON(con->v2.out_zero);
3638 WARN_ON(con->v2.out_state != OUT_S_QUEUE_ENC_PAGE &&
3639 con->v2.out_state != OUT_S_FINISH_MESSAGE);
3644 switch (con->v2.out_state) {
3655 WARN(1, "bad out_state %d", con->v2.out_state);
3667 WARN_ON(!iov_iter_is_kvec(&con->v2.in_iter));
3668 resid = iov_iter_count(&con->v2.in_iter);
3674 con->v2.in_iter.count -= resid;
3676 con->v2.in_state = IN_S_FINISH_SKIP;
3686 WARN_ON(!iov_iter_is_bvec(&con->v2.in_iter));
3687 resid = iov_iter_count(&con->v2.in_iter);
3688 WARN_ON(!resid || resid > con->v2.in_bvec.bv_len);
3689 recved = con->v2.in_bvec.bv_len - resid;
3693 ceph_msg_data_advance(&con->v2.in_cursor, recved);
3694 WARN_ON(resid > con->v2.in_cursor.total_resid);
3698 con->v2.in_cursor.total_resid, remaining);
3699 con->v2.in_iter.count -= resid;
3700 set_in_skip(con, con->v2.in_cursor.total_resid + remaining);
3701 con->v2.in_state = IN_S_FINISH_SKIP;
3709 WARN_ON(!iov_iter_is_bvec(&con->v2.in_iter));
3710 resid = iov_iter_count(&con->v2.in_iter);
3711 WARN_ON(!resid || resid > con->v2.in_bvec.bv_len);
3714 con->v2.in_enc_resid);
3715 con->v2.in_iter.count -= resid;
3716 set_in_skip(con, resid + con->v2.in_enc_resid);
3717 con->v2.in_state = IN_S_FINISH_SKIP;
3727 WARN_ON(!iov_iter_is_bvec(&con->v2.in_iter));
3728 resid = iov_iter_count(&con->v2.in_iter);
3731 remaining = CEPH_EPILOGUE_PLAIN_LEN + con->v2.data_len_remain;
3732 con->v2.in_iter.count -= resid;
3734 con->v2.in_state = IN_S_FINISH_SKIP;
3741 resid = iov_iter_count(&con->v2.in_iter);
3745 con->v2.in_iter.count -= resid;
3747 con->v2.in_state = IN_S_FINISH_SKIP;
3752 switch (con->v2.in_state) {
3770 WARN(1, "bad in_state %d", con->v2.in_state);
3777 return con->v2.peer_global_seq;
3782 con->v2.client_cookie = 0;
3783 con->v2.server_cookie = 0;
3784 con->v2.global_seq = 0;
3785 con->v2.connect_seq = 0;
3786 con->v2.peer_global_seq = 0;
3791 iov_iter_truncate(&con->v2.in_iter, 0);
3792 iov_iter_truncate(&con->v2.out_iter, 0);
3793 con->v2.out_zero = 0;
3799 if (con->v2.in_enc_pages) {
3800 WARN_ON(!con->v2.in_enc_page_cnt);
3801 ceph_release_page_vector(con->v2.in_enc_pages,
3802 con->v2.in_enc_page_cnt);
3803 con->v2.in_enc_pages = NULL;
3804 con->v2.in_enc_page_cnt = 0;
3806 if (con->v2.out_enc_pages) {
3807 WARN_ON(!con->v2.out_enc_page_cnt);
3808 ceph_release_page_vector(con->v2.out_enc_pages,
3809 con->v2.out_enc_page_cnt);
3810 con->v2.out_enc_pages = NULL;
3811 con->v2.out_enc_page_cnt = 0;
3814 con->v2.con_mode = CEPH_CON_MODE_UNKNOWN;
3815 memzero_explicit(&con->v2.in_gcm_nonce, CEPH_GCM_IV_LEN);
3816 memzero_explicit(&con->v2.out_gcm_nonce, CEPH_GCM_IV_LEN);
3818 if (con->v2.hmac_tfm) {
3819 crypto_free_shash(con->v2.hmac_tfm);
3820 con->v2.hmac_tfm = NULL;
3822 if (con->v2.gcm_req) {
3823 aead_request_free(con->v2.gcm_req);
3824 con->v2.gcm_req = NULL;
3826 if (con->v2.gcm_tfm) {
3827 crypto_free_aead(con->v2.gcm_tfm);
3828 con->v2.gcm_tfm = NULL;