bug-gnulib
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: fsusage: dynamic statvfs() check incorrect for Debian 7.0


From: Eric Wong
Subject: Re: fsusage: dynamic statvfs() check incorrect for Debian 7.0
Date: Wed, 30 Jan 2013 08:49:28 +0000
User-agent: Mutt/1.5.21 (2010-09-15)

Paul Eggert <address@hidden> wrote:
> On 01/29/2013 06:44 PM, Eric Wong wrote:
> > eglibc on Debian is only configured to only use features available in
> > Linux 2.6.26 at build time.  This means statvfs() uses stat() internally
> > regardless of the run-time kernel version[1].
> 
> That sounds like a bug in eglibc.  Perhaps you can fix this problem on the
> eglibc side.  That is, eglibc can use only 2.6.26 features, but make an
> exception for this feature, since it's obviously needed.

Actually, reading the eglibc and kernel source more closely, my initial
analysis seems wrong, and I'm even more at a loss as to why stat()
gets called when I call statvfs().

The stat() I see after statfs() is /not/ happening from a check of
where the 2.6.36+ kernel sets ST_VALID:

At first, I thought the following code was entering __statvfs_getflags()
in sysdeps/unix/sysv/linux/internal_statvfs.c:

#ifndef __ASSUME_STATFS_F_FLAGS
  if ((fsbuf->f_flags & ST_VALID) == 0)
    /* Determining the flags is tricky.  We have to read /proc/mounts or
       the /etc/mtab file and search for the entry which matches the given
       file.  The way we can test for matching filesystem is using the
       device number.  */
    buf->f_flag = __statvfs_getflags (name, fsbuf->f_type, st);
  else
#endif
    buf->f_flag = fsbuf->f_flags ^ ST_VALID;
-----------------------------------------------------------------
But now I see it's not, since __statvfs_getflags() would also
open /proc/mounts (which I don't see happening).

Anyways I've filed a bug report with Debian:
http://bugs.debian.org/699321

Thanks for looking at this, hopefully somebody from Debian can help.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]