The integration tests make use of the losetup utility to attach and delete loop devices. losetup doesn't do any retries upon EBSY or EAGAIN errors that are issues from time to time from the loopdev driver. Especially when running the tests in parallel (which is the cargo default) the tests fail from time to time in the Travis setup. The test implementation tries to workaround this by adding delays before and after losetup calls.
The attempt to migrate the CI to Github actions has the same issues. Looks like the errors happen even more often than on Travis.
A possible solutions is to add retries to the losetup invocations. This is common approach that is seen in almost every piece of code that interacts with the loopback driver.
The integration tests make use of the
losetuputility to attach and delete loop devices.losetupdoesn't do any retries uponEBSYorEAGAINerrors that are issues from time to time from the loopdev driver. Especially when running the tests in parallel (which is the cargo default) the tests fail from time to time in the Travis setup. The test implementation tries to workaround this by adding delays before and afterlosetupcalls.The attempt to migrate the CI to Github actions has the same issues. Looks like the errors happen even more often than on Travis.
A possible solutions is to add retries to the
losetupinvocations. This is common approach that is seen in almost every piece of code that interacts with the loopback driver.