From 0950526afdfe8f21267057bb346b9aa98d2f9c24 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Thu, 24 Sep 2020 15:09:14 +0200 Subject: [PATCH 1/2] loop-util: use right flags field --- src/shared/loop-util.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/shared/loop-util.c b/src/shared/loop-util.c index fcbd5a5f79..8760cc89d9 100644 --- a/src/shared/loop-util.c +++ b/src/shared/loop-util.c @@ -176,7 +176,7 @@ int loop_device_make( .fd = fd, .info = { /* Use the specified flags, but configure the read-only flag from the open flags, and force autoclear */ - .lo_flags = (loop_flags & ~LO_FLAGS_READ_ONLY) | ((loop_flags & O_ACCMODE) == O_RDONLY ? LO_FLAGS_READ_ONLY : 0) | LO_FLAGS_AUTOCLEAR, + .lo_flags = (loop_flags & ~LO_FLAGS_READ_ONLY) | ((open_flags & O_ACCMODE) == O_RDONLY ? LO_FLAGS_READ_ONLY : 0) | LO_FLAGS_AUTOCLEAR, .lo_offset = offset, .lo_sizelimit = size == UINT64_MAX ? 0 : size, }, From 77ad674b51ceb598aae1adaa7abe572ad0262f39 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Thu, 24 Sep 2020 15:08:22 +0200 Subject: [PATCH 2/2] loop-util: apparently opening a loop device sometimes results in ENXIO, handle this --- src/shared/loop-util.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/shared/loop-util.c b/src/shared/loop-util.c index 8760cc89d9..4843cbcaab 100644 --- a/src/shared/loop-util.c +++ b/src/shared/loop-util.c @@ -198,7 +198,7 @@ int loop_device_make( if (loop < 0) { /* Somebody might've gotten the same number from the kernel, used the device, * and called LOOP_CTL_REMOVE on it. Let's retry with a new number. */ - if (errno != ENOENT) + if (!IN_SET(errno, ENOENT, ENXIO)) return -errno; } else { r = loop_configure(loop, &config);