LSEEK and large files in Scyld
Peter Lindgren
Peter.Lindgren at experian.com
Wed Oct 17 07:40:33 PDT 2001
I'm using the LinuxCentral version on one cluster, and just installed the Scyld "Basic Edition" on a 3-node test cluster (although I admit I haven't tried this test there yet...)
I'm trying to lseek past the 2Gig point in a "large" (greater than 2Gig) file, and lseek returns a large negative number.
I have _FILE_OFFSET_BITS=64 defined. I use "off_t" to define both the value I pass to lseek and what it returns. sizeof(off_t) returns 8.
If you lseek within the first 2Gig it works fine.
According to the online GNU glibc docs at
http://www.gnu.org/manual/glibc-2.2.3/html_node/libc_230.html
"When the source file is compiled with _FILE_OFFSET_BITS == 64 the lseek function is in fact lseek64 and the type off_t has 64 bits which makes it possible to handle files up to @math{2^63} bytes in length. "
I have noted related items like:
1. define "_LARGEFILE_SOURCE" (doesn't help)
1. define "_LARGEFILE64_SOURCE" (then I use lseek64 and off64_t and it still doesn't work)
2, add an open flag "O_LARGEFILE" (which is supposed to be defined in <fcntl.h>, but isn't)
See definitions of some of these items at:
http://www.gnu.org/manual/glibc-2.2.3/html_node/libc_13.html
If anyone knows what else I have to do to make this work, please let me know...
Peter Lindgren
Phone: 847 944 4515
Fax: 847 517 5889
E-mail: peter.lindgren at experian.com
More information about the Beowulf
mailing list