Large-file support: Difference between revisions

Content deleted Content added
flip reference to common inline style
improved refs
Line 1:
{{Use dmy dates|date=January 2020|cs1-dates=y}}
'''Large-file support''' ('''LFS''') is the term frequently applied to the ability to create files larger than either 2 or 4 [[Gibibyte|GiB]] on [[32-bit]] [[filesystem|filesystems]].
 
Line 6 ⟶ 7:
While the limit was quite acceptable at a time when [[hard disk]]s were smaller, the general increase in storage capacity combined with increased server and desktop file usage, especially for [[database]] and [[multimedia]] files, led to intense pressure for OS vendors to overcome the limitation.
 
In 1996, multiple vendors responded by forming an industry initiative known as the '''Large File Summit''' to support large files on POSIX (at the time Windows NT already supported large files on NTFS), an obvious [[backronym]] of "LFS". The summit was tasked to define a standardized way to switch to [[64-bit]] numbers to represent file sizes.<ref>{{cite journalname="Solaris_1996"/>
|author = Solaris OS group
|date = March 1996
|url = http://www.sun.com/software/whitepapers/wp-largefiles/largefiles.pdf
|format = PDF |title = Large Files in Solaris: A White Paper
|publisher = [[Sun Microsystems]]
|archiveurl = https://web.archive.org/web/20070228204423/http://www.sun.com/software/whitepapers/wp-largefiles/largefiles.pdf
|archivedate = 2007-02-28
}}</ref>
 
This switch caused deployment issues and required design modifications, the consequences of which can still be seen:
Line 20 ⟶ 13:
* To support binary compatibility with old [[Application software|applications]], operating system [[Application programming interface|interfaces]] had to retain their use of 32-bit file sizes and new interfaces had to be designed specifically for large-file support.
* To support writing [[porting|portable]] code that makes use of LFS where possible, [[C standard library]] authors devised mechanisms that, depending on [[C preprocessor|preprocessor]] constants, transparently redefined the functions to the 64-bit large-file aware ones.
* Many old interfaces, especially [[C (programming language)|C]]-based ones, explicitly specified argument types in a way that did not allow straightforward or transparent transition to 64-bit types. For example, the C functions <code>[[fseek]]</code> and <code>ftell</code> operate on file positions of type <code>long int</code>, which is typically 32 bits wide on 32-bit platforms, and cannot be made larger without sacrificing backward compatibility. (This was resolved by introducing new functions <code>fseeko</code> and <code>ftello</code> in [[POSIX]].<ref name="Unix_1996_LFS"/> On Windows machines, under Visual C++, functions <code>_fseeki64</code> and <code>_ftelli64</code>{{ citeare journalused.)
|date= 1996-08-14
|url = http://opengroup.org/platform/lfs.html
|title= Adding Large File Support to the Single UNIX Specification
|publisher= X/Open Base Working Group
|accessdate= 2006-09-10
}}</ref> On Windows machines, under Visual C++, functions <code>_fseeki64</code> and <code>_ftelli64</code> are used.)
 
==See also==
<div style="{{column-width|25em}};">
* [[2 GB limit]]
* [[Comparison of text editors#Extra features|Comparison of large-file support in text editors]]
* [[FAT32+]]<ref name="FAT+"/>
* [[FAT32+]]<ref>{{cite web|title=FAT+ draft revision 2|first1=Udo|last1=Kuhnt|first2=Luchezar|last2=Georgiev|first3=Jeremy|last3=Davis|date=2007|format=FATPLUS.TXT|edition=2|url=http://www.fdos.org/kernel/fatplus.txt|accessdate=2015-08-05}}</ref>
* [[File size]]
* [[Long filename support]] (LFN)
* [[Year 2038 problem]]
</div>
 
==References==
{{Reflist}}|refs=
<ref name="Solaris_1996">{{cite web |author=Solaris OS group |date=March 1996 |title=Large Files in Solaris: A White Paper |publisher=[[Sun Microsystems]] |url=http://www.sun.com/software/whitepapers/wp-largefiles/largefiles.pdf |archive-url=https://web.archive.org/web/20070228204423/http://www.sun.com/software/whitepapers/wp-largefiles/largefiles.pdf |archive-date=2007-02-28}}</ref>
<ref name="Unix_1996_LFS">{{cite web |date=1996-08-14 |title=Adding Large File Support to the Single UNIX Specification |publisher=X/Open Base Working Group |url=http://opengroup.org/platform/lfs.html |access-date=2006-09-10}}</ref>
* [[FAT32+]]<ref name="FAT+">{{cite web |title=FAT+ draft revision 2 |author-first1=Udo |author-last1=Kuhnt |author-first2=Luchezar I. |author-last2=Georgiev |author-first3=Jeremy |author-last3=Davis |date=2007 |format=FATPLUS.TXT |edition=2 |url=http://www.fdos.org/kernel/fatplus.txt |accessdateaccess-date=2015-08-05}}</ref>
}}
 
==External links==
* {{cite web |author-first=Andreas |author-last=Jaeger |date=2005-02-15 |title=Large File Support in Linux |publisher=[[SuSE GmbH]] |url=http://www.suse.de/~aj/linux_lfs.html |access-date=2006-09-10}}
* {{cite journal
|first = Andreas |last = Jaeger
|date = 2005-02-15
|url = http://www.suse.de/~aj/linux_lfs.html
|title = Large File Support in Linux
|publisher = SuSE GmbH (now [[Novell]])
|accessdate = 2006-09-10
}}
 
[[Category:Computer file systems]]