Skip to content

Commit ce5d31e

Browse files
Ming Leikawasaki
authored andcommitted
selftests: ublk: add helper ublk_handle_uring_cmd() for handle ublk command
Add helper ublk_handle_uring_cmd() for handling ublk command, and make ublk_handle_cqe() more readable. Signed-off-by: Ming Lei <[email protected]>
1 parent 7a8448e commit ce5d31e

1 file changed

Lines changed: 34 additions & 27 deletions

File tree

  • tools/testing/selftests/ublk

tools/testing/selftests/ublk/kublk.c

Lines changed: 34 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -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+
777784
static int ublk_reap_events_uring(struct ublk_thread *t)
778785
{
779786
struct io_uring_cqe *cqe;

0 commit comments

Comments
 (0)