File os-prober-fix-btrfs-subvol-mounted-tests.patch of Package os-prober

Index: os-prober/os-probes/common/50mounted-tests
===================================================================
--- os-prober.orig/os-probes/common/50mounted-tests
+++ os-prober/os-probes/common/50mounted-tests
@@ -73,10 +73,51 @@ fi
 
 mounted=
 
+if [ "$types" = btrfs ]; then
+	partition="$BTRFSDEV"
+fi
+
+if type grub2-mount >/dev/null 2>&1 && \
+   type grub2-probe >/dev/null 2>&1 && \
+   grub2-mount "$partition" "$tmpmnt" 2>/dev/null; then
+	mounted=1
+	type="$(grub2-probe -d "$partition" -t fs)" || true
+	if [ "$type" ]; then
+		debug "mounted using GRUB $type filesystem driver"
+	else
+		debug "mounted using GRUB, but unknown filesystem?"
+		type=fuseblk
+	fi
+elif dm_device="$(do_dmsetup osprober "$partition")" && \
+     [ "$dm_device" ]; then
+	for type in $types; do
+		if mountinfo=`mount -o ro -t "$type" "$dm_device" "$tmpmnt" 2>&1`; then
+			debug "mounted as $type filesystem"
+			mounted=1
+			break
+		else
+			debug "mounting $dm_device ($partition) as $type failed: $mountinfo"
+		fi
+	done
+fi
+
+if [ "$mounted" ]; then
+	for test in /usr/lib/os-probes/mounted/*; do
+		debug "running subtest $test"
+		if [ -f "$test" ] && [ -x "$test" ]; then
+			if "$test" "$partition" "$tmpmnt" "$type"; then
+				debug "os found by subtest $test"
+				do_unmount
+				exit 0
+			fi
+		fi
+	done
+fi
+do_unmount
+
 # all btrfs processing here.  Handle both unmounted and
 # mounted subvolumes.
 if [ "$types" = btrfs ]; then
-	partition="$BTRFSDEV"
 	debug "begin btrfs processing for $UUID"
 	# note that the btrfs volume must not be mounted ro
 	if mount -t btrfs -U "$UUID" "$tmpmnt"  2>/dev/null; then
@@ -137,48 +178,8 @@ if [ "$types" = btrfs ]; then
 	rmdir "$tmpmnt" || true
 	if [ "$found" ]; then
 		exit 0
-	else
-		exit 1
 	fi
 fi
 
-if type grub2-mount >/dev/null 2>&1 && \
-   type grub2-probe >/dev/null 2>&1 && \
-   grub2-mount "$partition" "$tmpmnt" 2>/dev/null; then
-	mounted=1
-	type="$(grub2-probe -d "$partition" -t fs)" || true
-	if [ "$type" ]; then
-		debug "mounted using GRUB $type filesystem driver"
-	else
-		debug "mounted using GRUB, but unknown filesystem?"
-		type=fuseblk
-	fi
-elif dm_device="$(do_dmsetup osprober "$partition")" && \
-     [ "$dm_device" ]; then
-	for type in $types; do
-		if mountinfo=`mount -o ro -t "$type" "$dm_device" "$tmpmnt" 2>&1`; then
-			debug "mounted as $type filesystem"
-			mounted=1
-			break
-		else
-			debug "mounting $dm_device ($partition) as $type failed: $mountinfo"
-		fi
-	done
-fi
-
-if [ "$mounted" ]; then
-	for test in /usr/lib/os-probes/mounted/*; do
-		debug "running subtest $test"
-		if [ -f "$test" ] && [ -x "$test" ]; then
-			if "$test" "$partition" "$tmpmnt" "$type"; then
-				debug "os found by subtest $test"
-				do_unmount
-				exit 0
-			fi
-		fi
-	done
-fi
-do_unmount
-
 # No tests found anything.
 exit 1
openSUSE Build Service is sponsored by