full LFS implementation has been one of the highlights of our work here at Suselabs
since 2.3.x/2.4.x. this was too the highlight of our work for our IBM-S/390 port.
Large File Support which is coming out on newer distros is the work of the kernel and
glibc. apart from that full use of the LFS for userpace needs 1.) a filesystem
capable of LFS 2.) applications compiled against the LFS api. something along the
lines of :
programs compiled with "gcc -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE". This forces
all file access calls to use the 64 bit variants. Several types change also, e.g.
off_t becomes off64_t. It's therefore important to always use the correct types and to
not use e.g. int instead of off_t.
Define _LARGEFILE_SOURCE and _LARGEFILE64_SOURCE. With these defines you can use the
LFS functions like open64 directly.
Use the O_LARGEFILE flag with open to operate on large files.
alternatively, a rundown of filesystem with LFS support as follows as contributed by
my colleague Chris Mason.
ext2- Full support for LFS
NFSv2 - Cannot handle LFS due to protocol restrictions (limited to 2G-1); limited LFS
support but expect some bugs
NFSv3 - The protocol is ok, but I'm not sure about the Linux implementation status
ReiserFS 3.5.x (not part of the kernel, separate patch) Does not support LFS
ReiserFS 3.6.x (part of kernel 2.4.1 and newer)
Full support for LFS if the new on disk format is used. This format is incompatible to
the format used by 3.5.x
coda - Does not work with LFS (local cache issues, protocol is ok)
UFS - Full support for LFS (although not complete vs. O_LARGEFILE flag use)
smbfs - Originally limited to 2G-1 (implements older non LFS protocol). Windows NT has
SMB extensions that allow 64 bit filessystems. The latest official Samba release
(2.0.7) does support those but disables them on Linux thereby still limiting files to
2G-1
apps like samba, pam and ftp does not yet support LFS but work is on the way towards
achieving full LFS usability for all of userspace.
Release 7.0 of SuSE Linux supports LFS on all supported platforms. The kernel of SuSE
7.0 is based on Linux 2.2.16.
The LFS support in the SuSE Linux kernel is the same as in the development kernel
2.4.0-test1 for the file systems which are in both kernels, glibc supports all the
features of the kernel. The different filesystems are ReiserFS (so far only in SuSE,
the 2.2 port doesn't support LFS) and NFSv3 (not available in SuSE 7.0). This means
that you need to use ext2 as file system for LFS.
Release 7.1 of SuSE Linux supports LFS on all supported platforms. SuSE 7.1 comes with
kernels based on 2.4.0 and 2.2.18.
The 2.2.18 kernel support LFS with the ext2 file system. The 2.4.0 kernel supports LFS
with the ext2 and NFSv3 filesystems and additionally with the ReiserFS filesystem if
the new ReiserFS format (incompatible to the 2.2 format) is used instead of the
default 2.2 format. SuSE 7.1 comes with glibc 2.2 that supports the full LFS
interface. But the 2.2.18 kernel only does not support the 64-bit filelocking and the
getdents64 calls.
Overall, SuSE 7.1, Admulinux 2.0, Redhat7(?) and other newer distros are the best
sources of LFS.
hth,
----------------------------------------
Louie Perens SuSE- The Linux Experts
Project Maintainer, Enterprise HA-S/390
-----------------------------------------
--
On Sat, 21 Apr 2001 02:11:18 Pablo Manalastas wrote:
>
>On Thu, 19 Apr 2001, Andre John Cruz wrote:
>
>> is there any way to beat the 2GB file size limit on Linux?
>> I wonder if kernel 2.4 has mechanisms for this.
>
>Use linux-2.4.X kernel and glibc-2.2.X. Including <stdio.h>
>and defining __USE_LARGEFILE64 gives you the 64bit functions
>fseeko64(), fgetpos64(), and fsetpos64().
>
>The new distributions (including AdmuLinux 2.0) have these
>new features.
>
>PManalastas
>
>
Join 18 million Eudora users by signing up for a free Eudora Web-Mail account at
http://www.eudoramail.com
_
Philippine Linux Users Group. Web site and archives at http://plug.linux.org.ph
To leave: send "unsubscribe" in the body to [EMAIL PROTECTED]
To subscribe to the Linux Newbies' List: send "subscribe" in the body to
[EMAIL PROTECTED]