From 6484ba5ef092b62b7d2112c0d976dbd6d1a40fde Mon Sep 17 00:00:00 2001 From: Andreas Jaeger Date: Fri, 1 Oct 2010 10:49:47 -0400 Subject: [PATCH] Handle cgroup and btrfs filesystems --- ChangeLog | 9 +++++++++ sysdeps/unix/sysv/linux/internal_statvfs.c | 6 ++++++ sysdeps/unix/sysv/linux/linux_fsinfo.h | 8 +++++++- sysdeps/unix/sysv/linux/pathconf.c | 6 +++++- 4 files changed, 27 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 4404718..62eb2ff 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2010-09-30 Andreas Jaeger + + * 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 * 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 83ffb99..8288548 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: -- 2.7.4