about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog9
-rw-r--r--sysdeps/unix/sysv/linux/internal_statvfs.c6
-rw-r--r--sysdeps/unix/sysv/linux/linux_fsinfo.h8
-rw-r--r--sysdeps/unix/sysv/linux/pathconf.c6
4 files changed, 27 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index 4404718742..62eb2ff130 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2010-09-30  Andreas Jaeger  <aj@suse.de>
+
+	* sysdeps/unix/sysv/linux_fsinfo.h (BTRFS_SUPER_MAGIC): Define.
+	(CGROUP_SUPER_MAGIC): Define.
+	* sysdeps/unix/sysv/linux/internal_statvfs.c (__statvfs_getflags):
+	Handle btrfs and cgroup file systems.
+	* sysdeps/unix/sysv/linux/pathconf.c (__statfs_filesize_max):
+	Likewise.
+
 2010-09-27  Luis Machado  <luisgpm@br.ibm.com>
 
 	* sysdeps/powerpc/powerpc32/rtld-memset.c: New file.
diff --git a/sysdeps/unix/sysv/linux/internal_statvfs.c b/sysdeps/unix/sysv/linux/internal_statvfs.c
index 83ffb99c05..828854806c 100644
--- a/sysdeps/unix/sysv/linux/internal_statvfs.c
+++ b/sysdeps/unix/sysv/linux/internal_statvfs.c
@@ -109,6 +109,12 @@ __statvfs_getflags (const char *name, int fstype, struct stat64 *st)
     case LOGFS_MAGIC_U32:
       fsname = "logfs";
       break;
+    case BTRFS_SUPER_MAGIC:
+      fsname = "btrfs";
+      break;
+    case CGROUP_SUPER_MAGIC:
+      fsname = "cgroup";
+      break;
     }
 
   FILE *mtab = __setmntent ("/proc/mounts", "r");
diff --git a/sysdeps/unix/sysv/linux/linux_fsinfo.h b/sysdeps/unix/sysv/linux/linux_fsinfo.h
index b10e98b46f..8efbdea42d 100644
--- a/sysdeps/unix/sysv/linux/linux_fsinfo.h
+++ b/sysdeps/unix/sysv/linux/linux_fsinfo.h
@@ -23,7 +23,7 @@
 /* These definitions come from the kernel headers.  But we cannot
    include the headers here because of type clashes.  If new
    filesystem types will become available we have to add the
-   appropriate definitions here.*/
+   appropriate definitions here.  */
 
 /* Constant that identifies the `adfs' filesystem.  */
 #define ADFS_SUPER_MAGIC	0xadf5
@@ -37,6 +37,12 @@
 /* Constant that identifies the `bfs' filesystem.  */
 #define BFS_MAGIC		0x1BADFACE
 
+/* Constant that identifies the `btrfs' filesystem.  */
+#define BTRFS_SUPER_MAGIC	0x1BADFACE
+
+/* Constant that identifies the `cgroup' filesystem.  */
+#define CGROUP_SUPER_MAGIC	0x1BADFACE
+
 /* Constant that identifies the `coda' filesystem.  */
 #define CODA_SUPER_MAGIC	0x73757245
 
diff --git a/sysdeps/unix/sysv/linux/pathconf.c b/sysdeps/unix/sysv/linux/pathconf.c
index db03529fe8..ae597fb5ba 100644
--- a/sysdeps/unix/sysv/linux/pathconf.c
+++ b/sysdeps/unix/sysv/linux/pathconf.c
@@ -1,5 +1,5 @@
 /* Get file-specific information about a file.  Linux version.
-   Copyright (C) 1991,1995,1996,1998-2003,2008 Free Software Foundation, Inc.
+   Copyright (C) 1991,1995,1996,1998-2003,2008,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
@@ -126,6 +126,9 @@ __statfs_filesize_max (int result, const struct statfs *fsbuf)
 
   switch (fsbuf->f_type)
     {
+    case BTRFS_SUPER_MAGIC:
+      return 255;
+
     case EXT2_SUPER_MAGIC:
     case UFS_MAGIC:
     case UFS_CIGAM:
@@ -136,6 +139,7 @@ __statfs_filesize_max (int result, const struct statfs *fsbuf)
     case UDF_SUPER_MAGIC:
     case JFS_SUPER_MAGIC:
     case VXFS_SUPER_MAGIC:
+    case CGROUP_SUPER_MAGIC:
       return 64;
 
     case MSDOS_SUPER_MAGIC: