linux: fix WRITEV with lots of bufs using io_uring (#4004)
In the case of trying to write more than `IOV_MAX` buffers, the `IORING_OP_WRITEV` operation will return `EINVAL`. As a temporal fix, fallback to the old ways. In the future we might implement this by linking multiple `IORING_OP_WRITEV` requests using `IOSQE_IO_LINK`.
This commit is contained in:
parent
d23a20f62c
commit
ef6a9a624d
@ -782,6 +782,11 @@ int uv__iou_fs_read_or_write(uv_loop_t* loop,
|
||||
struct uv__io_uring_sqe* sqe;
|
||||
struct uv__iou* iou;
|
||||
|
||||
/* For the moment, if iovcnt is greater than IOV_MAX, fallback to the
|
||||
* threadpool. In the future we might take advantage of IOSQE_IO_LINK. */
|
||||
if (req->nbufs > IOV_MAX)
|
||||
return 0;
|
||||
|
||||
iou = &uv__get_internal_fields(loop)->iou;
|
||||
|
||||
sqe = uv__iou_get_sqe(iou, loop, req);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user