Lines Matching refs:v2
112 iov_iter_is_discard(&con->v2.in_iter) ? "discard" : "need", in ceph_tcp_recv()
113 iov_iter_count(&con->v2.in_iter)); in ceph_tcp_recv()
114 ret = do_recvmsg(con->sock, &con->v2.in_iter); in ceph_tcp_recv()
116 iov_iter_count(&con->v2.in_iter)); in ceph_tcp_recv()
200 iov_iter_count(&con->v2.out_iter), con->v2.out_iter_sendpage); in ceph_tcp_send()
201 if (con->v2.out_iter_sendpage) in ceph_tcp_send()
202 ret = do_try_sendpage(con->sock, &con->v2.out_iter); in ceph_tcp_send()
204 ret = do_sendmsg(con->sock, &con->v2.out_iter); in ceph_tcp_send()
206 iov_iter_count(&con->v2.out_iter)); in ceph_tcp_send()
212 BUG_ON(con->v2.in_kvec_cnt >= ARRAY_SIZE(con->v2.in_kvecs)); in add_in_kvec()
213 WARN_ON(!iov_iter_is_kvec(&con->v2.in_iter)); in add_in_kvec()
215 con->v2.in_kvecs[con->v2.in_kvec_cnt].iov_base = buf; in add_in_kvec()
216 con->v2.in_kvecs[con->v2.in_kvec_cnt].iov_len = len; in add_in_kvec()
217 con->v2.in_kvec_cnt++; in add_in_kvec()
219 con->v2.in_iter.nr_segs++; in add_in_kvec()
220 con->v2.in_iter.count += len; in add_in_kvec()
225 WARN_ON(iov_iter_count(&con->v2.in_iter)); in reset_in_kvecs()
227 con->v2.in_kvec_cnt = 0; in reset_in_kvecs()
228 iov_iter_kvec(&con->v2.in_iter, READ, con->v2.in_kvecs, 0, 0); in reset_in_kvecs()
233 WARN_ON(iov_iter_count(&con->v2.in_iter)); in set_in_bvec()
235 con->v2.in_bvec = *bv; in set_in_bvec()
236 iov_iter_bvec(&con->v2.in_iter, READ, &con->v2.in_bvec, 1, bv->bv_len); in set_in_bvec()
241 WARN_ON(iov_iter_count(&con->v2.in_iter)); in set_in_skip()
244 iov_iter_discard(&con->v2.in_iter, READ, len); in set_in_skip()
249 BUG_ON(con->v2.out_kvec_cnt >= ARRAY_SIZE(con->v2.out_kvecs)); in add_out_kvec()
250 WARN_ON(!iov_iter_is_kvec(&con->v2.out_iter)); in add_out_kvec()
251 WARN_ON(con->v2.out_zero); in add_out_kvec()
253 con->v2.out_kvecs[con->v2.out_kvec_cnt].iov_base = buf; in add_out_kvec()
254 con->v2.out_kvecs[con->v2.out_kvec_cnt].iov_len = len; in add_out_kvec()
255 con->v2.out_kvec_cnt++; in add_out_kvec()
257 con->v2.out_iter.nr_segs++; in add_out_kvec()
258 con->v2.out_iter.count += len; in add_out_kvec()
263 WARN_ON(iov_iter_count(&con->v2.out_iter)); in reset_out_kvecs()
264 WARN_ON(con->v2.out_zero); in reset_out_kvecs()
266 con->v2.out_kvec_cnt = 0; in reset_out_kvecs()
268 iov_iter_kvec(&con->v2.out_iter, WRITE, con->v2.out_kvecs, 0, 0); in reset_out_kvecs()
269 con->v2.out_iter_sendpage = false; in reset_out_kvecs()
275 WARN_ON(iov_iter_count(&con->v2.out_iter)); in set_out_bvec()
276 WARN_ON(con->v2.out_zero); in set_out_bvec()
278 con->v2.out_bvec = *bv; in set_out_bvec()
279 con->v2.out_iter_sendpage = zerocopy; in set_out_bvec()
280 iov_iter_bvec(&con->v2.out_iter, WRITE, &con->v2.out_bvec, 1, in set_out_bvec()
281 con->v2.out_bvec.bv_len); in set_out_bvec()
286 WARN_ON(iov_iter_count(&con->v2.out_iter)); in set_out_bvec_zero()
287 WARN_ON(!con->v2.out_zero); in set_out_bvec_zero()
289 con->v2.out_bvec.bv_page = ceph_zero_page; in set_out_bvec_zero()
290 con->v2.out_bvec.bv_offset = 0; in set_out_bvec_zero()
291 con->v2.out_bvec.bv_len = min(con->v2.out_zero, (int)PAGE_SIZE); in set_out_bvec_zero()
292 con->v2.out_iter_sendpage = true; in set_out_bvec_zero()
293 iov_iter_bvec(&con->v2.out_iter, WRITE, &con->v2.out_bvec, 1, in set_out_bvec_zero()
294 con->v2.out_bvec.bv_len); in set_out_bvec_zero()
300 con->v2.out_zero += len; in out_zero_add()
309 if (WARN_ON(con->v2.conn_buf_cnt >= ARRAY_SIZE(con->v2.conn_bufs))) in alloc_conn_buf()
316 con->v2.conn_bufs[con->v2.conn_buf_cnt++] = buf; in alloc_conn_buf()
322 while (con->v2.conn_buf_cnt) in free_conn_bufs()
323 kvfree(con->v2.conn_bufs[--con->v2.conn_buf_cnt]); in free_conn_bufs()
328 BUG_ON(con->v2.in_sign_kvec_cnt >= ARRAY_SIZE(con->v2.in_sign_kvecs)); in add_in_sign_kvec()
330 con->v2.in_sign_kvecs[con->v2.in_sign_kvec_cnt].iov_base = buf; in add_in_sign_kvec()
331 con->v2.in_sign_kvecs[con->v2.in_sign_kvec_cnt].iov_len = len; in add_in_sign_kvec()
332 con->v2.in_sign_kvec_cnt++; in add_in_sign_kvec()
337 con->v2.in_sign_kvec_cnt = 0; in clear_in_sign_kvecs()
342 BUG_ON(con->v2.out_sign_kvec_cnt >= ARRAY_SIZE(con->v2.out_sign_kvecs)); in add_out_sign_kvec()
344 con->v2.out_sign_kvecs[con->v2.out_sign_kvec_cnt].iov_base = buf; in add_out_sign_kvec()
345 con->v2.out_sign_kvecs[con->v2.out_sign_kvec_cnt].iov_len = len; in add_out_sign_kvec()
346 con->v2.out_sign_kvec_cnt++; in add_out_sign_kvec()
351 con->v2.out_sign_kvec_cnt = 0; in clear_out_sign_kvecs()
356 return con->v2.con_mode == CEPH_CON_MODE_SECURE; in con_secure()
556 con->v2.out_epil.late_status = aborted ? FRAME_LATE_STATUS_ABORTED : in encode_epilogue_plain()
558 cpu_to_le32s(&con->v2.out_epil.front_crc); in encode_epilogue_plain()
559 cpu_to_le32s(&con->v2.out_epil.middle_crc); in encode_epilogue_plain()
560 cpu_to_le32s(&con->v2.out_epil.data_crc); in encode_epilogue_plain()
565 memset(&con->v2.out_epil, 0, sizeof(con->v2.out_epil)); in encode_epilogue_secure()
566 con->v2.out_epil.late_status = aborted ? FRAME_LATE_STATUS_ABORTED : in encode_epilogue_secure()
630 int ctrl_len = con->v2.in_desc.fd_lens[0]; in verify_control_crc()
633 WARN_ON(con->v2.in_kvecs[0].iov_len != ctrl_len); in verify_control_crc()
634 WARN_ON(con->v2.in_kvecs[1].iov_len != CEPH_CRC_LEN); in verify_control_crc()
636 crc = crc32c(-1, con->v2.in_kvecs[0].iov_base, ctrl_len); in verify_control_crc()
637 expected_crc = get_unaligned_le32(con->v2.in_kvecs[1].iov_base); in verify_control_crc()
700 __func__, con, con->v2.con_mode, session_key_len, con_secret_len); in setup_crypto()
701 WARN_ON(con->v2.hmac_tfm || con->v2.gcm_tfm || con->v2.gcm_req); in setup_crypto()
703 if (con->v2.con_mode != CEPH_CON_MODE_CRC && in setup_crypto()
704 con->v2.con_mode != CEPH_CON_MODE_SECURE) { in setup_crypto()
705 pr_err("bad con_mode %d\n", con->v2.con_mode); in setup_crypto()
710 WARN_ON(con->v2.con_mode != CEPH_CON_MODE_CRC); in setup_crypto()
716 con->v2.hmac_tfm = crypto_alloc_shash("hmac(sha256)", 0, 0); in setup_crypto()
718 if (IS_ERR(con->v2.hmac_tfm)) { in setup_crypto()
719 ret = PTR_ERR(con->v2.hmac_tfm); in setup_crypto()
720 con->v2.hmac_tfm = NULL; in setup_crypto()
726 crypto_shash_alignmask(con->v2.hmac_tfm)); in setup_crypto()
727 ret = crypto_shash_setkey(con->v2.hmac_tfm, session_key, in setup_crypto()
734 if (con->v2.con_mode == CEPH_CON_MODE_CRC) { in setup_crypto()
745 con->v2.gcm_tfm = crypto_alloc_aead("gcm(aes)", 0, 0); in setup_crypto()
747 if (IS_ERR(con->v2.gcm_tfm)) { in setup_crypto()
748 ret = PTR_ERR(con->v2.gcm_tfm); in setup_crypto()
749 con->v2.gcm_tfm = NULL; in setup_crypto()
755 crypto_aead_alignmask(con->v2.gcm_tfm)); in setup_crypto()
756 ret = crypto_aead_setkey(con->v2.gcm_tfm, con_secret, CEPH_GCM_KEY_LEN); in setup_crypto()
762 WARN_ON(crypto_aead_ivsize(con->v2.gcm_tfm) != CEPH_GCM_IV_LEN); in setup_crypto()
763 ret = crypto_aead_setauthsize(con->v2.gcm_tfm, CEPH_GCM_TAG_LEN); in setup_crypto()
769 con->v2.gcm_req = aead_request_alloc(con->v2.gcm_tfm, GFP_NOIO); in setup_crypto()
770 if (!con->v2.gcm_req) { in setup_crypto()
775 crypto_init_wait(&con->v2.gcm_wait); in setup_crypto()
776 aead_request_set_callback(con->v2.gcm_req, CRYPTO_TFM_REQ_MAY_BACKLOG, in setup_crypto()
777 crypto_req_done, &con->v2.gcm_wait); in setup_crypto()
779 memcpy(&con->v2.in_gcm_nonce, con_secret + CEPH_GCM_KEY_LEN, in setup_crypto()
781 memcpy(&con->v2.out_gcm_nonce, in setup_crypto()
790 SHASH_DESC_ON_STACK(desc, con->v2.hmac_tfm); /* tfm arg is ignored */ in hmac_sha256()
795 con->v2.hmac_tfm, kvec_cnt); in hmac_sha256()
797 if (!con->v2.hmac_tfm) { in hmac_sha256()
802 desc->tfm = con->v2.hmac_tfm; in hmac_sha256()
809 crypto_shash_alignmask(con->v2.hmac_tfm)); in hmac_sha256()
838 nonce = encrypt ? &con->v2.out_gcm_nonce : &con->v2.in_gcm_nonce; in gcm_crypt()
840 aead_request_set_ad(con->v2.gcm_req, 0); /* no AAD */ in gcm_crypt()
841 aead_request_set_crypt(con->v2.gcm_req, src, dst, src_len, (u8 *)nonce); in gcm_crypt()
842 ret = crypto_wait_req(encrypt ? crypto_aead_encrypt(con->v2.gcm_req) : in gcm_crypt()
843 crypto_aead_decrypt(con->v2.gcm_req), in gcm_crypt()
844 &con->v2.gcm_wait); in gcm_crypt()
1014 sg_init_one(&sg, con->v2.in_buf, CEPH_PREAMBLE_SECURE_LEN); in decrypt_preamble()
1020 int ctrl_len = con->v2.in_desc.fd_lens[0]; in decrypt_control_remainder()
1025 WARN_ON(con->v2.in_kvecs[0].iov_len != rem_len); in decrypt_control_remainder()
1026 WARN_ON(con->v2.in_kvecs[1].iov_len != pt_len); in decrypt_control_remainder()
1029 sg_set_buf(&sgs[0], con->v2.in_kvecs[0].iov_base, rem_len); in decrypt_control_remainder()
1030 sg_set_buf(&sgs[1], con->v2.in_buf, pt_len); in decrypt_control_remainder()
1044 ret = sg_alloc_table_from_pages(&enc_sgt, con->v2.in_enc_pages, in decrypt_tail()
1045 con->v2.in_enc_page_cnt, 0, tail_len, in decrypt_tail()
1050 ret = setup_message_sgs(&sgt, con->in_msg, FRONT_PAD(con->v2.in_buf), in decrypt_tail()
1051 MIDDLE_PAD(con->v2.in_buf), DATA_PAD(con->v2.in_buf), in decrypt_tail()
1052 con->v2.in_buf, true); in decrypt_tail()
1057 con->in_msg, con->v2.in_enc_page_cnt, sgt.orig_nents); in decrypt_tail()
1062 WARN_ON(!con->v2.in_enc_page_cnt); in decrypt_tail()
1063 ceph_release_page_vector(con->v2.in_enc_pages, in decrypt_tail()
1064 con->v2.in_enc_page_cnt); in decrypt_tail()
1065 con->v2.in_enc_pages = NULL; in decrypt_tail()
1066 con->v2.in_enc_page_cnt = 0; in decrypt_tail()
1361 ret = hmac_sha256(con, con->v2.in_sign_kvecs, con->v2.in_sign_kvec_cnt, in prepare_auth_signature()
1378 WARN_ON(con->v2.server_cookie); in prepare_client_ident()
1379 WARN_ON(con->v2.connect_seq); in prepare_client_ident()
1380 WARN_ON(con->v2.peer_global_seq); in prepare_client_ident()
1382 if (!con->v2.client_cookie) { in prepare_client_ident()
1384 get_random_bytes(&con->v2.client_cookie, in prepare_client_ident()
1385 sizeof(con->v2.client_cookie)); in prepare_client_ident()
1386 } while (!con->v2.client_cookie); in prepare_client_ident()
1388 con->v2.client_cookie); in prepare_client_ident()
1391 con->v2.client_cookie); in prepare_client_ident()
1397 global_id, con->v2.global_seq, client->supported_features, in prepare_client_ident()
1398 client->required_features, con->v2.client_cookie); in prepare_client_ident()
1412 ceph_encode_64(&p, con->v2.global_seq); in prepare_client_ident()
1416 ceph_encode_64(&p, con->v2.client_cookie); in prepare_client_ident()
1428 WARN_ON(!con->v2.client_cookie); in prepare_session_reconnect()
1429 WARN_ON(!con->v2.server_cookie); in prepare_session_reconnect()
1430 WARN_ON(!con->v2.connect_seq); in prepare_session_reconnect()
1431 WARN_ON(!con->v2.peer_global_seq); in prepare_session_reconnect()
1435 con->v2.client_cookie, con->v2.server_cookie, con->v2.global_seq, in prepare_session_reconnect()
1436 con->v2.connect_seq, con->in_seq); in prepare_session_reconnect()
1447 ceph_encode_64(&p, con->v2.client_cookie); in prepare_session_reconnect()
1448 ceph_encode_64(&p, con->v2.server_cookie); in prepare_session_reconnect()
1449 ceph_encode_64(&p, con->v2.global_seq); in prepare_session_reconnect()
1450 ceph_encode_64(&p, con->v2.connect_seq); in prepare_session_reconnect()
1459 struct ceph_timespec *ts = CTRL_BODY(con->v2.out_buf); in prepare_keepalive2()
1469 return prepare_control(con, FRAME_TAG_KEEPALIVE2, con->v2.out_buf, in prepare_keepalive2()
1481 p = CTRL_BODY(con->v2.out_buf); in prepare_ack()
1485 return prepare_control(con, FRAME_TAG_ACK, con->v2.out_buf, 8); in prepare_ack()
1491 con->out_msg, aborted, con->v2.out_epil.front_crc, in prepare_epilogue_plain()
1492 con->v2.out_epil.middle_crc, con->v2.out_epil.data_crc); in prepare_epilogue_plain()
1495 add_out_kvec(con, &con->v2.out_epil, CEPH_EPILOGUE_PLAIN_LEN); in prepare_epilogue_plain()
1506 prepare_head_plain(con, con->v2.out_buf, in prepare_message_plain()
1515 con->v2.out_state = OUT_S_FINISH_MESSAGE; in prepare_message_plain()
1519 con->v2.out_epil.front_crc = -1; in prepare_message_plain()
1520 con->v2.out_epil.middle_crc = -1; in prepare_message_plain()
1521 con->v2.out_state = OUT_S_QUEUE_DATA; in prepare_message_plain()
1526 con->v2.out_epil.front_crc = crc32c(-1, msg->front.iov_base, in prepare_message_plain()
1531 con->v2.out_epil.front_crc = -1; in prepare_message_plain()
1535 con->v2.out_epil.middle_crc = in prepare_message_plain()
1539 con->v2.out_epil.middle_crc = data_len(msg) ? -1 : 0; in prepare_message_plain()
1543 con->v2.out_state = OUT_S_QUEUE_DATA; in prepare_message_plain()
1545 con->v2.out_epil.data_crc = 0; in prepare_message_plain()
1547 con->v2.out_state = OUT_S_FINISH_MESSAGE; in prepare_message_plain()
1568 ret = prepare_head_secure_small(con, con->v2.out_buf, in prepare_message_secure()
1579 con->v2.out_state = OUT_S_FINISH_MESSAGE; in prepare_message_secure()
1585 &con->v2.out_epil, false); in prepare_message_secure()
1596 WARN_ON(con->v2.out_enc_pages || con->v2.out_enc_page_cnt); in prepare_message_secure()
1597 con->v2.out_enc_pages = enc_pages; in prepare_message_secure()
1598 con->v2.out_enc_page_cnt = enc_page_cnt; in prepare_message_secure()
1599 con->v2.out_enc_resid = tail_len; in prepare_message_secure()
1600 con->v2.out_enc_i = 0; in prepare_message_secure()
1614 con->v2.out_state = OUT_S_QUEUE_ENC_PAGE; in prepare_message_secure()
1644 encode_preamble(&desc, con->v2.out_buf); in prepare_message()
1645 fill_header2(CTRL_BODY(con->v2.out_buf), &con->out_msg->hdr, in prepare_message()
1694 add_in_kvec(con, con->v2.in_buf, in prepare_read_preamble()
1697 con->v2.in_state = IN_S_HANDLE_PREAMBLE; in prepare_read_preamble()
1702 int ctrl_len = con->v2.in_desc.fd_lens[0]; in prepare_read_control()
1715 memcpy(buf, con->v2.in_buf, CEPH_PREAMBLE_LEN); in prepare_read_control()
1728 add_in_kvec(con, CTRL_BODY(con->v2.in_buf), ctrl_len); in prepare_read_control()
1730 add_in_kvec(con, con->v2.in_buf, CEPH_CRC_LEN); in prepare_read_control()
1732 con->v2.in_state = IN_S_HANDLE_CONTROL; in prepare_read_control()
1738 int ctrl_len = con->v2.in_desc.fd_lens[0]; in prepare_read_control_remainder()
1746 memcpy(buf, CTRL_BODY(con->v2.in_buf), CEPH_PREAMBLE_INLINE_LEN); in prepare_read_control_remainder()
1750 add_in_kvec(con, con->v2.in_buf, in prepare_read_control_remainder()
1752 con->v2.in_state = IN_S_HANDLE_CONTROL_REMAINDER; in prepare_read_control_remainder()
1761 ceph_msg_data_cursor_init(&con->v2.in_cursor, con->in_msg, in prepare_read_data()
1764 get_bvec_at(&con->v2.in_cursor, &bv); in prepare_read_data()
1778 con->v2.in_state = IN_S_PREPARE_READ_DATA_CONT; in prepare_read_data()
1789 con->v2.in_bvec.bv_len); in prepare_read_data_cont()
1791 get_bvec_at(&con->v2.in_cursor, &bv); in prepare_read_data_cont()
1794 con->v2.in_bvec.bv_len); in prepare_read_data_cont()
1797 con->v2.in_bvec.bv_page, in prepare_read_data_cont()
1798 con->v2.in_bvec.bv_offset, in prepare_read_data_cont()
1799 con->v2.in_bvec.bv_len); in prepare_read_data_cont()
1802 ceph_msg_data_advance(&con->v2.in_cursor, con->v2.in_bvec.bv_len); in prepare_read_data_cont()
1803 if (con->v2.in_cursor.total_resid) { in prepare_read_data_cont()
1804 get_bvec_at(&con->v2.in_cursor, &bv); in prepare_read_data_cont()
1810 WARN_ON(con->v2.in_state != IN_S_PREPARE_READ_DATA_CONT); in prepare_read_data_cont()
1818 add_in_kvec(con, con->v2.in_buf, CEPH_EPILOGUE_PLAIN_LEN); in prepare_read_data_cont()
1819 con->v2.in_state = IN_S_HANDLE_EPILOGUE; in prepare_read_data_cont()
1842 con->v2.in_state = IN_S_PREPARE_READ_DATA; in prepare_read_tail_plain()
1844 add_in_kvec(con, con->v2.in_buf, CEPH_EPILOGUE_PLAIN_LEN); in prepare_read_tail_plain()
1845 con->v2.in_state = IN_S_HANDLE_EPILOGUE; in prepare_read_tail_plain()
1854 dout("%s con %p i %d resid %d\n", __func__, con, con->v2.in_enc_i, in prepare_read_enc_page()
1855 con->v2.in_enc_resid); in prepare_read_enc_page()
1856 WARN_ON(!con->v2.in_enc_resid); in prepare_read_enc_page()
1858 bv.bv_page = con->v2.in_enc_pages[con->v2.in_enc_i]; in prepare_read_enc_page()
1860 bv.bv_len = min(con->v2.in_enc_resid, (int)PAGE_SIZE); in prepare_read_enc_page()
1863 con->v2.in_enc_i++; in prepare_read_enc_page()
1864 con->v2.in_enc_resid -= bv.bv_len; in prepare_read_enc_page()
1866 if (con->v2.in_enc_resid) { in prepare_read_enc_page()
1867 con->v2.in_state = IN_S_PREPARE_READ_ENC_PAGE; in prepare_read_enc_page()
1875 WARN_ON(con->v2.in_enc_i != con->v2.in_enc_page_cnt); in prepare_read_enc_page()
1876 con->v2.in_state = IN_S_HANDLE_EPILOGUE; in prepare_read_enc_page()
1893 WARN_ON(con->v2.in_enc_pages || con->v2.in_enc_page_cnt); in prepare_read_tail_secure()
1894 con->v2.in_enc_pages = enc_pages; in prepare_read_tail_secure()
1895 con->v2.in_enc_page_cnt = enc_page_cnt; in prepare_read_tail_secure()
1896 con->v2.in_enc_resid = tail_len; in prepare_read_tail_secure()
1897 con->v2.in_enc_i = 0; in prepare_read_tail_secure()
1911 struct ceph_frame_desc *desc = &con->v2.in_desc; in prepare_skip_message()
1923 con->v2.in_state = IN_S_FINISH_SKIP; in prepare_skip_message()
1932 WARN_ON(con->v2.in_kvecs[0].iov_len != CEPH_BANNER_V2_PREFIX_LEN); in process_banner_prefix()
1934 p = con->v2.in_kvecs[0].iov_base; in process_banner_prefix()
1952 void *end = con->v2.in_kvecs[0].iov_base + con->v2.in_kvecs[0].iov_len; in process_banner_payload()
1959 p = con->v2.in_kvecs[0].iov_base; in process_banner_payload()
2178 ceph_decode_32_safe(&p, end, con->v2.con_mode, bad); in process_auth_done()
2182 __func__, con, global_id, con->v2.con_mode, payload_len); in process_auth_done()
2237 ret = hmac_sha256(con, con->v2.out_sign_kvecs, in process_auth_signature()
2238 con->v2.out_sign_kvec_cnt, hmac); in process_auth_signature()
2251 if (!con->v2.server_cookie) { in process_auth_signature()
2334 con->v2.peer_global_seq = global_seq; in process_server_ident()
2337 con->v2.server_cookie = cookie; in process_server_ident()
2341 WARN_ON(con->v2.server_cookie); in process_server_ident()
2343 WARN_ON(!con->v2.server_cookie); in process_server_ident()
2352 con->v2.out_state = OUT_S_GET_NEXT; in process_server_ident()
2403 con->v2.out_state = OUT_S_GET_NEXT; in process_session_reconnect_ok()
2425 WARN_ON(connect_seq <= con->v2.connect_seq); in process_session_retry()
2426 con->v2.connect_seq = connect_seq + 1; in process_session_retry()
2458 WARN_ON(global_seq <= con->v2.global_seq); in process_session_retry_global()
2459 con->v2.global_seq = ceph_get_global_seq(con->msgr, global_seq); in process_session_retry_global()
2568 int tag = con->v2.in_desc.fd_tag; in process_control()
2636 struct ceph_frame_desc *desc = &con->v2.in_desc; in process_message_header()
2695 void *end = p + con->v2.in_desc.fd_lens[0]; in __handle_control()
2699 if (con->v2.in_desc.fd_tag != FRAME_TAG_MESSAGE) in __handle_control()
2735 struct ceph_frame_desc *desc = &con->v2.in_desc; in handle_preamble()
2747 ret = decode_preamble(con->v2.in_buf, desc); in handle_preamble()
2766 return __handle_control(con, CTRL_BODY(con->v2.in_buf)); in handle_preamble()
2771 int ctrl_len = con->v2.in_desc.fd_lens[0]; in handle_control()
2788 memcpy(buf, con->v2.in_kvecs[0].iov_base, ctrl_len); in handle_control()
2792 return __handle_control(con, con->v2.in_kvecs[0].iov_base); in handle_control()
2808 return __handle_control(con, con->v2.in_kvecs[0].iov_base - in handle_control_remainder()
2826 ret = decode_epilogue(con->v2.in_buf, NULL, NULL, NULL); in handle_epilogue()
2832 ret = decode_epilogue(con->v2.in_buf, &front_crc, in handle_epilogue()
2855 gcm_inc_nonce(&con->v2.in_gcm_nonce); in finish_skip()
2865 con->v2.in_state); in populate_in_iter()
2866 WARN_ON(iov_iter_count(&con->v2.in_iter)); in populate_in_iter()
2875 switch (con->v2.in_state) { in populate_in_iter()
2904 WARN(1, "bad in_state %d", con->v2.in_state); in populate_in_iter()
2916 if (WARN_ON(!iov_iter_count(&con->v2.in_iter))) in populate_in_iter()
2919 iov_iter_count(&con->v2.in_iter)); in populate_in_iter()
2928 iov_iter_count(&con->v2.in_iter)); in ceph_con_v2_try_read()
2938 if (WARN_ON(!iov_iter_count(&con->v2.in_iter))) in ceph_con_v2_try_read()
2959 con->v2.out_epil.data_crc = -1; in queue_data()
2960 ceph_msg_data_cursor_init(&con->v2.out_cursor, con->out_msg, in queue_data()
2963 get_bvec_at(&con->v2.out_cursor, &bv); in queue_data()
2965 con->v2.out_state = OUT_S_QUEUE_DATA_CONT; in queue_data()
2972 con->v2.out_epil.data_crc = ceph_crc32c_page( in queue_data_cont()
2973 con->v2.out_epil.data_crc, con->v2.out_bvec.bv_page, in queue_data_cont()
2974 con->v2.out_bvec.bv_offset, con->v2.out_bvec.bv_len); in queue_data_cont()
2976 ceph_msg_data_advance(&con->v2.out_cursor, con->v2.out_bvec.bv_len); in queue_data_cont()
2977 if (con->v2.out_cursor.total_resid) { in queue_data_cont()
2978 get_bvec_at(&con->v2.out_cursor, &bv); in queue_data_cont()
2980 WARN_ON(con->v2.out_state != OUT_S_QUEUE_DATA_CONT); in queue_data_cont()
2990 con->v2.out_state = OUT_S_FINISH_MESSAGE; in queue_data_cont()
2997 dout("%s con %p i %d resid %d\n", __func__, con, con->v2.out_enc_i, in queue_enc_page()
2998 con->v2.out_enc_resid); in queue_enc_page()
2999 WARN_ON(!con->v2.out_enc_resid); in queue_enc_page()
3001 bv.bv_page = con->v2.out_enc_pages[con->v2.out_enc_i]; in queue_enc_page()
3003 bv.bv_len = min(con->v2.out_enc_resid, (int)PAGE_SIZE); in queue_enc_page()
3006 con->v2.out_enc_i++; in queue_enc_page()
3007 con->v2.out_enc_resid -= bv.bv_len; in queue_enc_page()
3009 if (con->v2.out_enc_resid) { in queue_enc_page()
3010 WARN_ON(con->v2.out_state != OUT_S_QUEUE_ENC_PAGE); in queue_enc_page()
3018 WARN_ON(con->v2.out_enc_i != con->v2.out_enc_page_cnt); in queue_enc_page()
3019 con->v2.out_state = OUT_S_FINISH_MESSAGE; in queue_enc_page()
3024 dout("%s con %p out_zero %d\n", __func__, con, con->v2.out_zero); in queue_zeros()
3026 if (con->v2.out_zero) { in queue_zeros()
3028 con->v2.out_zero -= con->v2.out_bvec.bv_len; in queue_zeros()
3029 con->v2.out_state = OUT_S_QUEUE_ZEROS; in queue_zeros()
3040 con->v2.out_state = OUT_S_FINISH_MESSAGE; in queue_zeros()
3048 if (con->v2.out_enc_pages) { in finish_message()
3049 WARN_ON(!con->v2.out_enc_page_cnt); in finish_message()
3050 ceph_release_page_vector(con->v2.out_enc_pages, in finish_message()
3051 con->v2.out_enc_page_cnt); in finish_message()
3052 con->v2.out_enc_pages = NULL; in finish_message()
3053 con->v2.out_enc_page_cnt = 0; in finish_message()
3061 con->v2.out_state = OUT_S_GET_NEXT; in finish_message()
3069 con->v2.out_state); in populate_out_iter()
3070 WARN_ON(iov_iter_count(&con->v2.out_iter)); in populate_out_iter()
3078 switch (con->v2.out_state) { in populate_out_iter()
3100 WARN(1, "bad out_state %d", con->v2.out_state); in populate_out_iter()
3104 WARN_ON(con->v2.out_state != OUT_S_GET_NEXT); in populate_out_iter()
3129 if (WARN_ON(!iov_iter_count(&con->v2.out_iter))) in populate_out_iter()
3132 iov_iter_count(&con->v2.out_iter)); in populate_out_iter()
3136 WARN_ON(iov_iter_count(&con->v2.out_iter)); in populate_out_iter()
3147 iov_iter_count(&con->v2.out_iter)); in ceph_con_v2_try_write()
3158 con->v2.global_seq = ceph_get_global_seq(con->msgr, 0); in ceph_con_v2_try_write()
3159 if (con->v2.server_cookie) in ceph_con_v2_try_write()
3160 con->v2.connect_seq++; in ceph_con_v2_try_write()
3185 if (!iov_iter_count(&con->v2.out_iter)) { in ceph_con_v2_try_write()
3234 con->v2.out_epil.front_crc = in prepare_zero_front()
3236 con->v2.out_epil.front_crc = in prepare_zero_front()
3237 crc32c_zeros(con->v2.out_epil.front_crc, resid); in prepare_zero_front()
3239 con->v2.out_epil.front_crc = crc32c_zeros(-1, resid); in prepare_zero_front()
3242 con->v2.out_iter.count -= resid; in prepare_zero_front()
3255 con->v2.out_epil.middle_crc = in prepare_zero_middle()
3257 con->v2.out_epil.middle_crc = in prepare_zero_middle()
3258 crc32c_zeros(con->v2.out_epil.middle_crc, resid); in prepare_zero_middle()
3260 con->v2.out_epil.middle_crc = crc32c_zeros(-1, resid); in prepare_zero_middle()
3263 con->v2.out_iter.count -= resid; in prepare_zero_middle()
3270 con->v2.out_epil.data_crc = crc32c_zeros(-1, data_len(con->out_msg)); in prepare_zero_data()
3280 WARN_ON(!iov_iter_is_kvec(&con->v2.out_iter)); in revoke_at_queue_data()
3281 resid = iov_iter_count(&con->v2.out_iter); in revoke_at_queue_data()
3293 WARN_ON(iov_iter_count(&con->v2.out_iter) != resid); in revoke_at_queue_data()
3294 con->v2.out_state = OUT_S_QUEUE_ZEROS; in revoke_at_queue_data()
3322 WARN_ON(!iov_iter_is_bvec(&con->v2.out_iter)); in revoke_at_queue_data_cont()
3323 resid = iov_iter_count(&con->v2.out_iter); in revoke_at_queue_data_cont()
3324 WARN_ON(!resid || resid > con->v2.out_bvec.bv_len); in revoke_at_queue_data_cont()
3325 sent = con->v2.out_bvec.bv_len - resid; in revoke_at_queue_data_cont()
3329 con->v2.out_epil.data_crc = ceph_crc32c_page( in revoke_at_queue_data_cont()
3330 con->v2.out_epil.data_crc, con->v2.out_bvec.bv_page, in revoke_at_queue_data_cont()
3331 con->v2.out_bvec.bv_offset, sent); in revoke_at_queue_data_cont()
3332 ceph_msg_data_advance(&con->v2.out_cursor, sent); in revoke_at_queue_data_cont()
3334 WARN_ON(resid > con->v2.out_cursor.total_resid); in revoke_at_queue_data_cont()
3335 con->v2.out_epil.data_crc = crc32c_zeros(con->v2.out_epil.data_crc, in revoke_at_queue_data_cont()
3336 con->v2.out_cursor.total_resid); in revoke_at_queue_data_cont()
3338 con->v2.out_iter.count -= resid; in revoke_at_queue_data_cont()
3339 out_zero_add(con, con->v2.out_cursor.total_resid); in revoke_at_queue_data_cont()
3348 WARN_ON(!iov_iter_is_kvec(&con->v2.out_iter)); in revoke_at_finish_message()
3349 resid = iov_iter_count(&con->v2.out_iter); in revoke_at_finish_message()
3369 con->v2.out_iter.count -= CEPH_EPILOGUE_PLAIN_LEN; in revoke_at_finish_message()
3370 WARN_ON(iov_iter_count(&con->v2.out_iter) != resid); in revoke_at_finish_message()
3371 con->v2.out_state = OUT_S_QUEUE_ZEROS; in revoke_at_finish_message()
3382 con->v2.out_iter.count -= CEPH_EPILOGUE_PLAIN_LEN; in revoke_at_finish_message()
3392 con->v2.out_iter.count -= CEPH_EPILOGUE_PLAIN_LEN; in revoke_at_finish_message()
3403 WARN_ON(con->v2.out_zero); in ceph_con_v2_revoke()
3406 WARN_ON(con->v2.out_state != OUT_S_QUEUE_ENC_PAGE && in ceph_con_v2_revoke()
3407 con->v2.out_state != OUT_S_FINISH_MESSAGE); in ceph_con_v2_revoke()
3412 switch (con->v2.out_state) { in ceph_con_v2_revoke()
3423 WARN(1, "bad out_state %d", con->v2.out_state); in ceph_con_v2_revoke()
3435 WARN_ON(!iov_iter_is_kvec(&con->v2.in_iter)); in revoke_at_prepare_read_data()
3436 resid = iov_iter_count(&con->v2.in_iter); in revoke_at_prepare_read_data()
3442 con->v2.in_iter.count -= resid; in revoke_at_prepare_read_data()
3444 con->v2.in_state = IN_S_FINISH_SKIP; in revoke_at_prepare_read_data()
3454 WARN_ON(!iov_iter_is_bvec(&con->v2.in_iter)); in revoke_at_prepare_read_data_cont()
3455 resid = iov_iter_count(&con->v2.in_iter); in revoke_at_prepare_read_data_cont()
3456 WARN_ON(!resid || resid > con->v2.in_bvec.bv_len); in revoke_at_prepare_read_data_cont()
3457 recved = con->v2.in_bvec.bv_len - resid; in revoke_at_prepare_read_data_cont()
3461 ceph_msg_data_advance(&con->v2.in_cursor, recved); in revoke_at_prepare_read_data_cont()
3462 WARN_ON(resid > con->v2.in_cursor.total_resid); in revoke_at_prepare_read_data_cont()
3466 con->v2.in_cursor.total_resid, remaining); in revoke_at_prepare_read_data_cont()
3467 con->v2.in_iter.count -= resid; in revoke_at_prepare_read_data_cont()
3468 set_in_skip(con, con->v2.in_cursor.total_resid + remaining); in revoke_at_prepare_read_data_cont()
3469 con->v2.in_state = IN_S_FINISH_SKIP; in revoke_at_prepare_read_data_cont()
3477 WARN_ON(!iov_iter_is_bvec(&con->v2.in_iter)); in revoke_at_prepare_read_enc_page()
3478 resid = iov_iter_count(&con->v2.in_iter); in revoke_at_prepare_read_enc_page()
3479 WARN_ON(!resid || resid > con->v2.in_bvec.bv_len); in revoke_at_prepare_read_enc_page()
3482 con->v2.in_enc_resid); in revoke_at_prepare_read_enc_page()
3483 con->v2.in_iter.count -= resid; in revoke_at_prepare_read_enc_page()
3484 set_in_skip(con, resid + con->v2.in_enc_resid); in revoke_at_prepare_read_enc_page()
3485 con->v2.in_state = IN_S_FINISH_SKIP; in revoke_at_prepare_read_enc_page()
3492 resid = iov_iter_count(&con->v2.in_iter); in revoke_at_handle_epilogue()
3496 con->v2.in_iter.count -= resid; in revoke_at_handle_epilogue()
3498 con->v2.in_state = IN_S_FINISH_SKIP; in revoke_at_handle_epilogue()
3503 switch (con->v2.in_state) { in ceph_con_v2_revoke_incoming()
3517 WARN(1, "bad in_state %d", con->v2.in_state); in ceph_con_v2_revoke_incoming()
3524 return con->v2.peer_global_seq; in ceph_con_v2_opened()
3529 con->v2.client_cookie = 0; in ceph_con_v2_reset_session()
3530 con->v2.server_cookie = 0; in ceph_con_v2_reset_session()
3531 con->v2.global_seq = 0; in ceph_con_v2_reset_session()
3532 con->v2.connect_seq = 0; in ceph_con_v2_reset_session()
3533 con->v2.peer_global_seq = 0; in ceph_con_v2_reset_session()
3538 iov_iter_truncate(&con->v2.in_iter, 0); in ceph_con_v2_reset_protocol()
3539 iov_iter_truncate(&con->v2.out_iter, 0); in ceph_con_v2_reset_protocol()
3540 con->v2.out_zero = 0; in ceph_con_v2_reset_protocol()
3546 if (con->v2.in_enc_pages) { in ceph_con_v2_reset_protocol()
3547 WARN_ON(!con->v2.in_enc_page_cnt); in ceph_con_v2_reset_protocol()
3548 ceph_release_page_vector(con->v2.in_enc_pages, in ceph_con_v2_reset_protocol()
3549 con->v2.in_enc_page_cnt); in ceph_con_v2_reset_protocol()
3550 con->v2.in_enc_pages = NULL; in ceph_con_v2_reset_protocol()
3551 con->v2.in_enc_page_cnt = 0; in ceph_con_v2_reset_protocol()
3553 if (con->v2.out_enc_pages) { in ceph_con_v2_reset_protocol()
3554 WARN_ON(!con->v2.out_enc_page_cnt); in ceph_con_v2_reset_protocol()
3555 ceph_release_page_vector(con->v2.out_enc_pages, in ceph_con_v2_reset_protocol()
3556 con->v2.out_enc_page_cnt); in ceph_con_v2_reset_protocol()
3557 con->v2.out_enc_pages = NULL; in ceph_con_v2_reset_protocol()
3558 con->v2.out_enc_page_cnt = 0; in ceph_con_v2_reset_protocol()
3561 con->v2.con_mode = CEPH_CON_MODE_UNKNOWN; in ceph_con_v2_reset_protocol()
3562 memzero_explicit(&con->v2.in_gcm_nonce, CEPH_GCM_IV_LEN); in ceph_con_v2_reset_protocol()
3563 memzero_explicit(&con->v2.out_gcm_nonce, CEPH_GCM_IV_LEN); in ceph_con_v2_reset_protocol()
3565 if (con->v2.hmac_tfm) { in ceph_con_v2_reset_protocol()
3566 crypto_free_shash(con->v2.hmac_tfm); in ceph_con_v2_reset_protocol()
3567 con->v2.hmac_tfm = NULL; in ceph_con_v2_reset_protocol()
3569 if (con->v2.gcm_req) { in ceph_con_v2_reset_protocol()
3570 aead_request_free(con->v2.gcm_req); in ceph_con_v2_reset_protocol()
3571 con->v2.gcm_req = NULL; in ceph_con_v2_reset_protocol()
3573 if (con->v2.gcm_tfm) { in ceph_con_v2_reset_protocol()
3574 crypto_free_aead(con->v2.gcm_tfm); in ceph_con_v2_reset_protocol()
3575 con->v2.gcm_tfm = NULL; in ceph_con_v2_reset_protocol()