|
|
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
in the uio_offset
member of the
uio(D4)
structure by references to two members in the
buf(D4)
structure:
daddr_t b_blkno; ushort_t b_blkoff;
b_blkno
holds the offset divided by 512 (the block size);
b_blkoff
holds the remainder.
The daddr_t
type 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 daddr_t/ushort_t
pair directly.
The
size(D2)
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
size( )
entry point is replaced by the
DI_SIZE subfunction of the
devinfo(D2)
entry point, which uses the same
daddr_t/ushort_t
pair
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.