Handle ext4 and logfs in statvfs functions.
authorUlrich Drepper <drepper@redhat.com>
Sat, 6 Mar 2010 23:40:50 +0000 (15:40 -0800)
committerUlrich Drepper <drepper@redhat.com>
Sat, 6 Mar 2010 23:40:50 +0000 (15:40 -0800)
ChangeLog
sysdeps/unix/sysv/linux/internal_statvfs.c
sysdeps/unix/sysv/linux/linux_fsinfo.h

index 9bdbb0a..0b18684 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2010-03-06  Ulrich Drepper  <drepper@redhat.com>
+
+       * sysdeps/unix/sysv/linux/internal_statvfs.c: Handle ext4 and logfs.
+       * sysdeps/unix/sysv/linux/linux_fsinfo.h: Add entry for logfs.
+
 2010-02-18  Yann Droneaud  <yann@droneaud.fr>
 
        * resolv/res_send.c: Fixed DEBUG statements.
index 28c1cb6..9a6f4ed 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 1998-2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+/* Copyright (C) 1998-2006, 2010 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
 
@@ -45,13 +45,15 @@ __statvfs_getflags (const char *name, int fstype, struct stat64 *st)
 
   const char *fsname = NULL;
   const char *fsname2 = NULL;
+  const char *fsname3 = NULL;
 
   /* Map the filesystem type we got from the statfs call to a string.  */
   switch (fstype)
     {
     case EXT2_SUPER_MAGIC:
-      fsname = "ext3";
-      fsname2 = "ext2";
+      fsname = "ext4";
+      fsname2 = "ext3";
+      fsname3 = "ext2";
       break;
     case DEVPTS_SUPER_MAGIC:
       fsname= "devpts";
@@ -98,6 +100,9 @@ __statvfs_getflags (const char *name, int fstype, struct stat64 *st)
     case NTFS_SUPER_MAGIC:
       fsname = "ntfs";
       break;
+    case LOGFS_MAGIC_U32:
+      fsname = "logfs";
+      break;
     }
 
   FILE *mtab = __setmntent ("/proc/mounts", "r");
@@ -126,7 +131,9 @@ __statvfs_getflags (const char *name, int fstype, struct stat64 *st)
          else if (fsname != NULL
                   && strcmp (fsname, mntbuf.mnt_type) != 0
                   && (fsname2 == NULL
-                      || strcmp (fsname2, mntbuf.mnt_type) != 0))
+                      || strcmp (fsname2, mntbuf.mnt_type) != 0)
+                  && (fsname3 == NULL
+                      || strcmp (fsname3, mntbuf.mnt_type) != 0))
            continue;
 
          /* Find out about the device the current entry is for.  */
index 8c6591a..b10e98b 100644 (file)
@@ -1,5 +1,5 @@
 /* Constants from kernel header for various FSes.
-   Copyright (C) 1998,1999,2000,2001,2002,2003,2005 Free Software Foundation, Inc.
+   Copyright (C) 1998-2003,2005,2010 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
    filesystem types will become available we have to add the
    appropriate definitions here.*/
 
-/* Constants that identify the `adfs' filesystem.  */
+/* Constant that identifies the `adfs' filesystem.  */
 #define ADFS_SUPER_MAGIC       0xadf5
 
-/* Constants that identify the `affs' filesystem.  */
+/* Constant that identifies the `affs' filesystem.  */
 #define AFFS_SUPER_MAGIC       0xadff
 
-/* Constants that identify the `autofs' filesystem.  */
+/* Constant that identifies the `autofs' filesystem.  */
 #define AUTOFS_SUPER_MAGIC     0x187
 
-/* Constants that identify the `bfs' filesystem.  */
+/* Constant that identifies the `bfs' filesystem.  */
 #define BFS_MAGIC              0x1BADFACE
 
-/* Constants that identify the `coda' filesystem.  */
+/* Constant that identifies the `coda' filesystem.  */
 #define CODA_SUPER_MAGIC       0x73757245
 
-/* Constants that identify the `coherent' filesystem.  */
+/* Constant that identifies the `coherent' filesystem.  */
 #define COH_SUPER_MAGIC                0x012ff7b7
 
 /* Constant that identifies the `ramfs' filesystem.  */
@@ -52,7 +52,7 @@
 /* Constant that identifies the `devpts' filesystem.  */
 #define DEVPTS_SUPER_MAGIC     0x1cd1
 
