From 6e0a06fa40320187544d8daccd87dca728192253 Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Sat, 6 Mar 2010 15:40:50 -0800 Subject: [PATCH] Handle ext4 and logfs in statvfs functions. --- ChangeLog | 5 +++ sysdeps/unix/sysv/linux/internal_statvfs.c | 15 ++++++-- sysdeps/unix/sysv/linux/linux_fsinfo.h | 61 ++++++++++++++++-------------- 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 + + * 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 * 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 , 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 -- 2.11.4.GIT