summarylogtreecommitdiffstats
path: root/os-prober-btrfs-absolute-subvol.patch
diff options
context:
space:
mode:
Diffstat (limited to 'os-prober-btrfs-absolute-subvol.patch')
-rw-r--r--os-prober-btrfs-absolute-subvol.patch42
1 files changed, 42 insertions, 0 deletions
diff --git a/os-prober-btrfs-absolute-subvol.patch b/os-prober-btrfs-absolute-subvol.patch
new file mode 100644
index 00000000000..db245d022b3
--- /dev/null
+++ b/os-prober-btrfs-absolute-subvol.patch
@@ -0,0 +1,42 @@
+Index: os-prober/os-probes/common/50mounted-tests
+===================================================================
+--- os-prober.orig/os-probes/common/50mounted-tests
++++ os-prober/os-probes/common/50mounted-tests
+@@ -72,9 +72,7 @@ mounted=
+
+ if [ "$types" = btrfs ]; then
+ partition="$BTRFSDEV"
+-fi
+-
+-if type grub2-mount >/dev/null 2>&1 && \
++elif type grub2-mount >/dev/null 2>&1 && \
+ type grub2-probe >/dev/null 2>&1 && \
+ grub2-mount "$partition" "$tmpmnt" 2>/dev/null; then
+ mounted=1
+@@ -110,7 +108,11 @@ if [ "$mounted" ]; then
+ fi
+ done
+ fi
+-do_unmount
++
++if [ "$types" != "btrfs" ]; then
++ do_unmount
++ exit 1
++fi
+
+ # all btrfs processing here. Handle both unmounted and
+ # mounted subvolumes.
+@@ -125,9 +127,9 @@ if [ "$types" = btrfs ]; then
+ exit 1
+ fi
+ # besides regular subvols, get ro and snapshot so thet can be excluded
+- subvols=$(btrfs subvolume list "$tmpmnt" | cut -d ' ' -f 9)
+- rosubvols=$(btrfs subvolume list -r "$tmpmnt" | cut -d ' ' -f 9)
+- sssubvols=$(btrfs subvolume list -s "$tmpmnt" | cut -d ' ' -f 14)
++ 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\>/!!)
+ if ! umount "$tmpmnt"; then
+ warn "failed to umount btrfs volume on $tmpmnt"
+ rmdir "$tmpmnt" || true
+