-/* Constant that identifies the `efs' filesystem.  */
+/* Constants that identifies the `efs' filesystem.  */
 #define EFS_SUPER_MAGIC                0x414A53
 #define EFS_MAGIC              0x072959
 
@@ -74,6 +74,9 @@
 /* Constant that identifies the `jfs' filesystem.  */
 #define JFS_SUPER_MAGIC                0x3153464a
 
+/* Constant that identifies the `logfs´ filesystem.  */
+#define LOGFS_MAGIC_U32                0xc97e8168u
+
 /* Constants that identify the `minix2' filesystem.  */
 #define MINIX2_SUPER_MAGIC     0x2468
 #define MINIX2_SUPER_MAGIC2    0x2478
 #define MINIX_SUPER_MAGIC      0x137f
 #define MINIX_SUPER_MAGIC2     0x138F
 
-/* Constants that identify the `msdos' filesystem.  */
+/* Constant that identifies the `msdos' filesystem.  */
 #define MSDOS_SUPER_MAGIC      0x4d44
 
-/* Constants that identify the `ncp' filesystem.  */
+/* Constant that identifies the `ncp' filesystem.  */
 #define NCP_SUPER_MAGIC                0x564c
 
-/* Constants that identify the `nfs' filesystem.  */
+/* Constant that identifies the `nfs' filesystem.  */
 #define NFS_SUPER_MAGIC                0x6969
 
-/* Constants that identify the `ntfs' filesystem.  */
+/* Constant that identifies the `ntfs' filesystem.  */
 #define NTFS_SUPER_MAGIC       0x5346544e
 
-/* Constants that identify the `proc' filesystem.  */
+/* Constant that identifies the `proc' filesystem.  */
 #define PROC_SUPER_MAGIC       0x9fa0
 
 /* Constant that identifies the `usbdevfs' filesystem.  */
 #define USBDEVFS_SUPER_MAGIC   0x9fa2
 
-/* Constants that identify the `qnx4' filesystem.  */
+/* Constant that identifies the `qnx4' filesystem.  */
 #define QNX4_SUPER_MAGIC       0x002f
 
-/* Constants that identify the `reiser' filesystem.  */
+/* Constant that identifies the `reiser' filesystem.  */
 #define REISERFS_SUPER_MAGIC   0x52654973
 
 /* Constant that identifies the `romfs' filesystem.  */
 #define ROMFS_SUPER_MAGIC      0x7275
 
-/* Constants that identify the `smb' filesystem.  */
+/* Constant that identifies the `shm' filesystem.  */
+#define SHMFS_SUPER_MAGIC      0x01021994
+
+/* Constant that identifies the `smb' filesystem.  */
 #define SMB_SUPER_MAGIC                0x517b
 
+/* Constant that identifies the `sysfs´ filesystem.  */
+#define SYSFS_MAGIC            0x62656572
+
 /* Constants that identify the `sysV' filesystem.  */
 #define SYSV2_SUPER_MAGIC      0x012ff7b6
 #define SYSV4_SUPER_MAGIC      0x012ff7b5
 
-/* Constants that identify the `udf' filesystem.  */
+/* Constant that identifies the `udf' filesystem.  */
 #define UDF_SUPER_MAGIC                0x15013346
 
-/* Constants that identify the `ufs' filesystem.  */
+/* Constant that identify the `ufs' filesystem.  */
 #define UFS_MAGIC              0x00011954
 #define UFS_CIGAM              0x54190100 /* byteswapped MAGIC */
 
-/* Constants that identify the `xenix' filesystem.  */
-#define XENIX_SUPER_MAGIC      0x012ff7b4
+/* Constant that identifies the `vxfs' filesystem.  */
+#define VXFS_SUPER_MAGIC       0xa501fcf5
 
-/* Constant that identifies the `shm' filesystem.  */
-#define SHMFS_SUPER_MAGIC      0x01021994
+/* Constant that identifies the `xenix' filesystem.  */
+#define XENIX_SUPER_MAGIC      0x012ff7b4
 
-/* Constants that identify the `xfs' filesystem.  */
+/* Constant that identifies the `xfs' filesystem.  */
 #define XFS_SUPER_MAGIC                0x58465342
 
-/* Constants that identify the `vxfs' filesystem.  */
-#define VXFS_SUPER_MAGIC       0xa501fcf5
-
-/* Constants that identify the `sysfs´ filesystem.  */
-#define SYSFS_MAGIC            0x62656572
-
 /* Maximum link counts.  */
 #define COH_LINK_MAX           10000
 #define EXT2_LINK_MAX          32000