64-Bit File Access (LFS)

32-bit operating systems have typically used a signed long integer as the offset to files. This leads to a maximum file size of 231 - 1 (2GB - 1). The amount of work to convert existing applications to use a different size type for file offsets was considered too great, and thus the Large File Summit was formed, a group of OS and filesystem vendors who wanted to produce a specification that could allow access to large files. The specification would then be included as part of the Single UNIX Specification (UNIX 95 and onwards). The specification provided the following concepts:

  • The off_t data type would support one of two or more sizes as the OS and filesystem evolved to a full 64-bit solution.
  • An offset maximum which, as part of the interface, would give the maximum offset that the OS/filesystem would allow an application to use. The offset maximum is determined through a call to open() by specifying (or not) whether the application wishes to access large files.
  • When applications attempt to read parts of a file beyond their understanding of the offset maximum, the OS would return a new error code, namely EOVERFLOW.

In order to provide both an explicit means of accessing large files as well as a hidden and easily upgradable approach, there were two programmatic models. The first allowed the size of off_t to be determined during the compilation and linking process. This effectively sets the size of off_t and determines whether the standard system calls ...

Get UNIX Filesystems: Evolution, Design, and Implementation now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.