Index: os-prober-1.76/os-probes/common/50mounted-tests =================================================================== --- os-prober-1.76.orig/os-probes/common/50mounted-tests +++ os-prober-1.76/os-probes/common/50mounted-tests @@ -65,10 +65,40 @@ 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 +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 @@ -129,37 +159,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 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