ublk_io
struct ublk_io *io)
static inline bool ublk_get_req_ref(struct ublk_io *io)
static inline void ublk_put_req_ref(struct ublk_io *io, struct request *req)
static inline bool ublk_sub_req_ref(struct ublk_io *io)
const struct ublk_io *io)
const struct ublk_io *io)
struct ublk_io *io = &ubq->ios[req->tag];
static inline void __ublk_complete_rq(struct request *req, struct ublk_io *io,
static struct io_uring_cmd *__ublk_prep_compl_io_cmd(struct ublk_io *io,
static void ublk_complete_io_cmd(struct ublk_io *io, struct request *req,
struct request *req, struct ublk_io *io,
struct ublk_io *io, struct io_uring_cmd *cmd,
struct request *req, struct ublk_io *io,
struct ublk_io *io)
struct ublk_io *io = &ubq->ios[tag];
struct ublk_io *io = &ubq->ios[tag];
struct ublk_io *io = &ubq->ios[tag_buf[i]];
static void ublk_queue_cmd_list(struct ublk_io *io, struct rq_list *l)
static inline bool ublk_belong_to_same_batch(const struct ublk_io *io,
const struct ublk_io *io2)
struct ublk_io *io = NULL;
struct ublk_io *this_io = &this_q->ios[req->tag];
struct ublk_io *io = &ubq->ios[i];
struct ublk_io *io = &ubq->ios[j];
static void __ublk_fail_req(struct ublk_device *ub, struct ublk_io *io,
struct ublk_io *io = &ubq->ios[i];
struct ublk_io *io = &ubq->ios[tag];
struct ublk_io *io;
struct ublk_io ios[] __counted_by(q_depth);
static inline int ublk_set_auto_buf_reg(struct ublk_io *io, struct io_uring_cmd *cmd)
static void ublk_clear_auto_buf_reg(struct ublk_io *io,
static int ublk_handle_auto_buf_reg(struct ublk_io *io,
ublk_fill_io_cmd(struct ublk_io *io, struct io_uring_cmd *cmd)
ublk_config_io_buf(const struct ublk_device *ub, struct ublk_io *io,
struct ublk_io *io = &ubq->ios[rq->tag];
struct ublk_io *io,
u16 q_id, u16 tag, struct ublk_io *io,
struct ublk_io *io, u16 q_id)
struct ublk_io *io, __u64 buf_addr, u16 q_id)
struct ublk_io *io, __u64 buf_addr)
struct ublk_io *io)
static bool ublk_get_data(const struct ublk_queue *ubq, struct ublk_io *io,
struct ublk_io *io = NULL;
u16 q_id, u16 tag, struct ublk_io *io)
u16 q_id, u16 tag, struct ublk_io *io);
struct ublk_io *io = &ubq->ios[elem->tag];
static inline void ublk_io_lock(struct ublk_io *io)
struct ublk_io *io = &ubq->ios[elem->tag];
static inline void ublk_io_unlock(struct ublk_io *io)
struct ublk_io *io,
struct ublk_io *io = &ubq->ios[elem->tag];
struct ublk_io *io;
struct ublk_io *io;
struct ublk_io *io = &ubq->ios[i];
struct ublk_io *io = &ubq->ios[req->tag];
static inline void __ublk_complete_rq(struct request *req, struct ublk_io *io,
struct ublk_io *io = &q->ios[i];
struct ublk_io *io = &q->ios[tag];
struct ublk_io *io = ublk_get_io(q, tag);
struct ublk_io *io = ublk_get_io(q, tag);
static void ublk_user_copy(const struct ublk_io *io, __u8 match_ublk_op)
int ublk_queue_io_cmd(struct ublk_thread *t, struct ublk_io *io)
struct ublk_io *io;
struct ublk_io *io = &q->ios[tag];
struct ublk_io ios[UBLK_QUEUE_DEPTH];
extern int ublk_queue_io_cmd(struct ublk_thread *t, struct ublk_io *io);
static inline struct ublk_queue *ublk_io_to_queue(const struct ublk_io *io)
static inline void ublk_mark_io_done(struct ublk_io *io, int res)
static inline struct ublk_io *ublk_get_io(struct ublk_queue *q, unsigned tag)
struct ublk_io *io = ublk_get_io(q, tag);
struct ublk_io *io = &q->ios[tag];
struct ublk_io *io = ublk_get_io(q, tag);
struct ublk_io *io = ublk_get_io(q, tag);
struct ublk_io *io = ublk_get_io(q, tag);
struct ublk_io *io = ublk_get_io(q, tag);