summary refs log tree commit diff
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2010-03-06 15:40:50 -0800
committerUlrich Drepper <drepper@redhat.com>2010-03-06 15:40:50 -0800
commit6e0a06fa40320187544d8daccd87dca728192253 (patch)
tree11c141a6ef0b04e1ddc6c75cbcce53c71a4733d4
parenta092b645f84c2af4a302f00e242be595ed1a2117 (diff)
downloadglibc-6e0a06fa40320187544d8daccd87dca728192253.tar.gz
glibc-6e0a06fa40320187544d8daccd87dca728192253.tar.xz
glibc-6e0a06fa40320187544d8daccd87dca728192253.zip
Handle ext4 and logfs in statvfs functions.
-rw-r--r--ChangeLog5
-rw-r--r--sysdeps/unix/sysv/linux/internal_statvfs.c15
-rw-r--r--sysdeps/unix/sysv/linux/linux_fsinfo.h61
3 files changed, 48 insertions, 33 deletions
diff --git a/ChangeLog b/ChangeLog
index 9bdbb0a161..0b18684168 100644
--- 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.
diff --git a/sysdeps/unix/sysv/linux/internal_statvfs.c b/sysdeps/unix/sysv/linux/internal_statvfs.c
index 28c1cb691f..9a6f4edac1 100644
--- a/sysdeps/unix/sysv/linux/internal_statvfs.c
+++ b/sysdeps/unix/sysv/linux/internal_statvfs.c
@@ -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.  */
diff --git a/sysdeps/unix/sysv/linux/linux_fsinfo.h b/sysdeps/unix/sysv/linux/linux_fsinfo.h
index 8c6591ada3..b10e98b46f 100644
--- a/sysdeps/unix/sysv/linux/linux_fsinfo.h
+++ b/sysdeps/unix/sysv/linux/linux_fsinfo.h
@@ -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
@@ -25,22 +25,22 @@
    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
@@ -82,62 +85,62 @@
 #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