Document that the documented 2GB mmap limit is actually a

documentation bug.  We switched to page indexes some time around
FreeBSD 2.2.  The actual 'len' limit is the maximum file size or what
will fit in your address space, whichever comes first.  It should be
possible to make 1TB files on 32 bit systems, but of course address space
runs out long before then.
This commit is contained in:
Peter Wemm 2006-03-23 23:37:06 +00:00
parent ec31427d3f
commit c8cd6b70e2

View File

@ -350,29 +350,15 @@ sysctl.
The
.Fa len
argument
is limited to 2GB.
Mmapping slightly more than 2GB does not work, but
it is possible to map a window of size (filesize % 2GB) for file sizes
of slightly less than 2G, 4GB, 6GB and 8GB.
is limited to the maximum file size or available userland address
space.
Files may not be able to be made more than 1TB large on 32 bit systems
due to file systems restrictions and bugs, but address space is far more
restrictive. Larger files may be possible on 64 bit systems.
.Pp
The limit is imposed for a variety of reasons.
Most of them have to do
with
.Fx
not wanting to use 64 bit offsets in the VM system due to
the extreme performance penalty.
So
.Fx
uses 32bit page indexes and
this gives
.Fx
a maximum of 8TB filesizes.
It is actually bugs in
the file system code that causes the limit to be further restricted to
1TB (loss of precision when doing blockno calculations).
.Pp
Another reason for the 2GB limit is that file system metadata can
reside at negative offsets.
The previous documented limit of 2GB was a documentation bug.
That limit has not existed since
.Fx 2.2 .
.Pp
Note that an attempt to
.Fn mmap