Sorry I, neglected to add a comment that Mei reviewed the change and Sun approved.
I'll update the comment. Doug > -----Original Message----- > From: s...@open64.net [mailto:s...@open64.net] > Sent: Wednesday, December 15, 2010 4:01 PM > To: open64-devel@lists.sourceforge.net > Subject: [Open64-devel] r3436 - trunk/osprey/libhugetlbfs > > Author: dgilmore > Date: 2010-12-15 19:00:30 -0500 (Wed, 15 Dec 2010) > New Revision: 3436 > > Modified: > trunk/osprey/libhugetlbfs/hugeutils.c > Log: > A change ported from: > git://libhugetlbfs.git.sourceforge.net/gitroot/libhugetlbfs/libhugetlbf > s > > The licensing of this library is still LGPL 2.1 or later. > > Information from the libhugetlbfs git log message concerning this > patch: > > > find_mounts(): ignore non-hugetlbfs filesystems > > libhugetlbfs attempts to restrict its statfs calls to only > hugetlbfs > filesystems. Unfortunately, the sscanf pattern isn't quite > correct, > and libhugetlbfs ends up calling statfs on all mounted filesystems. > This can be quite costly when many network filesystems are mounted. > > Correct the sscanf pattern. > > > Modified: trunk/osprey/libhugetlbfs/hugeutils.c > =================================================================== > --- trunk/osprey/libhugetlbfs/hugeutils.c 2010-12-15 19:37:52 UTC (rev > 3435) > +++ trunk/osprey/libhugetlbfs/hugeutils.c 2010-12-16 00:00:30 UTC (rev > 3436) > @@ -225,7 +225,7 @@ > int fd; > char line[LINE_MAXLEN + 1]; > char *eol; > - int bytes, err; > + int bytes, err, dummy; > off_t offset; > > /* Have we already located a mount? */ > @@ -258,9 +258,16 @@ > offset = bytes - (eol + 1 - line); > lseek(fd, -offset, SEEK_CUR); > > - err = sscanf(line, "%*s %" stringify(PATH_MAX) "s hugetlbfs > ", > - htlb_mount); > - if ((err == 1) && (hugetlbfs_test_path(htlb_mount) == 1)) { > + /* > + * Match only hugetlbfs filesystems. > + * Subtle: sscanf returns the number of input items matched > + * and assigned. To force sscanf to match the literal > + * "hugetlbfs" string we include a 'dummy' input item > + * following that string. > + */ > + err = sscanf(line, "%*s %" stringify(PATH_MAX) "s hugetlbfs > " > + "%*s %d", htlb_mount, &dummy); > + if ((err == 2) && (hugetlbfs_test_path(htlb_mount) == 1)) { > close(fd); > return htlb_mount; > } > > > ----------------------------------------------------------------------- > ------- > Lotusphere 2011 > Register now for Lotusphere 2011 and learn how > to connect the dots, take your collaborative environment > to the next level, and enter the era of Social Business. > http://p.sf.net/sfu/lotusphere-d2d > _______________________________________________ > Open64-devel mailing list > Open64-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/open64-devel ------------------------------------------------------------------------------ Lotusphere 2011 Register now for Lotusphere 2011 and learn how to connect the dots, take your collaborative environment to the next level, and enter the era of Social Business. http://p.sf.net/sfu/lotusphere-d2d _______________________________________________ Open64-devel mailing list Open64-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/open64-devel