mirror of
https://github.com/torvalds/linux.git
synced 2026-05-25 07:33:19 +02:00
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 <ming.lei@redhat.com> Link: https://lore.kernel.org/r/20250713143415.2857561-15-ming.lei@redhat.com Signed-off-by: Jens Axboe <axboe@kernel.dk>
This commit is contained in:
parent
92dda98424
commit
c3a6d48f86
|
|
@ -441,17 +441,10 @@ static int ublk_queue_init(struct ublk_queue *q, unsigned extra_flags)
|
||||||
unsigned long off;
|
unsigned long off;
|
||||||
|
|
||||||
q->tgt_ops = dev->tgt.ops;
|
q->tgt_ops = dev->tgt.ops;
|
||||||
q->state = 0;
|
q->flags = 0;
|
||||||
q->q_depth = depth;
|
q->q_depth = depth;
|
||||||
|
q->flags = dev->dev_info.flags;
|
||||||
if (dev->dev_info.flags & (UBLK_F_SUPPORT_ZERO_COPY | UBLK_F_AUTO_BUF_REG)) {
|
q->flags |= extra_flags;
|
||||||
q->state |= UBLKSRV_NO_BUF;
|
|
||||||
if (dev->dev_info.flags & UBLK_F_SUPPORT_ZERO_COPY)
|
|
||||||
q->state |= UBLKSRV_ZC;
|
|
||||||
if (dev->dev_info.flags & UBLK_F_AUTO_BUF_REG)
|
|
||||||
q->state |= UBLKSRV_AUTO_BUF_REG;
|
|
||||||
}
|
|
||||||
q->state |= extra_flags;
|
|
||||||
|
|
||||||
cmd_buf_size = ublk_queue_cmd_buf_sz(q);
|
cmd_buf_size = ublk_queue_cmd_buf_sz(q);
|
||||||
off = UBLKSRV_CMD_BUF_OFFSET + q->q_id * ublk_queue_max_cmd_buf_sz();
|
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)
|
||||||
q->ios[i].flags = UBLKSRV_NEED_FETCH_RQ | UBLKSRV_IO_FREE;
|
q->ios[i].flags = UBLKSRV_NEED_FETCH_RQ | UBLKSRV_IO_FREE;
|
||||||
q->ios[i].tag = i;
|
q->ios[i].tag = i;
|
||||||
|
|
||||||
if (q->state & UBLKSRV_NO_BUF)
|
if (ublk_queue_no_buf(q))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (posix_memalign((void **)&q->ios[i].buf_addr,
|
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,
|
||||||
else
|
else
|
||||||
buf.index = q->ios[tag].buf_index;
|
buf.index = q->ios[tag].buf_index;
|
||||||
|
|
||||||
if (q->state & UBLKSRV_AUTO_BUF_REG_FALLBACK)
|
if (ublk_queue_auto_zc_fallback(q))
|
||||||
buf.flags = UBLK_AUTO_BUF_REG_FALLBACK;
|
buf.flags = UBLK_AUTO_BUF_REG_FALLBACK;
|
||||||
|
|
||||||
sqe->addr = ublk_auto_buf_reg_to_sqe_addr(&buf);
|
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)
|
||||||
sqe[0]->rw_flags = 0;
|
sqe[0]->rw_flags = 0;
|
||||||
cmd->tag = io->tag;
|
cmd->tag = io->tag;
|
||||||
cmd->q_id = q->q_id;
|
cmd->q_id = q->q_id;
|
||||||
if (!(q->state & UBLKSRV_NO_BUF))
|
if (!ublk_queue_no_buf(q))
|
||||||
cmd->addr = (__u64) (uintptr_t) io->buf_addr;
|
cmd->addr = (__u64) (uintptr_t) io->buf_addr;
|
||||||
else
|
else
|
||||||
cmd->addr = 0;
|
cmd->addr = 0;
|
||||||
|
|
||||||
if (q->state & UBLKSRV_AUTO_BUF_REG)
|
if (ublk_queue_use_auto_zc(q))
|
||||||
ublk_set_auto_buf_reg(q, sqe[0], io->tag);
|
ublk_set_auto_buf_reg(q, sqe[0], io->tag);
|
||||||
|
|
||||||
user_data = build_user_data(io->tag, _IOC_NR(cmd_op), 0, q->q_id, 0);
|
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,
|
||||||
|
|
||||||
if (cqe->res < 0 && cqe->res != -ENODEV)
|
if (cqe->res < 0 && cqe->res != -ENODEV)
|
||||||
ublk_err("%s: res %d userdata %llx queue state %x\n", __func__,
|
ublk_err("%s: res %d userdata %llx queue state %x\n", __func__,
|
||||||
cqe->res, cqe->user_data, q->state);
|
cqe->res, cqe->user_data, q->flags);
|
||||||
|
|
||||||
ublk_dbg(UBLK_DBG_IO_CMD, "%s: res %d (qid %d tag %u cmd_op %u target %d/%d) stopping %d\n",
|
ublk_dbg(UBLK_DBG_IO_CMD, "%s: res %d (qid %d tag %u cmd_op %u target %d/%d) stopping %d\n",
|
||||||
__func__, cqe->res, q->q_id, tag, cmd_op,
|
__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)
|
||||||
{
|
{
|
||||||
const struct ublksrv_ctrl_dev_info *dinfo = &dev->dev_info;
|
const struct ublksrv_ctrl_dev_info *dinfo = &dev->dev_info;
|
||||||
struct ublk_thread_info *tinfo;
|
struct ublk_thread_info *tinfo;
|
||||||
unsigned extra_flags = 0;
|
unsigned long long extra_flags = 0;
|
||||||
cpu_set_t *affinity_buf;
|
cpu_set_t *affinity_buf;
|
||||||
void *thread_ret;
|
void *thread_ret;
|
||||||
sem_t ready;
|
sem_t ready;
|
||||||
|
|
|
||||||
|
|
@ -178,12 +178,10 @@ struct ublk_queue {
|
||||||
const struct ublk_tgt_ops *tgt_ops;
|
const struct ublk_tgt_ops *tgt_ops;
|
||||||
struct ublksrv_io_desc *io_cmd_buf;
|
struct ublksrv_io_desc *io_cmd_buf;
|
||||||
|
|
||||||
|
/* borrow one bit of ublk uapi flags, which may never be used */
|
||||||
|
#define UBLKSRV_AUTO_BUF_REG_FALLBACK (1ULL << 63)
|
||||||
|
__u64 flags;
|
||||||
struct ublk_io ios[UBLK_QUEUE_DEPTH];
|
struct ublk_io ios[UBLK_QUEUE_DEPTH];
|
||||||
#define UBLKSRV_NO_BUF (1U << 2)
|
|
||||||
#define UBLKSRV_ZC (1U << 3)
|
|
||||||
#define UBLKSRV_AUTO_BUF_REG (1U << 4)
|
|
||||||
#define UBLKSRV_AUTO_BUF_REG_FALLBACK (1U << 5)
|
|
||||||
unsigned state;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
struct ublk_thread {
|
struct ublk_thread {
|
||||||
|
|
@ -437,12 +435,22 @@ static inline int ublk_completed_tgt_io(struct ublk_thread *t,
|
||||||
|
|
||||||
static inline int ublk_queue_use_zc(const struct ublk_queue *q)
|
static inline int ublk_queue_use_zc(const struct ublk_queue *q)
|
||||||
{
|
{
|
||||||
return q->state & UBLKSRV_ZC;
|
return q->flags & UBLK_F_SUPPORT_ZERO_COPY;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline int ublk_queue_use_auto_zc(const struct ublk_queue *q)
|
static inline int ublk_queue_use_auto_zc(const struct ublk_queue *q)
|
||||||
{
|
{
|
||||||
return q->state & UBLKSRV_AUTO_BUF_REG;
|
return q->flags & UBLK_F_AUTO_BUF_REG;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int ublk_queue_auto_zc_fallback(const struct ublk_queue *q)
|
||||||
|
{
|
||||||
|
return q->flags & UBLKSRV_AUTO_BUF_REG_FALLBACK;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int ublk_queue_no_buf(const struct ublk_queue *q)
|
||||||
|
{
|
||||||
|
return ublk_queue_use_zc(q) || ublk_queue_use_auto_zc(q);
|
||||||
}
|
}
|
||||||
|
|
||||||
extern const struct ublk_tgt_ops null_tgt_ops;
|
extern const struct ublk_tgt_ops null_tgt_ops;
|
||||||
|
|
|
||||||
|
|
@ -138,7 +138,7 @@ static int ublk_null_queue_io(struct ublk_thread *t, struct ublk_queue *q,
|
||||||
*/
|
*/
|
||||||
static unsigned short ublk_null_buf_index(const struct ublk_queue *q, int tag)
|
static unsigned short ublk_null_buf_index(const struct ublk_queue *q, int tag)
|
||||||
{
|
{
|
||||||
if (q->state & UBLKSRV_AUTO_BUF_REG_FALLBACK)
|
if (ublk_queue_auto_zc_fallback(q))
|
||||||
return (unsigned short)-1;
|
return (unsigned short)-1;
|
||||||
return q->ios[tag].buf_index;
|
return q->ios[tag].buf_index;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user