Alberto Faria
Alberto Faria
> Wow, that's pretty complicated Indeed. An alternative design would be to have separate "BigEntry" types, and parameterize `IoUring` with the SQE and CQE types, or maybe making `IoUring` a...
v2: - Provide separate types for differently-sized SQEs and CQEs, and parameterize `IoUring` with the SQE and CQE type. - No longer backward-compatible, but still a simple change for existing...
Providing separate `IoUring` `impl`s for each valid SQE-CQE type combination will make it difficult for users to create generic code that can work on any `IoUring`. The same goes for...
v3: - Rename `Entry` to `EntryMarker`, `Entry64` to `Entry`, and `Entry16` to `Entry`. - Move methods from `EntryMarker` traits into the `EntryN` structs themselves. - `impl From for Entry32` instead...
`SubmissionQueue::push`, `SubmissionQueue::push_multiple`, and `CompletionQueue::fill` also can't become generic if we want to keep backward compatibility. Other than that, are we sure that adding default type parameters to `IoUring`, `SubmissionQueue`, and...
The trouble is that the compiler can no longer use the type of those methods' arguments for type inference, see for instance the changes required to io-uring-test/src/tests/queue.rs (https://github.com/tokio-rs/io-uring/pull/133/commits/10f20c2e05f1209a2bee7a191161846656595807#diff-d0a68ef9fac5d4f6bf1873905a7b3b83bbe153fc356af15d3c3da510de186836).
v4: - Rename `IoUring::new()` to `IoUring::generic_new()` and `IoUring::builder()` to `IoUring::generic_builder()`. - Add `new()` and `builder()` methods to `IoUring`. - Drop type parameter from methods `SubmissionQueue::push`, `SubmissionQueue::push_multiple`, and `CompletionQueue::fill`. I'm not...
v5: - Make `Builder`'s type parameters have defaults.
Which of these should be behind `unstable`? 1. `squeue::Entry128` and `cqueue::Entry32`; 2. `cqueue::Entry32::big_cqe`; 3. `IoUring::generic_new` and `IoUring::generic_builder`; 4. `UringCmd16` and `UringCmd80`. Testing the new opcodes in CI will be difficult,...
The difficulty is that NVMe passthrough requires CAP_SYS_ADMIN and an actual NVMe device, which can also be a problem for local testing.