}
static int ublk_register_io_buf(struct io_uring_cmd *cmd,
+ struct ublk_device *ub,
const struct ublk_queue *ubq,
struct ublk_io *io,
unsigned int index, unsigned int issue_flags)
{
- struct ublk_device *ub = cmd->file->private_data;
struct request *req;
int ret;
static int
ublk_daemon_register_io_buf(struct io_uring_cmd *cmd,
+ struct ublk_device *ub,
const struct ublk_queue *ubq, struct ublk_io *io,
unsigned index, unsigned issue_flags)
{
*/
new_registered_buffers = io->task_registered_buffers + 1;
if (unlikely(new_registered_buffers >= UBLK_REFCOUNT_INIT))
- return ublk_register_io_buf(cmd, ubq, io, index, issue_flags);
+ return ublk_register_io_buf(cmd, ub, ubq, io, index,
+ issue_flags);
if (!ublk_support_zero_copy(ubq) || !ublk_rq_has_data(req))
return -EINVAL;
* so can be handled on any task
*/
if (_IOC_NR(cmd_op) == UBLK_IO_REGISTER_IO_BUF)
- return ublk_register_io_buf(cmd, ubq, io, addr,
+ return ublk_register_io_buf(cmd, ub, ubq, io, addr,
issue_flags);
goto out;
switch (_IOC_NR(cmd_op)) {
case UBLK_IO_REGISTER_IO_BUF:
- return ublk_daemon_register_io_buf(cmd, ubq, io, addr,
+ return ublk_daemon_register_io_buf(cmd, ub, ubq, io, addr,
issue_flags);
case UBLK_IO_COMMIT_AND_FETCH_REQ:
ret = ublk_check_commit_and_fetch(ubq, io, addr);