commit:     c37d0daba2f264c72a945dcebd08e9a42d8649f7
Author:     Robin H. Johnson <robbat2 <AT> gentoo <DOT> org>
AuthorDate: Mon Feb 29 20:34:09 2016 +0000
Commit:     Robin H. Johnson <robbat2 <AT> gentoo <DOT> org>
CommitDate: Mon Feb 29 20:34:16 2016 +0000
URL:        https://gitweb.gentoo.org/proj/genkernel.git/commit/?id=c37d0dab

fix rootfs detection per bug #552052

ZFS and btrfs tools if not explictly configured (either way), default to
detecting the fstype of the rootfs.

The old rootfs detection method was NOT reliable in all cases; so
replace it with a different way. Future improvements should check for
rootfs AND the local existence of the required binaries (and bail out
early if the the rootrfs was detected but the binaries are not present).

Signed-off-by: Robin H. Johnson <robbat2 <AT> gentoo.org>

 gen_cmdline.sh | 4 ++--
 gen_funcs.sh   | 4 +++-
 2 files changed, 5 insertions(+), 3 deletions(-)

diff --git a/gen_cmdline.sh b/gen_cmdline.sh
index 01adfdd..e9e7401 100755
--- a/gen_cmdline.sh
+++ b/gen_cmdline.sh
@@ -100,9 +100,9 @@ longusage() {
   echo "       --no-dmraid             Exclude DMRAID support"
   echo "       --e2fsprogs             Include e2fsprogs"
   echo "       --no-e2fsprogs          Exclude e2fsprogs"
-  echo "       --zfs                   Include ZFS support"
+  echo "       --zfs                   Include ZFS support (enabled by default 
if rootfs is zfs)"
   echo "       --no-zfs                Exclude ZFS support"
-  echo "       --btrfs                 Include Btrfs support"
+  echo "       --btrfs                 Include Btrfs support (enabled by 
default if rootfs is btrfs)"
   echo "       --no-btrfs              Exclude Btrfs support"
   echo "       --multipath             Include Multipath support"
   echo "       --no-multipath  Exclude Multipath support"

diff --git a/gen_funcs.sh b/gen_funcs.sh
index 37942ad..eb807ad 100755
--- a/gen_funcs.sh
+++ b/gen_funcs.sh
@@ -498,7 +498,9 @@ set_config_with_override() {
 rootfs_type_is() {
        local fstype=$1
 
-       if $(df -t ${fstype} / 2>/dev/null 1>/dev/null)
+       # It is possible that the awk will return MULTIPLE lines, depending on 
your
+       # initramfs setup (one of the entries will be 'rootfs').
+       if awk '($2=="/"){print $3}' /proc/mounts | grep -sq --line-regexp 
"$fstype" ;
        then
                echo yes
        else

Reply via email to