[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: bug#9140: Coreutils Bug on OSX 10.7 (Lion)
From: |
Bruno Haible |
Subject: |
Re: bug#9140: Coreutils Bug on OSX 10.7 (Lion) |
Date: |
Sun, 24 Jul 2011 23:59:42 +0200 |
User-agent: |
KMail/1.13.6 (Linux/2.6.37.6-0.5-desktop; KDE/4.6.0; x86_64; ; ) |
Paul Eggert wrote:
> * m4/fsusage.m4 (gl_FILE_SYSTEM_USAGE): Reject statvfs
> implementations that use only 32 bits to count blocks.
Dealing with the statvfs() / statfs() calls is one thing.
But 'df' also relies on the 'mountlist' module, which on MacOS X
uses the function getmntinfo(). This function too exists in
two variants
getmntinfo
getmntinfo$INODE64 equivalent to getmntinfo64
and the first one returns 'struct statfs' entities with 32-bit
f_blocks. Likewise there is
getfsstat
getfsstat$INODE64 equivalent to getfsstat64
Here's an excerpt from the manual page:
NAME
getmntinfo -- get information about mounted file systems
...
int
getmntinfo(struct statfs **mntbufp, int flags);
int
getmntinfo64(struct statfs64 **mntbufp, int flags);
...
The getmntinfo() function passes its flags argument transparently to
getfsstat(2), while the getmntinfo64() function passes
its flags argument transparently to getfsstat64().
See [1][2]. So, if the 'mountlist' modules is used outside of coreutils, it
also needs the 'largefile' module, so as to map getmntinfo to
getmntinfo$INODE64. Here's a proposed patch.
[1]
http://developer.apple.com/library/mac/#documentation/Darwin/Reference/ManPages/man3/getmntinfo.3.html
[2]
http://developer.apple.com/library/mac/#documentation/Darwin/Reference/ManPages/man2/getfsstat.2.html
2011-07-24 Bruno Haible <address@hidden>
mountlist: Enable large volume support on MacOS X >= 10.5.
* m4/ls-mntd-fs.m4 (gl_LIST_MOUNTED_FILE_SYSTEMS): Require
AC_SYS_LARGEFILE.
* modules/mountlist (Depends-on): Add largefile.
--- m4/ls-mntd-fs.m4.orig Sun Jul 24 23:44:01 2011
+++ m4/ls-mntd-fs.m4 Sun Jul 24 22:41:08 2011
@@ -1,4 +1,4 @@
-# serial 29
+# serial 30
# How to list mounted file systems.
# Copyright (C) 1998-2004, 2006, 2009-2011 Free Software Foundation, Inc.
@@ -26,6 +26,12 @@
# gl_LIST_MOUNTED_FILE_SYSTEMS([ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
AC_DEFUN([gl_LIST_MOUNTED_FILE_SYSTEMS],
[
+dnl Enable large-file support. This has the effect of changing the size
+dnl of field f_blocks in 'struct statfs' from 32 bit to 64 bit on
+dnl MacOS X >= 10.5 (32-bit mode), allowing file systems >= 4 TiB to be
+dnl found.
+AC_REQUIRE([AC_SYS_LARGEFILE])
+
AC_CHECK_FUNCS([listmntent getmntinfo])
AC_CHECK_HEADERS_ONCE([sys/param.h sys/statvfs.h])
--- modules/mountlist.orig Sun Jul 24 23:44:01 2011
+++ modules/mountlist Sun Jul 24 22:30:10 2011
@@ -9,6 +9,7 @@
m4/mountlist.m4
Depends-on:
+largefile
stdbool
stdint
strstr-simple
--
In memoriam Ezechiele Ramin <http://en.wikipedia.org/wiki/Ezechiele_Ramin>
- Re: bug#9140: Coreutils Bug on OSX 10.7 (Lion), (continued)
- Re: bug#9140: Coreutils Bug on OSX 10.7 (Lion), Bruno Haible, 2011/07/23
- fsusage: add large volume support on glibc/Hurd, HP-UX 11, Solaris, MacOS X, Bruno Haible, 2011/07/23
- fsusage: revert unintended change on AIX, Cygwin, Interix, Bruno Haible, 2011/07/23
- Re: bug#9140: Coreutils Bug on OSX 10.7 (Lion), Jim Meyering, 2011/07/23
- fsusage: add large volume support on AIX, Bruno Haible, 2011/07/23
Re: bug#9140: Coreutils Bug on OSX 10.7 (Lion),
Bruno Haible <=