From: Lennert B. <bu...@gn...> - 2001-03-04 22:55:03
|
Sorry.. getting used to my new mailer. ----- Forwarded message from Lennert Buytenhek <bu...@gn...> ----- Date: Sun, 4 Mar 2001 17:52:28 -0500 From: Lennert Buytenhek <bu...@gn...> To: Jeff Dike <jd...@ka...> Subject: Re: [uml-devel] allow >2GB files to be used for ubd's User-Agent: Mutt/1.2.5i In-Reply-To: <200...@cc...>; from jd...@ka... on Sun, Mar 04, 2001 at 06:43:24PM -0500 On Sun, Mar 04, 2001 at 06:43:24PM -0500, Jeff Dike wrote: > What's the -D_FILE_OFFSET_BITS=64 for? Does that turn on LFS in libc? Yup. /me quoteth from the GNU libc manual: <quote> - Macro: _FILE_OFFSET_BITS This macro determines which file system interface shall be used, one replacing the other. While `_LARGEFILE64_SOURCE' makes the 64 bit interface available as an additional interface `_FILE_OFFSET_BITS' allows the 64 bit interface to replace the old interface. If `_FILE_OFFSET_BITS' is undefined, or if it is defined to the value `32', nothing changes. The 32 bit interface is used and types like `off_t' have a size of 32 bits on 32 bit systems. value `32', nothing changes. The 32 bit interface is used and types like `off_t' have a size of 32 bits on 32 bit systems. If the macro is defined to the value `64', the large file interface replaces the old interface. I.e., the functions are not made available under different names as `_LARGEFILE64_SOURCE' does. Instead the old function names now reference the new functions, e.g., a call to `fseeko' now indeed calls `fseeko64'. This macro should only be selected if the system provides mechanisms for handling large files. On 64 bit systems this macro has no effect since the `*64' functions are identical to the normal functions. This macro was introduced as part of the Large File Support extension (LFS). </quote> > Does this work as before on non-LFS systems? The text above doesn't seem to guarantee this. At least the binary kernel I use (compiled on a 2.4 host with this ubd lfs patch included) runs fine on a machine with glibc 2.1.3 (does understand LFS) and a 2.2.16 kernel (not LFS-enabled). I see the open system call being made with the O_LARGEFILE LFS flag, but this flag is apparently ignored by the kernel. So all would seem well in this case. This was about the oldest system I could find. I would expect really ancient glibc's to ignore the _FILE_OFFSET_BITS define, so I don't expect problems there. Anyone with a libc5 system willing to do some tests for me? cheers, Lennert ----- End forwarded message ----- |