File util-linux-loop-reuse-17.patch of Package util-linux.4768
From f27d989c67eb0d85b3bfc54807e626ff16e71f56 Mon Sep 17 00:00:00 2001
From: Stanislav Brabec <sbrabec@suse.cz>
Date: Wed, 17 Aug 2016 12:54:40 +0200
Subject: [PATCH 17/20] losetup: Prevent AUTOCLEAR detach race
Kernel needs some time to delete a device after losetup --detach. If
the losetup --find --nooverlay is called just after losetup --delete,
it can sometimes attempt to recycle the device that is just being
released. To prevent this race, clear the AUTOCLEAR flag of the
device.
[kzak@redhat.com: - rebase to the new version of the code]
Signed-off-by: Stanislav Brabec <sbrabec@suse.cz>
Signed-off-by: Karel Zak <kzak@redhat.com>
---
sys-utils/losetup.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/sys-utils/losetup.c b/sys-utils/losetup.c
index ba1363d..606789c 100644
--- a/sys-utils/losetup.c
+++ b/sys-utils/losetup.c
@@ -481,6 +481,12 @@ static int create_loop(struct loopdev_cxt *lc,
loopcxt_deinit(lc);
errx(EXIT_FAILURE, _("%s: overlapping encrypted loop device exists"), file);
}
+
+ lc->info.lo_flags &= !LO_FLAGS_AUTOCLEAR;
+ if (loopcxt_set_status(lc)) {
+ loopcxt_deinit(lc);
+ errx(EXIT_FAILURE, _("%s: failed to re-use loop device"), file);
+ }
return 0; /* success, re-use */
}
default: /* error */
--
2.9.2