DDI 8 drivers support device sizes up to 1TB
whereas earlier DDI 8 versions
restricted device size to 2GB.
The larger device size is accomplished
by replacing the
off_t data type
uio_offset member of the
structure by references to two members in the
daddr_t b_blkno; ushort_t b_blkoff;
b_blknoholds the offset divided by 512 (the block size);
b_blkoffholds the remainder. The
daddr_ttype becomes an unsigned 32-bit integer for DDI 8; in earlier DDI versions, it was a signed 32-bit integer. The only exception to this scheme is the mmap(D2) entry point routine, which is passed the
entry point routine is obsoleted.
This entry point returns the size of the device
in 512-byte units, but signed,
so the size is limited to 1TB
and has no way to indicate a size
that is not a multiple of 512. The
entry point is replaced by the
DI_SIZE subfunction of the
entry point, which uses the same
that is used by the buf structure.
Most commands support filesystems larger than 2GB on all SVR5 releases; the manual page for each command includes information about whether this support is provided. Note that the command line for the dd command uses an int for the size and offset information so you must increase the blocksize in order to handle a large file.