summarylogtreecommitdiffstats
path: root/os-prober-btrfs-snapshot-detection.patch
blob: e68637e35252e9a5335b5a70a33c3868fdc14af7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
Index: os-prober/os-probes/common/50mounted-tests
===================================================================
--- os-prober.orig/os-probes/common/50mounted-tests
+++ os-prober/os-probes/common/50mounted-tests
@@ -115,6 +115,7 @@ if [ "$types" = btrfs ]; then
         subvols=$(btrfs subvolume list -a "$tmpmnt" | cut -d ' ' -f 9 | sed -e s!^\<FS_TREE\>/!!)
         rosubvols=$(btrfs subvolume list -r -a "$tmpmnt" | cut -d ' ' -f 9 | sed -e s!^\<FS_TREE\>/!!)
         sssubvols=$(btrfs subvolume list -s -a "$tmpmnt" | cut -d ' ' -f 14 | sed -e s!^\<FS_TREE\>/!!)
+        defaultvol=$(btrfs subvolume get-default "$tmpmnt" | cut -d ' ' -f 9)
         if ! umount "$tmpmnt"; then
             warn "failed to umount btrfs volume on $tmpmnt"
             rmdir "$tmpmnt" || true
@@ -127,11 +128,13 @@ if [ "$types" = btrfs ]; then
 	found=
         for subvol in $subvols; do
 		debug "begin btrfs processing for $UUID subvol=$subvol"
-		if echo "$rosubvols" | grep -q -x "$subvol"; then
-			continue
-		fi
-		if echo "$sssubvols" | grep -q -x "$subvol"; then
-			continue
+                if [ "$subvol" != "$defaultvol" ]; then
+			if echo "$rosubvols" | grep -q -x "$subvol"; then
+				continue
+			fi
+			if echo "$sssubvols" | grep -q -x "$subvol"; then
+				continue
+			fi
 		fi
 		mounted=
 		mpoint="$(grep btrfs /proc/self/mountinfo | grep "$partition " | grep "/$subvol " | cut -d ' ' -f 5)"