Skip to content

Commit d37b166

Browse files
Ming Leikawasaki
authored andcommitted
selftests: ublk: remove ublk queue self-defined flags
Remove ublk queue self-defined flags, and use the uapi flags directly. Signed-off-by: Ming Lei <[email protected]>
1 parent 0c89e69 commit d37b166

3 files changed

Lines changed: 25 additions & 24 deletions

File tree

tools/testing/selftests/ublk/kublk.c

Lines changed: 9 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -441,17 +441,10 @@ static int ublk_queue_init(struct ublk_queue *q, unsigned extra_flags)
441441
unsigned long off;
442442

443443
q->tgt_ops = dev->tgt.ops;
444-
q->state = 0;
444+
q->flags = 0;
445445
q->q_depth = depth;
446-
447-
if (dev->dev_info.flags & (UBLK_F_SUPPORT_ZERO_COPY | UBLK_F_AUTO_BUF_REG)) {
448-
q->state |= UBLKSRV_NO_BUF;
449-
if (dev->dev_info.flags & UBLK_F_SUPPORT_ZERO_COPY)
450-
q->state |= UBLKSRV_ZC;
451-
if (dev->dev_info.flags & UBLK_F_AUTO_BUF_REG)
452-
q->state |= UBLKSRV_AUTO_BUF_REG;
453-
}
454-
q->state |= extra_flags;
446+
q->flags = dev->dev_info.flags;
447+
q->flags |= extra_flags;
455448

456449
cmd_buf_size = ublk_queue_cmd_buf_sz(q);
457450
off = UBLKSRV_CMD_BUF_OFFSET + q->q_id * ublk_queue_max_cmd_buf_sz();
@@ -469,7 +462,7 @@ static int ublk_queue_init(struct ublk_queue *q, unsigned extra_flags)
469462
q->ios[i].flags = UBLKSRV_NEED_FETCH_RQ | UBLKSRV_IO_FREE;
470463
q->ios[i].tag = i;
471464

472-
if (q->state & UBLKSRV_NO_BUF)
465+
if (ublk_queue_no_buf(q))
473466
continue;
474467

475468
if (posix_memalign((void **)&q->ios[i].buf_addr,
@@ -583,7 +576,7 @@ static void ublk_set_auto_buf_reg(const struct ublk_queue *q,
583576
else
584577
buf.index = q->ios[tag].buf_index;
585578

586-
if (q->state & UBLKSRV_AUTO_BUF_REG_FALLBACK)
579+
if (ublk_queue_auto_zc_fallback(q))
587580
buf.flags = UBLK_AUTO_BUF_REG_FALLBACK;
588581

589582
sqe->addr = ublk_auto_buf_reg_to_sqe_addr(&buf);
@@ -639,12 +632,12 @@ int ublk_queue_io_cmd(struct ublk_thread *t, struct ublk_io *io)
639632
sqe[0]->rw_flags = 0;
640633
cmd->tag = io->tag;
641634
cmd->q_id = q->q_id;
642-
if (!(q->state & UBLKSRV_NO_BUF))
635+
if (!ublk_queue_no_buf(q))
643636
cmd->addr = (__u64) (uintptr_t) io->buf_addr;
644637
else
645638
cmd->addr = 0;
646639

647-
if (q->state & UBLKSRV_AUTO_BUF_REG)
640+
if (ublk_queue_use_auto_zc(q))
648641
ublk_set_auto_buf_reg(q, sqe[0], io->tag);
649642

650643
user_data = build_user_data(io->tag, _IOC_NR(cmd_op), 0, q->q_id, 0);
@@ -739,7 +732,7 @@ static void ublk_handle_cqe(struct ublk_thread *t,
739732

740733
if (cqe->res < 0 && cqe->res != -ENODEV)
741734
ublk_err("%s: res %d userdata %llx queue state %x\n", __func__,
742-
cqe->res, cqe->user_data, q->state);
735+
cqe->res, cqe->user_data, q->flags);
743736

744737
ublk_dbg(UBLK_DBG_IO_CMD, "%s: res %d (qid %d tag %u cmd_op %u target %d/%d) stopping %d\n",
745738
__func__, cqe->res, q->q_id, tag, cmd_op,
@@ -911,7 +904,7 @@ static int ublk_start_daemon(const struct dev_ctx *ctx, struct ublk_dev *dev)
911904
{
912905
const struct ublksrv_ctrl_dev_info *dinfo = &dev->dev_info;
913906
struct ublk_thread_info *tinfo;
914-
unsigned extra_flags = 0;
907+
unsigned long long extra_flags = 0;
915908
cpu_set_t *affinity_buf;
916909
void *thread_ret;
917910
sem_t ready;

tools/testing/selftests/ublk/kublk.h

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -178,12 +178,10 @@ struct ublk_queue {
178178
const struct ublk_tgt_ops *tgt_ops;
179179
struct ublksrv_io_desc *io_cmd_buf;
180180

181+
/* borrow one bit of ublk uapi flags, which may never be used */
182+
#define UBLKSRV_AUTO_BUF_REG_FALLBACK (1ULL << 63)
183+
__u64 flags;
181184
struct ublk_io ios[UBLK_QUEUE_DEPTH];
182-
#define UBLKSRV_NO_BUF (1U << 2)
183-
#define UBLKSRV_ZC (1U << 3)
184-
#define UBLKSRV_AUTO_BUF_REG (1U << 4)
185-
#define UBLKSRV_AUTO_BUF_REG_FALLBACK (1U << 5)
186-
unsigned state;
187185
};
188186

189187
struct ublk_thread {
@@ -437,12 +435,22 @@ static inline int ublk_completed_tgt_io(struct ublk_thread *t,
437435

438436
static inline int ublk_queue_use_zc(const struct ublk_queue *q)
439437
{
440-
return q->state & UBLKSRV_ZC;
438+
return q->flags & UBLK_F_SUPPORT_ZERO_COPY;
441439
}
442440

443441
static inline int ublk_queue_use_auto_zc(const struct ublk_queue *q)
444442
{
445-
return q->state & UBLKSRV_AUTO_BUF_REG;
443+
return q->flags & UBLK_F_AUTO_BUF_REG;
444+
}
445+
446+
static inline int ublk_queue_auto_zc_fallback(const struct ublk_queue *q)
447+
{
448+
return q->flags & UBLKSRV_AUTO_BUF_REG_FALLBACK;
449+
}
450+
451+
static inline int ublk_queue_no_buf(const struct ublk_queue *q)
452+
{
453+
return ublk_queue_use_zc(q) || ublk_queue_use_auto_zc(q);
446454
}
447455

448456
extern const struct ublk_tgt_ops null_tgt_ops;

tools/testing/selftests/ublk/null.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,7 @@ static int ublk_null_queue_io(struct ublk_thread *t, struct ublk_queue *q,
138138
*/
139139
static unsigned short ublk_null_buf_index(const struct ublk_queue *q, int tag)
140140
{
141-
if (q->state & UBLKSRV_AUTO_BUF_REG_FALLBACK)
141+
if (ublk_queue_auto_zc_fallback(q))
142142
return (unsigned short)-1;
143143
return q->ios[tag].buf_index;
144144
}

0 commit comments

Comments
 (0)