]> err.no Git - util-linux/commitdiff
blkis: fix detection of ext4dev as ext4
authorEric Sandeen <sandeen@redhat.com>
Mon, 8 Dec 2008 14:28:49 +0000 (15:28 +0100)
committerKarel Zak <kzak@redhat.com>
Wed, 11 Feb 2009 22:21:50 +0000 (23:21 +0100)
If only ext4 is available (as a module or in /proc/filesystems)
blkid wasn't properly testing for it, because the time checks
were backwards and always failed.  This caused old ext4dev
filesystems to fail to mount as ext4.  With this patch it works
fine.

Also, don't try to check for modules on a non-Linux system.

[kzak@redhat.com: port from e2fsprogs to util-linux-ng tree]

Signed-off-by: Eric Sandeen <sandeen@redhat.com>
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
Signed-off-by: Karel Zak <kzak@redhat.com>
libs/blkid/src/probe.c
libs/blkid/src/probers/ext.c

index 806938d7666ac8cb8db34e3ad39b04cd29a65507..e3c147dfce957c8820ddd6e0f4765fe78fd67dac 100644 (file)
@@ -20,7 +20,6 @@
 #ifdef HAVE_SYS_MKDEV_H
 #include <sys/mkdev.h>
 #endif
-#include <sys/utsname.h>
 #ifdef HAVE_ERRNO_H
 #include <errno.h>
 #endif
index 5adb9cb2b65686b16ee91fed0b8923ecb87e75f1..26cc679e560e75f555b41121197d724705714010 100644 (file)
@@ -13,7 +13,9 @@
 #include <errno.h>
 #include <ctype.h>
 #include <stdint.h>
+#ifdef __linux__
 #include <sys/utsname.h>
+#endif
 #include <time.h>
 
 #include "blkidP.h"
@@ -341,6 +343,7 @@ static int fs_proc_check(const char *fs_name)
  */
 static int check_for_modules(const char *fs_name)
 {
+#ifdef __linux__
        struct utsname  uts;
        FILE            *f;
        char            buf[1024], *cp, *t;
@@ -372,6 +375,7 @@ static int check_for_modules(const char *fs_name)
                        return 1;
        }
        fclose(f);
+#endif /* __linux__ */
        return 0;
 }
 
@@ -381,7 +385,7 @@ static int system_supports_ext4(void)
        static int      ret = -1;
        time_t          now = time(0);
 
-       if (ret != -1 || (last_check - now) < 5)
+       if (ret != -1 || (now - last_check) < 5)
                return ret;
        last_check = now;
        ret = (fs_proc_check("ext4") || check_for_modules("ext4"));
@@ -394,7 +398,7 @@ static int system_supports_ext4dev(void)
        static int      ret = -1;
        time_t          now = time(0);
 
-       if (ret != -1 || (last_check - now) < 5)
+       if (ret != -1 || (now - last_check) < 5)
                return ret;
        last_check = now;
        ret = (fs_proc_check("ext4dev") || check_for_modules("ext4dev"));