Here's a patch to handle btrfs and cgroup on Linux,
Andreas
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.
diff --git a/sysdeps/unix/sysv/linux/internal_statvfs.c
b/sysdeps/unix/sysv/linux/internal_statvfs.c
index 0169ae3..aefaf2a 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 b10e98b..8efbdea 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 db03529..ae597fb 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:
--
Andreas Jaeger, Program Manager openSUSE, aj@{novell.com,opensuse.org}
Twitter: jaegerandi | Identica: jaegerandi
SUSE LINUX Products GmbH, GF: Markus Rex, HRB 16746 (AG Nürnberg)
Maxfeldstr. 5, 90409 Nürnberg, Germany
GPG fingerprint = 93A3 365E CE47 B889 DF7F FED1 389A 563C C272 A126
--
Andreas Jaeger, Program Manager openSUSE, aj@{novell.com,opensuse.org}
Twitter: jaegerandi | Identica: jaegerandi
SUSE LINUX Products GmbH, GF: Markus Rex, HRB 16746 (AG Nürnberg)
Maxfeldstr. 5, 90409 Nürnberg, Germany
GPG fingerprint = 93A3 365E CE47 B889 DF7F FED1 389A 563C C272 A126