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

openSUSE Build Service is sponsored by