@@ -1899,46 +1899,32 @@ const ucp_request_send_proto_t ucp_am_reply_proto = {
18991899 .only_hdr_size = sizeof (ucp_am_hdr_t ) + sizeof (ucp_am_reply_ftr_t )
19001900};
19011901
1902- static void ucp_am_proto_request_zcopy_reset_header (ucp_request_t * request )
1902+ ucs_status_t ucp_am_proto_request_zcopy_reset (ucp_request_t * request )
19031903{
19041904 ucs_assert (request -> send .msg_proto .am .header .reg_desc != NULL );
1905+ /* Zcopy pack function releases header if it's stored in mpool buffer
1906+ * and set copied flag to zero. Zcopy pack function is always called
1907+ * before reset function.
1908+ */
1909+ ucs_assert (!(request -> flags & UCP_REQUEST_FLAG_USER_HEADER_COPIED ));
19051910
19061911 /* If user header is not guaranteed to be valid,
19071912 * use mpool buffer for storing the user header.
19081913 */
19091914 if ((request -> send .msg_proto .am .flags & UCP_AM_SEND_FLAG_COPY_HEADER ) &&
19101915 (request -> send .msg_proto .am .header .length != 0 )) {
1911- request -> send .msg_proto .am .header .ptr = ucs_mpool_set_get_inline (
1912- & request -> send .ep -> worker -> am_mps ,
1913- request -> send .msg_proto .am .header .length );
1914- memcpy (request -> send .msg_proto .am .header .ptr ,
1915- request -> send .msg_proto .am .header .reg_desc + 1 ,
1916- request -> send .msg_proto .am .header .length );
1917- request -> flags |= UCP_REQUEST_FLAG_USER_HEADER_COPIED ;
1916+ request -> send .msg_proto .am .header .ptr = ucs_mpool_set_get_inline (
1917+ & request -> send .ep -> worker -> am_mps ,
1918+ request -> send .msg_proto .am .header .length );
1919+ memcpy (request -> send .msg_proto .am .header .ptr ,
1920+ request -> send .msg_proto .am .header .reg_desc + 1 ,
1921+ request -> send .msg_proto .am .header .length );
1922+ request -> flags |= UCP_REQUEST_FLAG_USER_HEADER_COPIED ;
19181923 }
19191924
19201925 ucs_mpool_put_inline (request -> send .msg_proto .am .header .reg_desc );
19211926 request -> send .msg_proto .am .header .reg_desc = NULL ;
19221927
1923- }
1924-
1925- ucs_status_t ucp_am_proto_request_zcopy_reset (ucp_request_t * request )
1926- {
1927- /* Zcopy pack function releases header if it's stored in mpool buffer
1928- * and set copied flag to zero. Zcopy pack function is always called
1929- * before reset function.
1930- * TODO: check the statement above, in case of failover request should
1931- * be restarted after its (error) completion but the completion
1932- * releases header buffer.
1933- */
1934- ucs_assert (!(request -> flags & UCP_REQUEST_FLAG_USER_HEADER_COPIED ));
1935-
1936- if (request -> send .state .uct_comp .status != UCS_OK ) {
1937- ucs_assert (request -> send .msg_proto .am .header .reg_desc == NULL );
1938- } else {
1939- ucp_am_proto_request_zcopy_reset_header (request );
1940- }
1941-
19421928 request -> send .msg_proto .am .internal_flags &=
19431929 ~UCP_REQUEST_AM_FLAG_HEADER_SENT ;
19441930
0 commit comments