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;
736 ret = crypto_shash_setkey(con->v2.hmac_tfm, session_key,
743 if (con->v2.con_mode == CEPH_CON_MODE_CRC) {
754 con->v2.gcm_tfm = crypto_alloc_aead("gcm(aes)", 0, 0);
756 if (IS_ERR(con->v2.gcm_tfm)) {
757 ret = PTR_ERR(con->v2.gcm_tfm);
758 con->v2.gcm_tfm = NULL;
764 crypto_aead_alignmask(con->v2.gcm_tfm));
765 ret = crypto_aead_setkey(con->v2.gcm_tfm, con_secret, CEPH_GCM_KEY_LEN);
771 WARN_ON(crypto_aead_ivsize(con->v2.gcm_tfm) != CEPH_GCM_IV_LEN);
772 ret = crypto_aead_setauthsize(con->v2.gcm_tfm, CEPH_GCM_TAG_LEN);
778 con->v2.gcm_req = aead_request_alloc(con->v2.gcm_tfm, GFP_NOIO);
779 if (!con->v2.gcm_req) {
784 crypto_init_wait(&con->v2.gcm_wait);
785 aead_request_set_callback(con->v2.gcm_req, CRYPTO_TFM_REQ_MAY_BACKLOG,
786 crypto_req_done, &con->v2.gcm_wait);
788 memcpy(&con->v2.in_gcm_nonce, con_secret + CEPH_GCM_KEY_LEN,
790 memcpy(&con->v2.out_gcm_nonce,
799 SHASH_DESC_ON_STACK(desc, con->v2.hmac_tfm); /* tfm arg is ignored */
804 con->v2.hmac_tfm, kvec_cnt);
806 if (!con->v2.hmac_tfm) {
811 desc->tfm = con->v2.hmac_tfm;
845 nonce = encrypt ? &con->v2.out_gcm_nonce : &con->v2.in_gcm_nonce;
847 aead_request_set_ad(con->v2.gcm_req, 0); /* no AAD */
848 aead_request_set_crypt(con->v2.gcm_req, src, dst, src_len, (u8 *)nonce);
849 ret = crypto_wait_req(encrypt ? crypto_aead_encrypt(con->v2.gcm_req) :
850 crypto_aead_decrypt(con->v2.gcm_req),
851 &con->v2.gcm_wait);
1064 sg_init_one(&sg, con->v2.in_buf, CEPH_PREAMBLE_SECURE_LEN);
1070 int ctrl_len = con->v2.in_desc.fd_lens[0];
1075 WARN_ON(con->v2.in_kvecs[0].iov_len != rem_len);
1076 WARN_ON(con->v2.in_kvecs[1].iov_len != pt_len);
1079 sg_set_buf(&sgs[0], con->v2.in_kvecs[0].iov_base, rem_len);
1080 sg_set_buf(&sgs[1], con->v2.in_buf, pt_len);
1090 struct ceph_msg_data_cursor *cursor = &con->v2.in_cursor;
1105 struct page *spage = con->v2.in_enc_pages[idx];
1137 ret = sg_alloc_table_from_pages(&enc_sgt, con->v2.in_enc_pages,
1138 con->v2.in_enc_page_cnt, 0, tail_len,
1145 pages = con->v2.in_enc_pages;
1148 ret = setup_message_sgs(&sgt, con->in_msg, FRONT_PAD(con->v2.in_buf),
1149 MIDDLE_PAD(con->v2.in_buf), DATA_PAD(con->v2.in_buf),
1150 con->v2.in_buf, pages, dpos, true);
1155 con->in_msg, con->v2.in_enc_page_cnt, sgt.orig_nents);
1161 ret = process_v2_sparse_read(con, con->v2.in_enc_pages, dpos);
1166 WARN_ON(!con->v2.in_enc_page_cnt);
1167 ceph_release_page_vector(con->v2.in_enc_pages,
1168 con->v2.in_enc_page_cnt);
1169 con->v2.in_enc_pages = NULL;
1170 con->v2.in_enc_page_cnt = 0;
1465 ret = hmac_sha256(con, con->v2.in_sign_kvecs, con->v2.in_sign_kvec_cnt,
1482 WARN_ON(con->v2.server_cookie);
1483 WARN_ON(con->v2.connect_seq);
1484 WARN_ON(con->v2.peer_global_seq);
1486 if (!con->v2.client_cookie) {
1488 get_random_bytes(&con->v2.client_cookie,
1489 sizeof(con->v2.client_cookie));
1490 } while (!con->v2.client_cookie);
1492 con->v2.client_cookie);
1495 con->v2.client_cookie);
1501 global_id, con->v2.global_seq, client->supported_features,
1502 client->required_features, con->v2.client_cookie);
1516 ceph_encode_64(&p, con->v2.global_seq);
1520 ceph_encode_64(&p, con->v2.client_cookie);
1532 WARN_ON(!con->v2.client_cookie);
1533 WARN_ON(!con->v2.server_cookie);
1534 WARN_ON(!con->v2.connect_seq);
1535 WARN_ON(!con->v2.peer_global_seq);
1539 con->v2.client_cookie, con->v2.server_cookie, con->v2.global_seq,
1540 con->v2.connect_seq, con->in_seq);
1551 ceph_encode_64(&p, con->v2.client_cookie);
1552 ceph_encode_64(&p, con->v2.server_cookie);
1553 ceph_encode_64(&p, con->v2.global_seq);
1554 ceph_encode_64(&p, con->v2.connect_seq);
1563 struct ceph_timespec *ts = CTRL_BODY(con->v2.out_buf);
1573 return prepare_control(con, FRAME_TAG_KEEPALIVE2, con->v2.out_buf,
1585 p = CTRL_BODY(con->v2.out_buf);
1589 return prepare_control(con, FRAME_TAG_ACK, con->v2.out_buf, 8);
1595 con->out_msg, aborted, con->v2.out_epil.front_crc,
1596 con->v2.out_epil.middle_crc, con->v2.out_epil.data_crc);
1599 add_out_kvec(con, &con->v2.out_epil, CEPH_EPILOGUE_PLAIN_LEN);
1610 prepare_head_plain(con, con->v2.out_buf,
1619 con->v2.out_state = OUT_S_FINISH_MESSAGE;
1623 con->v2.out_epil.front_crc = -1;
1624 con->v2.out_epil.middle_crc = -1;
1625 con->v2.out_state = OUT_S_QUEUE_DATA;
1630 con->v2.out_epil.front_crc = crc32c(-1, msg->front.iov_base,
1635 con->v2.out_epil.front_crc = -1;
1639 con->v2.out_epil.middle_crc =
1643 con->v2.out_epil.middle_crc = data_len(msg) ? -1 : 0;
1647 con->v2.out_state = OUT_S_QUEUE_DATA;
1649 con->v2.out_epil.data_crc = 0;
1651 con->v2.out_state = OUT_S_FINISH_MESSAGE;
1672 ret = prepare_head_secure_small(con, con->v2.out_buf,
1683 con->v2.out_state = OUT_S_FINISH_MESSAGE;
1689 &con->v2.out_epil, NULL, 0, false);
1700 WARN_ON(con->v2.out_enc_pages || con->v2.out_enc_page_cnt);
1701 con->v2.out_enc_pages = enc_pages;
1702 con->v2.out_enc_page_cnt = enc_page_cnt;
1703 con->v2.out_enc_resid = tail_len;
1704 con->v2.out_enc_i = 0;
1718 con->v2.out_state = OUT_S_QUEUE_ENC_PAGE;
1748 encode_preamble(&desc, con->v2.out_buf);
1749 fill_header2(CTRL_BODY(con->v2.out_buf), &con->out_msg->hdr,
1798 add_in_kvec(con, con->v2.in_buf,
1801 con->v2.in_state = IN_S_HANDLE_PREAMBLE;
1806 int ctrl_len = con->v2.in_desc.fd_lens[0];
1819 memcpy(buf, con->v2.in_buf, CEPH_PREAMBLE_LEN);
1832 add_in_kvec(con, CTRL_BODY(con->v2.in_buf), ctrl_len);
1834 add_in_kvec(con, con->v2.in_buf, CEPH_CRC_LEN);
1836 con->v2.in_state = IN_S_HANDLE_CONTROL;
1842 int ctrl_len = con->v2.in_desc.fd_lens[0];
1850 memcpy(buf, CTRL_BODY(con->v2.in_buf), CEPH_PREAMBLE_INLINE_LEN);
1854 add_in_kvec(con, con->v2.in_buf,
1856 con->v2.in_state = IN_S_HANDLE_CONTROL_REMAINDER;
1865 ceph_msg_data_cursor_init(&con->v2.in_cursor, con->in_msg,
1868 get_bvec_at(&con->v2.in_cursor, &bv);
1882 con->v2.in_state = IN_S_PREPARE_READ_DATA_CONT;
1893 con->v2.in_bvec.bv_len);
1895 get_bvec_at(&con->v2.in_cursor, &bv);
1898 con->v2.in_bvec.bv_len);
1901 con->v2.in_bvec.bv_page,
1902 con->v2.in_bvec.bv_offset,
1903 con->v2.in_bvec.bv_len);
1906 ceph_msg_data_advance(&con->v2.in_cursor, con->v2.in_bvec.bv_len);
1907 if (con->v2.in_cursor.total_resid) {
1908 get_bvec_at(&con->v2.in_cursor, &bv);
1914 WARN_ON(con->v2.in_state != IN_S_PREPARE_READ_DATA_CONT);
1922 add_in_kvec(con, con->v2.in_buf, CEPH_EPILOGUE_PLAIN_LEN);
1923 con->v2.in_state = IN_S_HANDLE_EPILOGUE;
1931 struct ceph_msg_data_cursor *cursor = &con->v2.in_cursor;
1933 WARN_ON(con->v2.in_state != IN_S_PREPARE_SPARSE_DATA_CONT);
1935 if (iov_iter_is_bvec(&con->v2.in_iter)) {
1939 con->v2.in_bvec.bv_len);
1943 con->v2.in_bvec.bv_len);
1946 con->v2.in_bvec.bv_page,
1947 con->v2.in_bvec.bv_offset,
1948 con->v2.in_bvec.bv_len);
1951 ceph_msg_data_advance(cursor, con->v2.in_bvec.bv_len);
1952 cursor->sr_resid -= con->v2.in_bvec.bv_len;
1954 con->v2.in_bvec.bv_len, cursor->sr_resid);
1965 con->v2.data_len_remain -= bv.bv_len;
1968 } else if (iov_iter_is_kvec(&con->v2.in_iter)) {
1970 if (con->v2.in_kvec_cnt) {
1971 WARN_ON_ONCE(con->v2.in_kvec_cnt > 1);
1973 con->v2.in_kvecs[0].iov_base,
1974 con->v2.in_kvecs[0].iov_len);
1987 add_in_kvec(con, con->v2.in_buf, CEPH_EPILOGUE_PLAIN_LEN);
1988 con->v2.in_state = IN_S_HANDLE_EPILOGUE;
1996 con->v2.data_len_remain -= ret;
2021 con->v2.data_len_remain -= ret;
2037 ceph_msg_data_cursor_init(&con->v2.in_cursor, msg,
2041 con->v2.in_state = IN_S_PREPARE_SPARSE_DATA_CONT;
2042 con->v2.data_len_remain = data_len(msg);
2067 con->v2.in_state = IN_S_PREPARE_SPARSE_DATA;
2069 con->v2.in_state = IN_S_PREPARE_READ_DATA;
2071 add_in_kvec(con, con->v2.in_buf, CEPH_EPILOGUE_PLAIN_LEN);
2072 con->v2.in_state = IN_S_HANDLE_EPILOGUE;
2081 dout("%s con %p i %d resid %d\n", __func__, con, con->v2.in_enc_i,
2082 con->v2.in_enc_resid);
2083 WARN_ON(!con->v2.in_enc_resid);
2085 bvec_set_page(&bv, con->v2.in_enc_pages[con->v2.in_enc_i],
2086 min(con->v2.in_enc_resid, (int)PAGE_SIZE), 0);
2089 con->v2.in_enc_i++;
2090 con->v2.in_enc_resid -= bv.bv_len;
2092 if (con->v2.in_enc_resid) {
2093 con->v2.in_state = IN_S_PREPARE_READ_ENC_PAGE;
2101 WARN_ON(con->v2.in_enc_i != con->v2.in_enc_page_cnt);
2102 con->v2.in_state = IN_S_HANDLE_EPILOGUE;
2119 WARN_ON(con->v2.in_enc_pages || con->v2.in_enc_page_cnt);
2120 con->v2.in_enc_pages = enc_pages;
2121 con->v2.in_enc_page_cnt = enc_page_cnt;
2122 con->v2.in_enc_resid = tail_len;
2123 con->v2.in_enc_i = 0;
2137 struct ceph_frame_desc *desc = &con->v2.in_desc;
2149 con->v2.in_state = IN_S_FINISH_SKIP;
2158 WARN_ON(con->v2.in_kvecs[0].iov_len != CEPH_BANNER_V2_PREFIX_LEN);
2160 p = con->v2.in_kvecs[0].iov_base;
2178 void *end = con->v2.in_kvecs[0].iov_base + con->v2.in_kvecs[0].iov_len;
2185 p = con->v2.in_kvecs[0].iov_base;
2404 ceph_decode_32_safe(&p, end, con->v2.con_mode, bad);
2408 __func__, con, global_id, con->v2.con_mode, payload_len);
2463 ret = hmac_sha256(con, con->v2.out_sign_kvecs,
2464 con->v2.out_sign_kvec_cnt, hmac);
2477 if (!con->v2.server_cookie) {
2560 con->v2.peer_global_seq = global_seq;
2563 con->v2.server_cookie = cookie;
2567 WARN_ON(con->v2.server_cookie);
2569 WARN_ON(!con->v2.server_cookie);
2578 con->v2.out_state = OUT_S_GET_NEXT;
2629 con->v2.out_state = OUT_S_GET_NEXT;
2651 WARN_ON(connect_seq <= con->v2.connect_seq);
2652 con->v2.connect_seq = connect_seq + 1;
2684 WARN_ON(global_seq <= con->v2.global_seq);
2685 con->v2.global_seq = ceph_get_global_seq(con->msgr, global_seq);
2794 int tag = con->v2.in_desc.fd_tag;
2862 struct ceph_frame_desc *desc = &con->v2.in_desc;
2921 void *end = p + con->v2.in_desc.fd_lens[0];
2925 if (con->v2.in_desc.fd_tag != FRAME_TAG_MESSAGE)
2961 struct ceph_frame_desc *desc = &con->v2.in_desc;
2973 ret = decode_preamble(con->v2.in_buf, desc);
2992 return __handle_control(con, CTRL_BODY(con->v2.in_buf));
2997 int ctrl_len = con->v2.in_desc.fd_lens[0];
3014 memcpy(buf, con->v2.in_kvecs[0].iov_base, ctrl_len);
3018 return __handle_control(con, con->v2.in_kvecs[0].iov_base);
3034 return __handle_control(con, con->v2.in_kvecs[0].iov_base -
3052 ret = decode_epilogue(con->v2.in_buf, NULL, NULL, NULL);
3058 ret = decode_epilogue(con->v2.in_buf, &front_crc,
3081 gcm_inc_nonce(&con->v2.in_gcm_nonce);
3091 con->v2.in_state);
3092 WARN_ON(iov_iter_count(&con->v2.in_iter));
3101 switch (con->v2.in_state) {
3136 WARN(1, "bad in_state %d", con->v2.in_state);
3148 if (WARN_ON(!iov_iter_count(&con->v2.in_iter)))
3151 iov_iter_count(&con->v2.in_iter));
3160 iov_iter_count(&con->v2.in_iter));
3170 if (WARN_ON(!iov_iter_count(&con->v2.in_iter)))
3191 con->v2.out_epil.data_crc = -1;
3192 ceph_msg_data_cursor_init(&con->v2.out_cursor, con->out_msg,
3195 get_bvec_at(&con->v2.out_cursor, &bv);
3197 con->v2.out_state = OUT_S_QUEUE_DATA_CONT;
3204 con->v2.out_epil.data_crc = ceph_crc32c_page(
3205 con->v2.out_epil.data_crc, con->v2.out_bvec.bv_page,
3206 con->v2.out_bvec.bv_offset, con->v2.out_bvec.bv_len);
3208 ceph_msg_data_advance(&con->v2.out_cursor, con->v2.out_bvec.bv_len);
3209 if (con->v2.out_cursor.total_resid) {
3210 get_bvec_at(&con->v2.out_cursor, &bv);
3212 WARN_ON(con->v2.out_state != OUT_S_QUEUE_DATA_CONT);
3222 con->v2.out_state = OUT_S_FINISH_MESSAGE;
3229 dout("%s con %p i %d resid %d\n", __func__, con, con->v2.out_enc_i,
3230 con->v2.out_enc_resid);
3231 WARN_ON(!con->v2.out_enc_resid);
3233 bvec_set_page(&bv, con->v2.out_enc_pages[con->v2.out_enc_i],
3234 min(con->v2.out_enc_resid, (int)PAGE_SIZE), 0);
3237 con->v2.out_enc_i++;
3238 con->v2.out_enc_resid -= bv.bv_len;
3240 if (con->v2.out_enc_resid) {
3241 WARN_ON(con->v2.out_state != OUT_S_QUEUE_ENC_PAGE);
3249 WARN_ON(con->v2.out_enc_i != con->v2.out_enc_page_cnt);
3250 con->v2.out_state = OUT_S_FINISH_MESSAGE;
3255 dout("%s con %p out_zero %d\n", __func__, con, con->v2.out_zero);
3257 if (con->v2.out_zero) {
3259 con->v2.out_zero -= con->v2.out_bvec.bv_len;
3260 con->v2.out_state = OUT_S_QUEUE_ZEROS;
3271 con->v2.out_state = OUT_S_FINISH_MESSAGE;
3279 if (con->v2.out_enc_pages) {
3280 WARN_ON(!con->v2.out_enc_page_cnt);
3281 ceph_release_page_vector(con->v2.out_enc_pages,
3282 con->v2.out_enc_page_cnt);
3283 con->v2.out_enc_pages = NULL;
3284 con->v2.out_enc_page_cnt = 0;
3292 con->v2.out_state = OUT_S_GET_NEXT;
3300 con->v2.out_state);
3301 WARN_ON(iov_iter_count(&con->v2.out_iter));
3309 switch (con->v2.out_state) {
3331 WARN(1, "bad out_state %d", con->v2.out_state);
3335 WARN_ON(con->v2.out_state != OUT_S_GET_NEXT);
3360 if (WARN_ON(!iov_iter_count(&con->v2.out_iter)))
3363 iov_iter_count(&con->v2.out_iter));
3367 WARN_ON(iov_iter_count(&con->v2.out_iter));
3378 iov_iter_count(&con->v2.out_iter));
3389 con->v2.global_seq = ceph_get_global_seq(con->msgr, 0);
3390 if (con->v2.server_cookie)
3391 con->v2.connect_seq++;
3416 if (!iov_iter_count(&con->v2.out_iter)) {
3465 con->v2.out_epil.front_crc =
3467 con->v2.out_epil.front_crc =
3468 crc32c_zeros(con->v2.out_epil.front_crc, resid);
3470 con->v2.out_epil.front_crc = crc32c_zeros(-1, resid);
3473 con->v2.out_iter.count -= resid;
3486 con->v2.out_epil.middle_crc =
3488 con->v2.out_epil.middle_crc =
3489 crc32c_zeros(con->v2.out_epil.middle_crc, resid);
3491 con->v2.out_epil.middle_crc = crc32c_zeros(-1, resid);
3494 con->v2.out_iter.count -= resid;
3501 con->v2.out_epil.data_crc = crc32c_zeros(-1, data_len(con->out_msg));
3511 WARN_ON(!iov_iter_is_kvec(&con->v2.out_iter));
3512 resid = iov_iter_count(&con->v2.out_iter);
3524 WARN_ON(iov_iter_count(&con->v2.out_iter) != resid);
3525 con->v2.out_state = OUT_S_QUEUE_ZEROS;
3553 WARN_ON(!iov_iter_is_bvec(&con->v2.out_iter));
3554 resid = iov_iter_count(&con->v2.out_iter);
3555 WARN_ON(!resid || resid > con->v2.out_bvec.bv_len);
3556 sent = con->v2.out_bvec.bv_len - resid;
3560 con->v2.out_epil.data_crc = ceph_crc32c_page(
3561 con->v2.out_epil.data_crc, con->v2.out_bvec.bv_page,
3562 con->v2.out_bvec.bv_offset, sent);
3563 ceph_msg_data_advance(&con->v2.out_cursor, sent);
3565 WARN_ON(resid > con->v2.out_cursor.total_resid);
3566 con->v2.out_epil.data_crc = crc32c_zeros(con->v2.out_epil.data_crc,
3567 con->v2.out_cursor.total_resid);
3569 con->v2.out_iter.count -= resid;
3570 out_zero_add(con, con->v2.out_cursor.total_resid);
3579 WARN_ON(!iov_iter_is_kvec(&con->v2.out_iter));
3580 resid = iov_iter_count(&con->v2.out_iter);
3600 con->v2.out_iter.count -= CEPH_EPILOGUE_PLAIN_LEN;
3601 WARN_ON(iov_iter_count(&con->v2.out_iter) != resid);
3602 con->v2.out_state = OUT_S_QUEUE_ZEROS;
3613 con->v2.out_iter.count -= CEPH_EPILOGUE_PLAIN_LEN;
3623 con->v2.out_iter.count -= CEPH_EPILOGUE_PLAIN_LEN;
3634 WARN_ON(con->v2.out_zero);
3637 WARN_ON(con->v2.out_state != OUT_S_QUEUE_ENC_PAGE &&
3638 con->v2.out_state != OUT_S_FINISH_MESSAGE);
3643 switch (con->v2.out_state) {
3654 WARN(1, "bad out_state %d", con->v2.out_state);
3666 WARN_ON(!iov_iter_is_kvec(&con->v2.in_iter));
3667 resid = iov_iter_count(&con->v2.in_iter);
3673 con->v2.in_iter.count -= resid;
3675 con->v2.in_state = IN_S_FINISH_SKIP;
3685 WARN_ON(!iov_iter_is_bvec(&con->v2.in_iter));
3686 resid = iov_iter_count(&con->v2.in_iter);
3687 WARN_ON(!resid || resid > con->v2.in_bvec.bv_len);
3688 recved = con->v2.in_bvec.bv_len - resid;
3692 ceph_msg_data_advance(&con->v2.in_cursor, recved);
3693 WARN_ON(resid > con->v2.in_cursor.total_resid);
3697 con->v2.in_cursor.total_resid, remaining);
3698 con->v2.in_iter.count -= resid;
3699 set_in_skip(con, con->v2.in_cursor.total_resid + remaining);
3700 con->v2.in_state = IN_S_FINISH_SKIP;
3708 WARN_ON(!iov_iter_is_bvec(&con->v2.in_iter));
3709 resid = iov_iter_count(&con->v2.in_iter);
3710 WARN_ON(!resid || resid > con->v2.in_bvec.bv_len);
3713 con->v2.in_enc_resid);
3714 con->v2.in_iter.count -= resid;
3715 set_in_skip(con, resid + con->v2.in_enc_resid);
3716 con->v2.in_state = IN_S_FINISH_SKIP;
3726 WARN_ON(!iov_iter_is_bvec(&con->v2.in_iter));
3727 resid = iov_iter_count(&con->v2.in_iter);
3730 remaining = CEPH_EPILOGUE_PLAIN_LEN + con->v2.data_len_remain;
3731 con->v2.in_iter.count -= resid;
3733 con->v2.in_state = IN_S_FINISH_SKIP;
3740 resid = iov_iter_count(&con->v2.in_iter);
3744 con->v2.in_iter.count -= resid;
3746 con->v2.in_state = IN_S_FINISH_SKIP;
3751 switch (con->v2.in_state) {
3769 WARN(1, "bad in_state %d", con->v2.in_state);
3776 return con->v2.peer_global_seq;
3781 con->v2.client_cookie = 0;
3782 con->v2.server_cookie = 0;
3783 con->v2.global_seq = 0;
3784 con->v2.connect_seq = 0;
3785 con->v2.peer_global_seq = 0;
3790 iov_iter_truncate(&con->v2.in_iter, 0);
3791 iov_iter_truncate(&con->v2.out_iter, 0);
3792 con->v2.out_zero = 0;
3798 if (con->v2.in_enc_pages) {
3799 WARN_ON(!con->v2.in_enc_page_cnt);
3800 ceph_release_page_vector(con->v2.in_enc_pages,
3801 con->v2.in_enc_page_cnt);
3802 con->v2.in_enc_pages = NULL;
3803 con->v2.in_enc_page_cnt = 0;
3805 if (con->v2.out_enc_pages) {
3806 WARN_ON(!con->v2.out_enc_page_cnt);
3807 ceph_release_page_vector(con->v2.out_enc_pages,
3808 con->v2.out_enc_page_cnt);
3809 con->v2.out_enc_pages = NULL;
3810 con->v2.out_enc_page_cnt = 0;
3813 con->v2.con_mode = CEPH_CON_MODE_UNKNOWN;
3814 memzero_explicit(&con->v2.in_gcm_nonce, CEPH_GCM_IV_LEN);
3815 memzero_explicit(&con->v2.out_gcm_nonce, CEPH_GCM_IV_LEN);
3817 if (con->v2.hmac_tfm) {
3818 crypto_free_shash(con->v2.hmac_tfm);
3819 con->v2.hmac_tfm = NULL;
3821 if (con->v2.gcm_req) {
3822 aead_request_free(con->v2.gcm_req);
3823 con->v2.gcm_req = NULL;
3825 if (con->v2.gcm_tfm) {
3826 crypto_free_aead(con->v2.gcm_tfm);
3827 con->v2.gcm_tfm = NULL;