static bool io_resubmit_prep(struct io_kiocb *req)
{
	struct iovec inline_vecs[UIO_FASTIOV], *iovec = inline_vecs;
	int rw, ret;
	struct iov_iter iter;

	/* already prepared */
	if (req->async_data)
		return true;

	switch (req->opcode) {
	case IORING_OP_READV:
	case IORING_OP_READ_FIXED:
	case IORING_OP_READ:
		rw = READ;
		break;
	case IORING_OP_WRITEV:
	case IORING_OP_WRITE_FIXED:
	case IORING_OP_WRITE:
		rw = WRITE;
		break;
	default:
		printk_once(KERN_WARNING "io_uring: bad opcode in resubmit %d\n",
				req->opcode);
		return false;
	}

	ret = io_import_iovec(rw, req, &iovec, &iter, false);
	if (ret < 0)
		return false;
	return !io_setup_async_rw(req, iovec, inline_vecs, &iter, false);
}
static bool io_resubmit_prep(struct io_kiocb *req)
{
	struct iovec inline_vecs[UIO_FASTIOV], *iovec = inline_vecs;
	int rw, ret;
	struct iov_iter iter;

	 
	if (req->async_data)
		return true;

	switch (req->opcode) {
	case IORING_OP_READV:
	case IORING_OP_READ_FIXED:
	case IORING_OP_READ:
		rw = READ;
		break;
	case IORING_OP_WRITEV:
	case IORING_OP_WRITE_FIXED:
	case IORING_OP_WRITE:
		rw = WRITE;
		break;
	default:
		printk_once(KERN_WARNING "io_uring: bad opcode in resubmit %d\n",
				req->opcode);
		return false;
	}

	ret = io_import_iovec(rw, req, &iovec, &iter, false);
	if (ret < 0)
		return false;
	return !io_setup_async_rw(req, iovec, inline_vecs, &iter, false);
}