HDK Technical Reference

Large device support

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.

© 2005 The SCO Group, Inc. All rights reserved.
OpenServer 6 and UnixWare (SVR5) HDK - June 2005