@@ -718,36 +718,14 @@ static inline void ublksrv_handle_tgt_cqe(struct ublk_thread *t,
718718 q -> tgt_ops -> tgt_io_done (t , q , cqe );
719719}
720720
721- static void ublk_handle_cqe (struct ublk_thread * t ,
722- struct io_uring_cqe * cqe , void * data )
721+ static void ublk_handle_uring_cmd (struct ublk_thread * t ,
722+ struct ublk_queue * q ,
723+ const struct io_uring_cqe * cqe )
723724{
724- struct ublk_dev * dev = t -> dev ;
725- unsigned q_id = user_data_to_q_id (cqe -> user_data );
726- struct ublk_queue * q = & dev -> q [q_id ];
727- unsigned tag = user_data_to_tag (cqe -> user_data );
728- unsigned cmd_op = user_data_to_op (cqe -> user_data );
729725 int fetch = (cqe -> res != UBLK_IO_RES_ABORT ) &&
730726 !(t -> state & UBLKS_T_STOPPING );
731- struct ublk_io * io ;
732-
733- if (cqe -> res < 0 && cqe -> res != - ENODEV )
734- ublk_err ("%s: res %d userdata %llx queue state %x\n" , __func__ ,
735- cqe -> res , cqe -> user_data , q -> flags );
736-
737- ublk_dbg (UBLK_DBG_IO_CMD , "%s: res %d (qid %d tag %u cmd_op %u target %d/%d) stopping %d\n" ,
738- __func__ , cqe -> res , q -> q_id , tag , cmd_op ,
739- is_target_io (cqe -> user_data ),
740- user_data_to_tgt_data (cqe -> user_data ),
741- (t -> state & UBLKS_T_STOPPING ));
742-
743- /* Don't retrieve io in case of target io */
744- if (is_target_io (cqe -> user_data )) {
745- ublksrv_handle_tgt_cqe (t , q , cqe );
746- return ;
747- }
748-
749- io = & q -> ios [tag ];
750- t -> cmd_inflight -- ;
727+ unsigned tag = user_data_to_tag (cqe -> user_data );
728+ struct ublk_io * io = & q -> ios [tag ];
751729
752730 if (!fetch ) {
753731 t -> state |= UBLKS_T_STOPPING ;
@@ -774,6 +752,35 @@ static void ublk_handle_cqe(struct ublk_thread *t,
774752 }
775753}
776754
755+ static void ublk_handle_cqe (struct ublk_thread * t ,
756+ struct io_uring_cqe * cqe , void * data )
757+ {
758+ struct ublk_dev * dev = t -> dev ;
759+ unsigned q_id = user_data_to_q_id (cqe -> user_data );
760+ struct ublk_queue * q = & dev -> q [q_id ];
761+ unsigned cmd_op = user_data_to_op (cqe -> user_data );
762+
763+ if (cqe -> res < 0 && cqe -> res != - ENODEV )
764+ ublk_err ("%s: res %d userdata %llx queue state %x\n" , __func__ ,
765+ cqe -> res , cqe -> user_data , q -> flags );
766+
767+ ublk_dbg (UBLK_DBG_IO_CMD , "%s: res %d (qid %d tag %u cmd_op %u target %d/%d) stopping %d\n" ,
768+ __func__ , cqe -> res , q -> q_id , user_data_to_tag (cqe -> user_data ),
769+ cmd_op , is_target_io (cqe -> user_data ),
770+ user_data_to_tgt_data (cqe -> user_data ),
771+ (t -> state & UBLKS_T_STOPPING ));
772+
773+ /* Don't retrieve io in case of target io */
774+ if (is_target_io (cqe -> user_data )) {
775+ ublksrv_handle_tgt_cqe (t , q , cqe );
776+ return ;
777+ }
778+
779+ t -> cmd_inflight -- ;
780+
781+ ublk_handle_uring_cmd (t , q , cqe );
782+ }
783+
777784static int ublk_reap_events_uring (struct ublk_thread * t )
778785{
779786 struct io_uring_cqe * cqe ;
0 commit comments