@@ -13,20 +13,22 @@ static enum io_uring_op ublk_to_uring_op(const struct ublksrv_io_desc *iod, int
1313 assert (0 );
1414}
1515
16- static int loop_queue_flush_io (struct ublk_queue * q , const struct ublksrv_io_desc * iod , int tag )
16+ static int loop_queue_flush_io (struct ublk_thread * t , struct ublk_queue * q ,
17+ const struct ublksrv_io_desc * iod , int tag )
1718{
1819 unsigned ublk_op = ublksrv_get_op (iod );
1920 struct io_uring_sqe * sqe [1 ];
2021
21- ublk_io_alloc_sqes (ublk_get_io ( q , tag ) , sqe , 1 );
22+ ublk_io_alloc_sqes (t , sqe , 1 );
2223 io_uring_prep_fsync (sqe [0 ], 1 /*fds[1]*/ , IORING_FSYNC_DATASYNC );
2324 io_uring_sqe_set_flags (sqe [0 ], IOSQE_FIXED_FILE );
2425 /* bit63 marks us as tgt io */
2526 sqe [0 ]-> user_data = build_user_data (tag , ublk_op , 0 , q -> q_id , 1 );
2627 return 1 ;
2728}
2829
29- static int loop_queue_tgt_rw_io (struct ublk_queue * q , const struct ublksrv_io_desc * iod , int tag )
30+ static int loop_queue_tgt_rw_io (struct ublk_thread * t , struct ublk_queue * q ,
31+ const struct ublksrv_io_desc * iod , int tag )
3032{
3133 unsigned ublk_op = ublksrv_get_op (iod );
3234 unsigned zc = ublk_queue_use_zc (q );
@@ -36,7 +38,7 @@ static int loop_queue_tgt_rw_io(struct ublk_queue *q, const struct ublksrv_io_de
3638 void * addr = (zc | auto_zc ) ? NULL : (void * )iod -> addr ;
3739
3840 if (!zc || auto_zc ) {
39- ublk_io_alloc_sqes (ublk_get_io ( q , tag ) , sqe , 1 );
41+ ublk_io_alloc_sqes (t , sqe , 1 );
4042 if (!sqe [0 ])
4143 return - ENOMEM ;
4244
@@ -52,7 +54,7 @@ static int loop_queue_tgt_rw_io(struct ublk_queue *q, const struct ublksrv_io_de
5254 return 1 ;
5355 }
5456
55- ublk_io_alloc_sqes (ublk_get_io ( q , tag ) , sqe , 3 );
57+ ublk_io_alloc_sqes (t , sqe , 3 );
5658
5759 io_uring_prep_buf_register (sqe [0 ], 0 , tag , q -> q_id , ublk_get_io (q , tag )-> buf_index );
5860 sqe [0 ]-> flags |= IOSQE_CQE_SKIP_SUCCESS | IOSQE_IO_HARDLINK ;
@@ -72,23 +74,23 @@ static int loop_queue_tgt_rw_io(struct ublk_queue *q, const struct ublksrv_io_de
7274 return 2 ;
7375}
7476
75- static int loop_queue_tgt_io (struct ublk_queue * q , int tag )
77+ static int loop_queue_tgt_io (struct ublk_thread * t , struct ublk_queue * q , int tag )
7678{
7779 const struct ublksrv_io_desc * iod = ublk_get_iod (q , tag );
7880 unsigned ublk_op = ublksrv_get_op (iod );
7981 int ret ;
8082
8183 switch (ublk_op ) {
8284 case UBLK_IO_OP_FLUSH :
83- ret = loop_queue_flush_io (q , iod , tag );
85+ ret = loop_queue_flush_io (t , q , iod , tag );
8486 break ;
8587 case UBLK_IO_OP_WRITE_ZEROES :
8688 case UBLK_IO_OP_DISCARD :
8789 ret = - ENOTSUP ;
8890 break ;
8991 case UBLK_IO_OP_READ :
9092 case UBLK_IO_OP_WRITE :
91- ret = loop_queue_tgt_rw_io (q , iod , tag );
93+ ret = loop_queue_tgt_rw_io (t , q , iod , tag );
9294 break ;
9395 default :
9496 ret = - EINVAL ;
@@ -100,15 +102,16 @@ static int loop_queue_tgt_io(struct ublk_queue *q, int tag)
100102 return ret ;
101103}
102104
103- static int ublk_loop_queue_io (struct ublk_queue * q , int tag )
105+ static int ublk_loop_queue_io (struct ublk_thread * t , struct ublk_queue * q ,
106+ int tag )
104107{
105- int queued = loop_queue_tgt_io (q , tag );
108+ int queued = loop_queue_tgt_io (t , q , tag );
106109
107110 ublk_queued_tgt_io (q , tag , queued );
108111 return 0 ;
109112}
110113
111- static void ublk_loop_io_done (struct ublk_queue * q ,
114+ static void ublk_loop_io_done (struct ublk_thread * t , struct ublk_queue * q ,
112115 const struct io_uring_cqe * cqe )
113116{
114117 unsigned tag = user_data_to_tag (cqe -> user_data );
0 commit comments