Lines Matching full:v2
114 iov_iter_is_discard(&con->v2.in_iter) ? "discard" : "need", in ceph_tcp_recv()
115 iov_iter_count(&con->v2.in_iter)); in ceph_tcp_recv()
116 ret = do_recvmsg(con->sock, &con->v2.in_iter); in ceph_tcp_recv()
118 iov_iter_count(&con->v2.in_iter)); in ceph_tcp_recv()
201 iov_iter_count(&con->v2.out_iter), con->v2.out_iter_sendpage); in ceph_tcp_send()
202 if (con->v2.out_iter_sendpage) in ceph_tcp_send()
203 ret = do_try_sendpage(con->sock, &con->v2.out_iter); in ceph_tcp_send()
205 ret = do_sendmsg(con->sock, &con->v2.out_iter); in ceph_tcp_send()
207 iov_iter_count(&con->v2.out_iter)); in ceph_tcp_send()
213 BUG_ON(con->v2.in_kvec_cnt >= ARRAY_SIZE(con->v2.in_kvecs)); in add_in_kvec()
214 WARN_ON(!iov_iter_is_kvec(&con->v2.in_iter)); in add_in_kvec()
216 con->v2.in_kvecs[con->v2.in_kvec_cnt].iov_base = buf; in add_in_kvec()
217 con->v2.in_kvecs[con->v2.in_kvec_cnt].iov_len = len; in add_in_kvec()
218 con->v2.in_kvec_cnt++; in add_in_kvec()
220 con->v2.in_iter.nr_segs++; in add_in_kvec()
221 con->v2.in_iter.count += len; in add_in_kvec()
226 WARN_ON(iov_iter_count(&con->v2.in_iter)); in reset_in_kvecs()
228 con->v2.in_kvec_cnt = 0; in reset_in_kvecs()
229 iov_iter_kvec(&con->v2.in_iter, ITER_DEST, con->v2.in_kvecs, 0, 0); in reset_in_kvecs()
234 WARN_ON(iov_iter_count(&con->v2.in_iter)); in set_in_bvec()
236 con->v2.in_bvec = *bv; in set_in_bvec()
237 iov_iter_bvec(&con->v2.in_iter, ITER_DEST, &con->v2.in_bvec, 1, bv->bv_len); in set_in_bvec()
242 WARN_ON(iov_iter_count(&con->v2.in_iter)); in set_in_skip()
245 iov_iter_discard(&con->v2.in_iter, ITER_DEST, len); in set_in_skip()
250 BUG_ON(con->v2.out_kvec_cnt >= ARRAY_SIZE(con->v2.out_kvecs)); in add_out_kvec()
251 WARN_ON(!iov_iter_is_kvec(&con->v2.out_iter)); in add_out_kvec()
252 WARN_ON(con->v2.out_zero); in add_out_kvec()
254 con->v2.out_kvecs[con->v2.out_kvec_cnt].iov_base = buf; in add_out_kvec()
255 con->v2.out_kvecs[con->v2.out_kvec_cnt].iov_len = len; in add_out_kvec()
256 con->v2.out_kvec_cnt++; in add_out_kvec()
258 con->v2.out_iter.nr_segs++; in add_out_kvec()
259 con->v2.out_iter.count += len; in add_out_kvec()
264 WARN_ON(iov_iter_count(&con->v2.out_iter)); in reset_out_kvecs()
265 WARN_ON(con->v2.out_zero); in reset_out_kvecs()
267 con->v2.out_kvec_cnt = 0; in reset_out_kvecs()
269 iov_iter_kvec(&con->v2.out_iter, ITER_SOURCE, con->v2.out_kvecs, 0, 0); in reset_out_kvecs()
270 con->v2.out_iter_sendpage = false; in reset_out_kvecs()
276 WARN_ON(iov_iter_count(&con->v2.out_iter)); in set_out_bvec()
277 WARN_ON(con->v2.out_zero); in set_out_bvec()
279 con->v2.out_bvec = *bv; in set_out_bvec()
280 con->v2.out_iter_sendpage = zerocopy; in set_out_bvec()
281 iov_iter_bvec(&con->v2.out_iter, ITER_SOURCE, &con->v2.out_bvec, 1, in set_out_bvec()
282 con->v2.out_bvec.bv_len); in set_out_bvec()
287 WARN_ON(iov_iter_count(&con->v2.out_iter)); in set_out_bvec_zero()
288 WARN_ON(!con->v2.out_zero); in set_out_bvec_zero()
290 bvec_set_page(&con->v2.out_bvec, ceph_zero_page, in set_out_bvec_zero()
291 min(con->v2.out_zero, (int)PAGE_SIZE), 0); 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, ITER_SOURCE, &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()
567 con->v2.out_epil.late_status = aborted ? FRAME_LATE_STATUS_ABORTED : in encode_epilogue_plain()
569 cpu_to_le32s(&con->v2.out_epil.front_crc); in encode_epilogue_plain()
570 cpu_to_le32s(&con->v2.out_epil.middle_crc); in encode_epilogue_plain()
571 cpu_to_le32s(&con->v2.out_epil.data_crc); in encode_epilogue_plain()
576 memset(&con->v2.out_epil, 0, sizeof(con->v2.out_epil)); in encode_epilogue_secure()
577 con->v2.out_epil.late_status = aborted ? FRAME_LATE_STATUS_ABORTED : in encode_epilogue_secure()
641 int ctrl_len = con->v2.in_desc.fd_lens[0]; in verify_control_crc()
644 WARN_ON(con->v2.in_kvecs[0].iov_len != ctrl_len); in verify_control_crc()
645 WARN_ON(con->v2.in_kvecs[1].iov_len != CEPH_CRC_LEN); in verify_control_crc()
647 crc = crc32c(-1, con->v2.in_kvecs[0].iov_base, ctrl_len); in verify_control_crc()
648 expected_crc = get_unaligned_le32(con->v2.in_kvecs[1].iov_base); in verify_control_crc()
711 __func__, con, con->v2.con_mode, session_key_len, con_secret_len); in setup_crypto()
712 WARN_ON(con->v2.hmac_tfm || con->v2.gcm_tfm || con->v2.gcm_req); in setup_crypto()
714 if (con->v2.con_mode != CEPH_CON_MODE_CRC && in setup_crypto()
715 con->v2.con_mode != CEPH_CON_MODE_SECURE) { in setup_crypto()
716 pr_err("bad con_mode %d\n", con->v2.con_mode); in setup_crypto()
721 WARN_ON(con->v2.con_mode != CEPH_CON_MODE_CRC); in setup_crypto()
727 con->v2.hmac_tfm = crypto_alloc_shash("hmac(sha256)", 0, 0); in setup_crypto()
729 if (IS_ERR(con->v2.hmac_tfm)) { in setup_crypto()
730 ret = PTR_ERR(con->v2.hmac_tfm); in setup_crypto()
731 con->v2.hmac_tfm = NULL; in setup_crypto()
737 crypto_shash_alignmask(con->v2.hmac_tfm)); in setup_crypto()
738 ret = crypto_shash_setkey(con->v2.hmac_tfm, session_key, in setup_crypto()
745 if (con->v2.con_mode == CEPH_CON_MODE_CRC) { in setup_crypto()
756 con->v2.gcm_tfm = crypto_alloc_aead("gcm(aes)", 0, 0); in setup_crypto()
758 if (IS_ERR(con->v2.gcm_tfm)) { in setup_crypto()
759 ret = PTR_ERR(con->v2.gcm_tfm); in setup_crypto()
760 con->v2.gcm_tfm = NULL; in setup_crypto()
766 crypto_aead_alignmask(con->v2.gcm_tfm)); in setup_crypto()
767 ret = crypto_aead_setkey(con->v2.gcm_tfm, con_secret, CEPH_GCM_KEY_LEN); in setup_crypto()
773 WARN_ON(crypto_aead_ivsize(con->v2.gcm_tfm) != CEPH_GCM_IV_LEN); in setup_crypto()
774 ret = crypto_aead_setauthsize(con->v2.gcm_tfm, CEPH_GCM_TAG_LEN); in setup_crypto()
780 con->v2.gcm_req = aead_request_alloc(con->v2.gcm_tfm, GFP_NOIO); in setup_crypto()
781 if (!con->v2.gcm_req) { in setup_crypto()
786 crypto_init_wait(&con->v2.gcm_wait); in setup_crypto()
787 aead_request_set_callback(con->v2.gcm_req, CRYPTO_TFM_REQ_MAY_BACKLOG, in setup_crypto()
788 crypto_req_done, &con->v2.gcm_wait); in setup_crypto()
790 memcpy(&con->v2.in_gcm_nonce, con_secret + CEPH_GCM_KEY_LEN, in setup_crypto()
792 memcpy(&con->v2.out_gcm_nonce, in setup_crypto()
801 SHASH_DESC_ON_STACK(desc, con->v2.hmac_tfm); /* tfm arg is ignored */ in hmac_sha256()
806 con->v2.hmac_tfm, kvec_cnt); in hmac_sha256()
808 if (!con->v2.hmac_tfm) { in hmac_sha256()
813 desc->tfm = con->v2.hmac_tfm; in hmac_sha256()
820 crypto_shash_alignmask(con->v2.hmac_tfm)); in hmac_sha256()
849 nonce = encrypt ? &con->v2.out_gcm_nonce : &con->v2.in_gcm_nonce; in gcm_crypt()
851 aead_request_set_ad(con->v2.gcm_req, 0); /* no AAD */ in gcm_crypt()
852 aead_request_set_crypt(con->v2.gcm_req, src, dst, src_len, (u8 *)nonce); in gcm_crypt()
853 ret = crypto_wait_req(encrypt ? crypto_aead_encrypt(con->v2.gcm_req) : in gcm_crypt()
854 crypto_aead_decrypt(con->v2.gcm_req), in gcm_crypt()
855 &con->v2.gcm_wait); in gcm_crypt()
1068 sg_init_one(&sg, con->v2.in_buf, CEPH_PREAMBLE_SECURE_LEN); in decrypt_preamble()
1074 int ctrl_len = con->v2.in_desc.fd_lens[0]; in decrypt_control_remainder()
1079 WARN_ON(con->v2.in_kvecs[0].iov_len != rem_len); in decrypt_control_remainder()
1080 WARN_ON(con->v2.in_kvecs[1].iov_len != pt_len); in decrypt_control_remainder()
1083 sg_set_buf(&sgs[0], con->v2.in_kvecs[0].iov_base, rem_len); in decrypt_control_remainder()
1084 sg_set_buf(&sgs[1], con->v2.in_buf, pt_len); in decrypt_control_remainder()
1094 struct ceph_msg_data_cursor *cursor = &con->v2.in_cursor; in process_v2_sparse_read()
1109 struct page *spage = con->v2.in_enc_pages[idx]; in process_v2_sparse_read()
1141 ret = sg_alloc_table_from_pages(&enc_sgt, con->v2.in_enc_pages, in decrypt_tail()
1142 con->v2.in_enc_page_cnt, 0, tail_len, in decrypt_tail()
1149 pages = con->v2.in_enc_pages; in decrypt_tail()
1152 ret = setup_message_sgs(&sgt, con->in_msg, FRONT_PAD(con->v2.in_buf), in decrypt_tail()
1153 MIDDLE_PAD(con->v2.in_buf), DATA_PAD(con->v2.in_buf), in decrypt_tail()
1154 con->v2.in_buf, pages, dpos, true); in decrypt_tail()
1159 con->in_msg, con->v2.in_enc_page_cnt, sgt.orig_nents); in decrypt_tail()
1165 ret = process_v2_sparse_read(con, con->v2.in_enc_pages, dpos); in decrypt_tail()
1170 WARN_ON(!con->v2.in_enc_page_cnt); in decrypt_tail()
1171 ceph_release_page_vector(con->v2.in_enc_pages, in decrypt_tail()
1172 con->v2.in_enc_page_cnt); in decrypt_tail()
1173 con->v2.in_enc_pages = NULL; in decrypt_tail()
1174 con->v2.in_enc_page_cnt = 0; in decrypt_tail()
1469 ret = hmac_sha256(con, con->v2.in_sign_kvecs, con->v2.in_sign_kvec_cnt, in prepare_auth_signature()
1486 WARN_ON(con->v2.server_cookie); in prepare_client_ident()
1487 WARN_ON(con->v2.connect_seq); in prepare_client_ident()
1488 WARN_ON(con->v2.peer_global_seq); in prepare_client_ident()
1490 if (!con->v2.client_cookie) { in prepare_client_ident()
1492 get_random_bytes(&con->v2.client_cookie, in prepare_client_ident()
1493 sizeof(con->v2.client_cookie)); in prepare_client_ident()
1494 } while (!con->v2.client_cookie); in prepare_client_ident()
1496 con->v2.client_cookie); in prepare_client_ident()
1499 con->v2.client_cookie); in prepare_client_ident()
1505 global_id, con->v2.global_seq, client->supported_features, in prepare_client_ident()
1506 client->required_features, con->v2.client_cookie); in prepare_client_ident()
1520 ceph_encode_64(&p, con->v2.global_seq); in prepare_client_ident()
1524 ceph_encode_64(&p, con->v2.client_cookie); in prepare_client_ident()
1536 WARN_ON(!con->v2.client_cookie); in prepare_session_reconnect()
1537 WARN_ON(!con->v2.server_cookie); in prepare_session_reconnect()
1538 WARN_ON(!con->v2.connect_seq); in prepare_session_reconnect()
1539 WARN_ON(!con->v2.peer_global_seq); in prepare_session_reconnect()
1543 con->v2.client_cookie, con->v2.server_cookie, con->v2.global_seq, in prepare_session_reconnect()
1544 con->v2.connect_seq, con->in_seq); in prepare_session_reconnect()
1555 ceph_encode_64(&p, con->v2.client_cookie); in prepare_session_reconnect()
1556 ceph_encode_64(&p, con->v2.server_cookie); in prepare_session_reconnect()
1557 ceph_encode_64(&p, con->v2.global_seq); in prepare_session_reconnect()
1558 ceph_encode_64(&p, con->v2.connect_seq); in prepare_session_reconnect()
1567 struct ceph_timespec *ts = CTRL_BODY(con->v2.out_buf); in prepare_keepalive2()
1577 return prepare_control(con, FRAME_TAG_KEEPALIVE2, con->v2.out_buf, in prepare_keepalive2()
1589 p = CTRL_BODY(con->v2.out_buf); in prepare_ack()
1593 return prepare_control(con, FRAME_TAG_ACK, con->v2.out_buf, 8); in prepare_ack()
1599 con->out_msg, aborted, con->v2.out_epil.front_crc, in prepare_epilogue_plain()
1600 con->v2.out_epil.middle_crc, con->v2.out_epil.data_crc); in prepare_epilogue_plain()
1603 add_out_kvec(con, &con->v2.out_epil, CEPH_EPILOGUE_PLAIN_LEN); in prepare_epilogue_plain()
1614 prepare_head_plain(con, con->v2.out_buf, in prepare_message_plain()
1623 con->v2.out_state = OUT_S_FINISH_MESSAGE; in prepare_message_plain()
1627 con->v2.out_epil.front_crc = -1; in prepare_message_plain()
1628 con->v2.out_epil.middle_crc = -1; in prepare_message_plain()
1629 con->v2.out_state = OUT_S_QUEUE_DATA; in prepare_message_plain()
1634 con->v2.out_epil.front_crc = crc32c(-1, msg->front.iov_base, in prepare_message_plain()
1639 con->v2.out_epil.front_crc = -1; in prepare_message_plain()
1643 con->v2.out_epil.middle_crc = in prepare_message_plain()
1647 con->v2.out_epil.middle_crc = data_len(msg) ? -1 : 0; in prepare_message_plain()
1651 con->v2.out_state = OUT_S_QUEUE_DATA; in prepare_message_plain()
1653 con->v2.out_epil.data_crc = 0; in prepare_message_plain()
1655 con->v2.out_state = OUT_S_FINISH_MESSAGE; in prepare_message_plain()
1676 ret = prepare_head_secure_small(con, con->v2.out_buf, in prepare_message_secure()
1687 con->v2.out_state = OUT_S_FINISH_MESSAGE; in prepare_message_secure()
1693 &con->v2.out_epil, NULL, 0, false); in prepare_message_secure()
1704 WARN_ON(con->v2.out_enc_pages || con->v2.out_enc_page_cnt); in prepare_message_secure()
1705 con->v2.out_enc_pages = enc_pages; in prepare_message_secure()
1706 con->v2.out_enc_page_cnt = enc_page_cnt; in prepare_message_secure()
1707 con->v2.out_enc_resid = tail_len; in prepare_message_secure()
1708 con->v2.out_enc_i = 0; in prepare_message_secure()
1722 con->v2.out_state = OUT_S_QUEUE_ENC_PAGE; in prepare_message_secure()
1752 encode_preamble(&desc, con->v2.out_buf); in prepare_message()
1753 fill_header2(CTRL_BODY(con->v2.out_buf), &con->out_msg->hdr, in prepare_message()
1802 add_in_kvec(con, con->v2.in_buf, in prepare_read_preamble()
1805 con->v2.in_state = IN_S_HANDLE_PREAMBLE; in prepare_read_preamble()
1810 int ctrl_len = con->v2.in_desc.fd_lens[0]; in prepare_read_control()
1823 memcpy(buf, con->v2.in_buf, CEPH_PREAMBLE_LEN); in prepare_read_control()
1836 add_in_kvec(con, CTRL_BODY(con->v2.in_buf), ctrl_len); in prepare_read_control()
1838 add_in_kvec(con, con->v2.in_buf, CEPH_CRC_LEN); in prepare_read_control()
1840 con->v2.in_state = IN_S_HANDLE_CONTROL; in prepare_read_control()
1846 int ctrl_len = con->v2.in_desc.fd_lens[0]; in prepare_read_control_remainder()
1854 memcpy(buf, CTRL_BODY(con->v2.in_buf), CEPH_PREAMBLE_INLINE_LEN); in prepare_read_control_remainder()
1858 add_in_kvec(con, con->v2.in_buf, in prepare_read_control_remainder()
1860 con->v2.in_state = IN_S_HANDLE_CONTROL_REMAINDER; in prepare_read_control_remainder()
1869 ceph_msg_data_cursor_init(&con->v2.in_cursor, con->in_msg, in prepare_read_data()
1872 get_bvec_at(&con->v2.in_cursor, &bv); in prepare_read_data()
1886 con->v2.in_state = IN_S_PREPARE_READ_DATA_CONT; in prepare_read_data()
1897 con->v2.in_bvec.bv_len); in prepare_read_data_cont()
1899 get_bvec_at(&con->v2.in_cursor, &bv); in prepare_read_data_cont()
1902 con->v2.in_bvec.bv_len); in prepare_read_data_cont()
1905 con->v2.in_bvec.bv_page, in prepare_read_data_cont()
1906 con->v2.in_bvec.bv_offset, in prepare_read_data_cont()
1907 con->v2.in_bvec.bv_len); in prepare_read_data_cont()
1910 ceph_msg_data_advance(&con->v2.in_cursor, con->v2.in_bvec.bv_len); in prepare_read_data_cont()
1911 if (con->v2.in_cursor.total_resid) { in prepare_read_data_cont()
1912 get_bvec_at(&con->v2.in_cursor, &bv); in prepare_read_data_cont()
1918 WARN_ON(con->v2.in_state != IN_S_PREPARE_READ_DATA_CONT); in prepare_read_data_cont()
1926 add_in_kvec(con, con->v2.in_buf, CEPH_EPILOGUE_PLAIN_LEN); in prepare_read_data_cont()
1927 con->v2.in_state = IN_S_HANDLE_EPILOGUE; in prepare_read_data_cont()
1935 struct ceph_msg_data_cursor *cursor = &con->v2.in_cursor; in prepare_sparse_read_cont()
1937 WARN_ON(con->v2.in_state != IN_S_PREPARE_SPARSE_DATA_CONT); in prepare_sparse_read_cont()
1939 if (iov_iter_is_bvec(&con->v2.in_iter)) { in prepare_sparse_read_cont()
1943 con->v2.in_bvec.bv_len); in prepare_sparse_read_cont()
1947 con->v2.in_bvec.bv_len); in prepare_sparse_read_cont()
1950 con->v2.in_bvec.bv_page, in prepare_sparse_read_cont()
1951 con->v2.in_bvec.bv_offset, in prepare_sparse_read_cont()
1952 con->v2.in_bvec.bv_len); in prepare_sparse_read_cont()
1955 ceph_msg_data_advance(cursor, con->v2.in_bvec.bv_len); in prepare_sparse_read_cont()
1956 cursor->sr_resid -= con->v2.in_bvec.bv_len; in prepare_sparse_read_cont()
1958 con->v2.in_bvec.bv_len, cursor->sr_resid); in prepare_sparse_read_cont()
1969 con->v2.data_len_remain -= bv.bv_len; in prepare_sparse_read_cont()
1972 } else if (iov_iter_is_kvec(&con->v2.in_iter)) { in prepare_sparse_read_cont()
1974 if (con->v2.in_kvec_cnt) { in prepare_sparse_read_cont()
1975 WARN_ON_ONCE(con->v2.in_kvec_cnt > 1); in prepare_sparse_read_cont()
1977 con->v2.in_kvecs[0].iov_base, in prepare_sparse_read_cont()
1978 con->v2.in_kvecs[0].iov_len); in prepare_sparse_read_cont()
1991 add_in_kvec(con, con->v2.in_buf, CEPH_EPILOGUE_PLAIN_LEN); in prepare_sparse_read_cont()
1992 con->v2.in_state = IN_S_HANDLE_EPILOGUE; in prepare_sparse_read_cont()
2000 con->v2.data_len_remain -= ret; in prepare_sparse_read_cont()
2025 con->v2.data_len_remain -= ret; in prepare_sparse_read_cont()
2041 ceph_msg_data_cursor_init(&con->v2.in_cursor, msg, in prepare_sparse_read_data()
2045 con->v2.in_state = IN_S_PREPARE_SPARSE_DATA_CONT; in prepare_sparse_read_data()
2046 con->v2.data_len_remain = data_len(msg); in prepare_sparse_read_data()
2071 con->v2.in_state = IN_S_PREPARE_SPARSE_DATA; in prepare_read_tail_plain()
2073 con->v2.in_state = IN_S_PREPARE_READ_DATA; in prepare_read_tail_plain()
2075 add_in_kvec(con, con->v2.in_buf, CEPH_EPILOGUE_PLAIN_LEN); in prepare_read_tail_plain()
2076 con->v2.in_state = IN_S_HANDLE_EPILOGUE; in prepare_read_tail_plain()
2085 dout("%s con %p i %d resid %d\n", __func__, con, con->v2.in_enc_i, in prepare_read_enc_page()
2086 con->v2.in_enc_resid); in prepare_read_enc_page()
2087 WARN_ON(!con->v2.in_enc_resid); in prepare_read_enc_page()
2089 bvec_set_page(&bv, con->v2.in_enc_pages[con->v2.in_enc_i], in prepare_read_enc_page()
2090 min(con->v2.in_enc_resid, (int)PAGE_SIZE), 0); in prepare_read_enc_page()
2093 con->v2.in_enc_i++; in prepare_read_enc_page()
2094 con->v2.in_enc_resid -= bv.bv_len; in prepare_read_enc_page()
2096 if (con->v2.in_enc_resid) { in prepare_read_enc_page()
2097 con->v2.in_state = IN_S_PREPARE_READ_ENC_PAGE; in prepare_read_enc_page()
2105 WARN_ON(con->v2.in_enc_i != con->v2.in_enc_page_cnt); in prepare_read_enc_page()
2106 con->v2.in_state = IN_S_HANDLE_EPILOGUE; in prepare_read_enc_page()
2123 WARN_ON(con->v2.in_enc_pages || con->v2.in_enc_page_cnt); in prepare_read_tail_secure()
2124 con->v2.in_enc_pages = enc_pages; in prepare_read_tail_secure()
2125 con->v2.in_enc_page_cnt = enc_page_cnt; in prepare_read_tail_secure()
2126 con->v2.in_enc_resid = tail_len; in prepare_read_tail_secure()
2127 con->v2.in_enc_i = 0; in prepare_read_tail_secure()
2141 struct ceph_frame_desc *desc = &con->v2.in_desc; in prepare_skip_message()
2153 con->v2.in_state = IN_S_FINISH_SKIP; in prepare_skip_message()
2162 WARN_ON(con->v2.in_kvecs[0].iov_len != CEPH_BANNER_V2_PREFIX_LEN); in process_banner_prefix()
2164 p = con->v2.in_kvecs[0].iov_base; in process_banner_prefix()
2182 void *end = con->v2.in_kvecs[0].iov_base + con->v2.in_kvecs[0].iov_len; in process_banner_payload()
2189 p = con->v2.in_kvecs[0].iov_base; in process_banner_payload()
2408 ceph_decode_32_safe(&p, end, con->v2.con_mode, bad); in process_auth_done()
2412 __func__, con, global_id, con->v2.con_mode, payload_len); in process_auth_done()
2467 ret = hmac_sha256(con, con->v2.out_sign_kvecs, in process_auth_signature()
2468 con->v2.out_sign_kvec_cnt, hmac); in process_auth_signature()
2481 if (!con->v2.server_cookie) { in process_auth_signature()
2564 con->v2.peer_global_seq = global_seq; in process_server_ident()
2567 con->v2.server_cookie = cookie; in process_server_ident()
2571 WARN_ON(con->v2.server_cookie); in process_server_ident()
2573 WARN_ON(!con->v2.server_cookie); in process_server_ident()
2582 con->v2.out_state = OUT_S_GET_NEXT; in process_server_ident()
2633 con->v2.out_state = OUT_S_GET_NEXT; in process_session_reconnect_ok()
2655 WARN_ON(connect_seq <= con->v2.connect_seq); in process_session_retry()
2656 con->v2.connect_seq = connect_seq + 1; in process_session_retry()
2688 WARN_ON(global_seq <= con->v2.global_seq); in process_session_retry_global()
2689 con->v2.global_seq = ceph_get_global_seq(con->msgr, global_seq); in process_session_retry_global()
2798 int tag = con->v2.in_desc.fd_tag; in process_control()
2866 struct ceph_frame_desc *desc = &con->v2.in_desc; in process_message_header()
2925 void *end = p + con->v2.in_desc.fd_lens[0]; in __handle_control()
2929 if (con->v2.in_desc.fd_tag != FRAME_TAG_MESSAGE) in __handle_control()
2965 struct ceph_frame_desc *desc = &con->v2.in_desc; in handle_preamble()
2977 ret = decode_preamble(con->v2.in_buf, desc); in handle_preamble()
2996 return __handle_control(con, CTRL_BODY(con->v2.in_buf)); in handle_preamble()
3001 int ctrl_len = con->v2.in_desc.fd_lens[0]; in handle_control()
3018 memcpy(buf, con->v2.in_kvecs[0].iov_base, ctrl_len); in handle_control()
3022 return __handle_control(con, con->v2.in_kvecs[0].iov_base); in handle_control()
3038 return __handle_control(con, con->v2.in_kvecs[0].iov_base - in handle_control_remainder()
3056 ret = decode_epilogue(con->v2.in_buf, NULL, NULL, NULL); in handle_epilogue()
3062 ret = decode_epilogue(con->v2.in_buf, &front_crc, in handle_epilogue()
3085 gcm_inc_nonce(&con->v2.in_gcm_nonce); in finish_skip()
3095 con->v2.in_state); in populate_in_iter()
3096 WARN_ON(iov_iter_count(&con->v2.in_iter)); in populate_in_iter()
3105 switch (con->v2.in_state) { in populate_in_iter()
3140 WARN(1, "bad in_state %d", con->v2.in_state); in populate_in_iter()
3152 if (WARN_ON(!iov_iter_count(&con->v2.in_iter))) in populate_in_iter()
3155 iov_iter_count(&con->v2.in_iter)); in populate_in_iter()
3164 iov_iter_count(&con->v2.in_iter)); in ceph_con_v2_try_read()
3174 if (WARN_ON(!iov_iter_count(&con->v2.in_iter))) in ceph_con_v2_try_read()
3195 con->v2.out_epil.data_crc = -1; in queue_data()
3196 ceph_msg_data_cursor_init(&con->v2.out_cursor, con->out_msg, in queue_data()
3199 get_bvec_at(&con->v2.out_cursor, &bv); in queue_data()
3201 con->v2.out_state = OUT_S_QUEUE_DATA_CONT; in queue_data()
3208 con->v2.out_epil.data_crc = ceph_crc32c_page( in queue_data_cont()
3209 con->v2.out_epil.data_crc, con->v2.out_bvec.bv_page, in queue_data_cont()
3210 con->v2.out_bvec.bv_offset, con->v2.out_bvec.bv_len); in queue_data_cont()
3212 ceph_msg_data_advance(&con->v2.out_cursor, con->v2.out_bvec.bv_len); in queue_data_cont()
3213 if (con->v2.out_cursor.total_resid) { in queue_data_cont()
3214 get_bvec_at(&con->v2.out_cursor, &bv); in queue_data_cont()
3216 WARN_ON(con->v2.out_state != OUT_S_QUEUE_DATA_CONT); in queue_data_cont()
3226 con->v2.out_state = OUT_S_FINISH_MESSAGE; in queue_data_cont()
3233 dout("%s con %p i %d resid %d\n", __func__, con, con->v2.out_enc_i, in queue_enc_page()
3234 con->v2.out_enc_resid); in queue_enc_page()
3235 WARN_ON(!con->v2.out_enc_resid); in queue_enc_page()
3237 bvec_set_page(&bv, con->v2.out_enc_pages[con->v2.out_enc_i], in queue_enc_page()
3238 min(con->v2.out_enc_resid, (int)PAGE_SIZE), 0); in queue_enc_page()
3241 con->v2.out_enc_i++; in queue_enc_page()
3242 con->v2.out_enc_resid -= bv.bv_len; in queue_enc_page()
3244 if (con->v2.out_enc_resid) { in queue_enc_page()
3245 WARN_ON(con->v2.out_state != OUT_S_QUEUE_ENC_PAGE); in queue_enc_page()
3253 WARN_ON(con->v2.out_enc_i != con->v2.out_enc_page_cnt); in queue_enc_page()
3254 con->v2.out_state = OUT_S_FINISH_MESSAGE; in queue_enc_page()
3259 dout("%s con %p out_zero %d\n", __func__, con, con->v2.out_zero); in queue_zeros()
3261 if (con->v2.out_zero) { in queue_zeros()
3263 con->v2.out_zero -= con->v2.out_bvec.bv_len; in queue_zeros()
3264 con->v2.out_state = OUT_S_QUEUE_ZEROS; in queue_zeros()
3275 con->v2.out_state = OUT_S_FINISH_MESSAGE; in queue_zeros()
3283 if (con->v2.out_enc_pages) { in finish_message()
3284 WARN_ON(!con->v2.out_enc_page_cnt); in finish_message()
3285 ceph_release_page_vector(con->v2.out_enc_pages, in finish_message()
3286 con->v2.out_enc_page_cnt); in finish_message()
3287 con->v2.out_enc_pages = NULL; in finish_message()
3288 con->v2.out_enc_page_cnt = 0; in finish_message()
3296 con->v2.out_state = OUT_S_GET_NEXT; in finish_message()
3304 con->v2.out_state); in populate_out_iter()
3305 WARN_ON(iov_iter_count(&con->v2.out_iter)); in populate_out_iter()
3313 switch (con->v2.out_state) { in populate_out_iter()
3335 WARN(1, "bad out_state %d", con->v2.out_state); in populate_out_iter()
3339 WARN_ON(con->v2.out_state != OUT_S_GET_NEXT); in populate_out_iter()
3364 if (WARN_ON(!iov_iter_count(&con->v2.out_iter))) in populate_out_iter()
3367 iov_iter_count(&con->v2.out_iter)); in populate_out_iter()
3371 WARN_ON(iov_iter_count(&con->v2.out_iter)); in populate_out_iter()
3382 iov_iter_count(&con->v2.out_iter)); in ceph_con_v2_try_write()
3393 con->v2.global_seq = ceph_get_global_seq(con->msgr, 0); in ceph_con_v2_try_write()
3394 if (con->v2.server_cookie) in ceph_con_v2_try_write()
3395 con->v2.connect_seq++; in ceph_con_v2_try_write()
3420 if (!iov_iter_count(&con->v2.out_iter)) { in ceph_con_v2_try_write()
3469 con->v2.out_epil.front_crc = in prepare_zero_front()
3471 con->v2.out_epil.front_crc = in prepare_zero_front()
3472 crc32c_zeros(con->v2.out_epil.front_crc, resid); in prepare_zero_front()
3474 con->v2.out_epil.front_crc = crc32c_zeros(-1, resid); in prepare_zero_front()
3477 con->v2.out_iter.count -= resid; in prepare_zero_front()
3490 con->v2.out_epil.middle_crc = in prepare_zero_middle()
3492 con->v2.out_epil.middle_crc = in prepare_zero_middle()
3493 crc32c_zeros(con->v2.out_epil.middle_crc, resid); in prepare_zero_middle()
3495 con->v2.out_epil.middle_crc = crc32c_zeros(-1, resid); in prepare_zero_middle()
3498 con->v2.out_iter.count -= resid; in prepare_zero_middle()
3505 con->v2.out_epil.data_crc = crc32c_zeros(-1, data_len(con->out_msg)); in prepare_zero_data()
3515 WARN_ON(!iov_iter_is_kvec(&con->v2.out_iter)); in revoke_at_queue_data()
3516 resid = iov_iter_count(&con->v2.out_iter); in revoke_at_queue_data()
3528 WARN_ON(iov_iter_count(&con->v2.out_iter) != resid); in revoke_at_queue_data()
3529 con->v2.out_state = OUT_S_QUEUE_ZEROS; in revoke_at_queue_data()
3557 WARN_ON(!iov_iter_is_bvec(&con->v2.out_iter)); in revoke_at_queue_data_cont()
3558 resid = iov_iter_count(&con->v2.out_iter); in revoke_at_queue_data_cont()
3559 WARN_ON(!resid || resid > con->v2.out_bvec.bv_len); in revoke_at_queue_data_cont()
3560 sent = con->v2.out_bvec.bv_len - resid; in revoke_at_queue_data_cont()
3564 con->v2.out_epil.data_crc = ceph_crc32c_page( in revoke_at_queue_data_cont()
3565 con->v2.out_epil.data_crc, con->v2.out_bvec.bv_page, in revoke_at_queue_data_cont()
3566 con->v2.out_bvec.bv_offset, sent); in revoke_at_queue_data_cont()
3567 ceph_msg_data_advance(&con->v2.out_cursor, sent); in revoke_at_queue_data_cont()
3569 WARN_ON(resid > con->v2.out_cursor.total_resid); in revoke_at_queue_data_cont()
3570 con->v2.out_epil.data_crc = crc32c_zeros(con->v2.out_epil.data_crc, in revoke_at_queue_data_cont()
3571 con->v2.out_cursor.total_resid); in revoke_at_queue_data_cont()
3573 con->v2.out_iter.count -= resid; in revoke_at_queue_data_cont()
3574 out_zero_add(con, con->v2.out_cursor.total_resid); in revoke_at_queue_data_cont()
3583 WARN_ON(!iov_iter_is_kvec(&con->v2.out_iter)); in revoke_at_finish_message()
3584 resid = iov_iter_count(&con->v2.out_iter); in revoke_at_finish_message()
3604 con->v2.out_iter.count -= CEPH_EPILOGUE_PLAIN_LEN; in revoke_at_finish_message()
3605 WARN_ON(iov_iter_count(&con->v2.out_iter) != resid); in revoke_at_finish_message()
3606 con->v2.out_state = OUT_S_QUEUE_ZEROS; in revoke_at_finish_message()
3617 con->v2.out_iter.count -= CEPH_EPILOGUE_PLAIN_LEN; in revoke_at_finish_message()
3627 con->v2.out_iter.count -= CEPH_EPILOGUE_PLAIN_LEN; in revoke_at_finish_message()
3638 WARN_ON(con->v2.out_zero); in ceph_con_v2_revoke()
3641 WARN_ON(con->v2.out_state != OUT_S_QUEUE_ENC_PAGE && in ceph_con_v2_revoke()
3642 con->v2.out_state != OUT_S_FINISH_MESSAGE); in ceph_con_v2_revoke()
3647 switch (con->v2.out_state) { in ceph_con_v2_revoke()
3658 WARN(1, "bad out_state %d", con->v2.out_state); in ceph_con_v2_revoke()
3670 WARN_ON(!iov_iter_is_kvec(&con->v2.in_iter)); in revoke_at_prepare_read_data()
3671 resid = iov_iter_count(&con->v2.in_iter); in revoke_at_prepare_read_data()
3677 con->v2.in_iter.count -= resid; in revoke_at_prepare_read_data()
3679 con->v2.in_state = IN_S_FINISH_SKIP; in revoke_at_prepare_read_data()
3689 WARN_ON(!iov_iter_is_bvec(&con->v2.in_iter)); in revoke_at_prepare_read_data_cont()
3690 resid = iov_iter_count(&con->v2.in_iter); in revoke_at_prepare_read_data_cont()
3691 WARN_ON(!resid || resid > con->v2.in_bvec.bv_len); in revoke_at_prepare_read_data_cont()
3692 recved = con->v2.in_bvec.bv_len - resid; in revoke_at_prepare_read_data_cont()
3696 ceph_msg_data_advance(&con->v2.in_cursor, recved); in revoke_at_prepare_read_data_cont()
3697 WARN_ON(resid > con->v2.in_cursor.total_resid); in revoke_at_prepare_read_data_cont()
3701 con->v2.in_cursor.total_resid, remaining); in revoke_at_prepare_read_data_cont()
3702 con->v2.in_iter.count -= resid; in revoke_at_prepare_read_data_cont()
3703 set_in_skip(con, con->v2.in_cursor.total_resid + remaining); in revoke_at_prepare_read_data_cont()
3704 con->v2.in_state = IN_S_FINISH_SKIP; in revoke_at_prepare_read_data_cont()
3712 WARN_ON(!iov_iter_is_bvec(&con->v2.in_iter)); in revoke_at_prepare_read_enc_page()
3713 resid = iov_iter_count(&con->v2.in_iter); in revoke_at_prepare_read_enc_page()
3714 WARN_ON(!resid || resid > con->v2.in_bvec.bv_len); in revoke_at_prepare_read_enc_page()
3717 con->v2.in_enc_resid); in revoke_at_prepare_read_enc_page()
3718 con->v2.in_iter.count -= resid; in revoke_at_prepare_read_enc_page()
3719 set_in_skip(con, resid + con->v2.in_enc_resid); in revoke_at_prepare_read_enc_page()
3720 con->v2.in_state = IN_S_FINISH_SKIP; in revoke_at_prepare_read_enc_page()
3730 WARN_ON(!iov_iter_is_bvec(&con->v2.in_iter)); in revoke_at_prepare_sparse_data()
3731 resid = iov_iter_count(&con->v2.in_iter); in revoke_at_prepare_sparse_data()
3734 remaining = CEPH_EPILOGUE_PLAIN_LEN + con->v2.data_len_remain; in revoke_at_prepare_sparse_data()
3735 con->v2.in_iter.count -= resid; in revoke_at_prepare_sparse_data()
3737 con->v2.in_state = IN_S_FINISH_SKIP; in revoke_at_prepare_sparse_data()
3744 resid = iov_iter_count(&con->v2.in_iter); in revoke_at_handle_epilogue()
3748 con->v2.in_iter.count -= resid; in revoke_at_handle_epilogue()
3750 con->v2.in_state = IN_S_FINISH_SKIP; in revoke_at_handle_epilogue()
3755 switch (con->v2.in_state) { in ceph_con_v2_revoke_incoming()
3773 WARN(1, "bad in_state %d", con->v2.in_state); in ceph_con_v2_revoke_incoming()
3780 return con->v2.peer_global_seq; in ceph_con_v2_opened()
3785 con->v2.client_cookie = 0; in ceph_con_v2_reset_session()
3786 con->v2.server_cookie = 0; in ceph_con_v2_reset_session()
3787 con->v2.global_seq = 0; in ceph_con_v2_reset_session()
3788 con->v2.connect_seq = 0; in ceph_con_v2_reset_session()
3789 con->v2.peer_global_seq = 0; in ceph_con_v2_reset_session()
3794 iov_iter_truncate(&con->v2.in_iter, 0); in ceph_con_v2_reset_protocol()
3795 iov_iter_truncate(&con->v2.out_iter, 0); in ceph_con_v2_reset_protocol()
3796 con->v2.out_zero = 0; in ceph_con_v2_reset_protocol()
3802 if (con->v2.in_enc_pages) { in ceph_con_v2_reset_protocol()
3803 WARN_ON(!con->v2.in_enc_page_cnt); in ceph_con_v2_reset_protocol()
3804 ceph_release_page_vector(con->v2.in_enc_pages, in ceph_con_v2_reset_protocol()
3805 con->v2.in_enc_page_cnt); in ceph_con_v2_reset_protocol()
3806 con->v2.in_enc_pages = NULL; in ceph_con_v2_reset_protocol()
3807 con->v2.in_enc_page_cnt = 0; in ceph_con_v2_reset_protocol()
3809 if (con->v2.out_enc_pages) { in ceph_con_v2_reset_protocol()
3810 WARN_ON(!con->v2.out_enc_page_cnt); in ceph_con_v2_reset_protocol()
3811 ceph_release_page_vector(con->v2.out_enc_pages, in ceph_con_v2_reset_protocol()
3812 con->v2.out_enc_page_cnt); in ceph_con_v2_reset_protocol()
3813 con->v2.out_enc_pages = NULL; in ceph_con_v2_reset_protocol()
3814 con->v2.out_enc_page_cnt = 0; in ceph_con_v2_reset_protocol()
3817 con->v2.con_mode = CEPH_CON_MODE_UNKNOWN; in ceph_con_v2_reset_protocol()
3818 memzero_explicit(&con->v2.in_gcm_nonce, CEPH_GCM_IV_LEN); in ceph_con_v2_reset_protocol()
3819 memzero_explicit(&con->v2.out_gcm_nonce, CEPH_GCM_IV_LEN); in ceph_con_v2_reset_protocol()
3821 if (con->v2.hmac_tfm) { in ceph_con_v2_reset_protocol()
3822 crypto_free_shash(con->v2.hmac_tfm); in ceph_con_v2_reset_protocol()
3823 con->v2.hmac_tfm = NULL; in ceph_con_v2_reset_protocol()
3825 if (con->v2.gcm_req) { in ceph_con_v2_reset_protocol()
3826 aead_request_free(con->v2.gcm_req); in ceph_con_v2_reset_protocol()
3827 con->v2.gcm_req = NULL; in ceph_con_v2_reset_protocol()
3829 if (con->v2.gcm_tfm) { in ceph_con_v2_reset_protocol()
3830 crypto_free_aead(con->v2.gcm_tfm); in ceph_con_v2_reset_protocol()
3831 con->v2.gcm_tfm = NULL; in ceph_con_v2_reset_protocol()