Repository navigation
fix: default DISK_IO to native so QEMU boots on kernels before 5.12 - #7
Merged
Merged
Conversation
dockur 6.06 lets QEMU 11 pick io_uring, which on older kernels (Ubuntu 20.04's 5.4 among them) fails at boot with "Failed to initialize io_uring: Cannot allocate memory" because the buffers count against the container's 64 KB memlock limit. native works everywhere; io_uring stays available through DISK_IO in .env. README: storage/ and shared/ are written by the container as root, so the "start over" instructions now use sudo.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Current Behaviour
On a host with a kernel older than 5.12 (Ubuntu 20.04 ships 5.4) the first start ends right after "Booting Windows using QEMU":
and the container restarts in a loop. dockur 6.06 lets QEMU 11 choose io_uring for disk I/O, whose buffers are charged against the container's locked-memory limit on those kernels, and Docker caps that at 64 KB.
Also,
storage/andshared/are written by the container as root, so the README's "delete storage/" instructions fail for a normal user.Expected Behaviour
docker-compose.ymlsetsDISK_IOtonative, the Linux AIO backend that works on every kernel. It can be overridden from.env;io_uringremains available on kernels 5.12 and newer..env.exampleand the README table document the three values and whenio_uringis safe.sudo rm -rf storage shared.docker compose configpasses. The setting maps to QEMU'saio=native, confirmed in dockur's disk.sh. Not yet confirmed on the affected host at the time of merging; the host is being re-run with this setting.