Important: The information in this document is obsolete and should not be used for new development.
Master Directory Blocks
A master directory block (MDB)--also sometimes known as a volume information block (VIB)--contains information about the rest of the volume. This information is written into the MDB when the volume is initialized. Thereafter, whenever the volume is mounted, the File Manager reads the information in the MDB and copies some of that information into a volume control block (VCB). A VCB is a private data structure maintained in memory by the File Manager (in the VCB queue). The structure of a VCB is described in "Volume Control Blocks," later in this chapter.Note in Figure 2-5 (page 2-56) that a copy of the MDB is located in the next-to-last block in the volume. This copy is updated only when the extents overflow file or the catalog file grows larger. This alternate MBD is intended for use solely by disk utilities.
The
MDB
data type defines a master directory block record.
TYPE MDB = {master directory block} RECORD drSigWord: Integer; {volume signature} drCrDate: LongInt; {date and time of volume creation} drLsMod: LongInt; {date and time of last modification} drAtrb: Integer; {volume attributes} drNmFls: Integer; {number of files in root directory} drVBMSt: Integer; {first block of volume bitmap} drAllocPtr: Integer; {start of next allocation search} drNmAlBlks: Integer; {number of allocation blocks in volume} drAlBlkSiz: LongInt; {size (in bytes) of allocation blocks} drClpSiz: LongInt; {default clump size} drAlBlSt: Integer; {first allocation block in volume} drNxtCNID: LongInt; {next unused catalog node ID} drFreeBks: Integer; {number of unused allocation blocks} drVN: String[27]; {volume name} drVolBkUp: LongInt; {date and time of last backup} drVSeqNum: Integer; {volume backup sequence number} drWrCnt: LongInt; {volume write count} drXTClpSiz: LongInt; {clump size for extents overflow file} drCTClpSiz: LongInt; {clump size for catalog file} drNmRtDirs: Integer; {number of directories in root directory} drFilCnt: LongInt; {number of files in volume} drDirCnt: LongInt; {number of directories in volume} drFndrInfo: ARRAY[1..8] OF LongInt; {information used by the Finder} drVCSize: Integer; {size (in blocks) of volume cache} drVBMCSize: Integer; {size (in blocks) of volume bitmap cache} drCtlCSize: Integer; {size (in blocks) of common volume cache} drXTFlSize: LongInt; {size of extents overflow file} drXTExtRec: ExtDataRec; {extent record for extents overflow file} drCTFlSize: LongInt; {size of catalog file} drCTExtRec: ExtDataRec; {extent record for catalog file} END;
Field Description
drSigWord
- The volume signature. For HFS volumes, this field contains $4244; for the obsolete flat MFS volumes, this field contains $D2D7.
drCrDate
- The date and time of volume creation (initialization).
drLsMod
- The date and time the volume was last modified. This is not necessarily when the volume was last flushed.
drAtrb
- Volume attributes. Currently the following bits are defined:
Bit Meaning 7 Set if the volume is locked by hardware 8 Set if the volume was successfully unmounted 9 Set if the volume has had its bad blocks spared 15 Set if the volume is locked by software drNmFls
- The number of files in the root directory.
drVBMSt
- The first block of the volume bitmap. This field always contains 3 in the current implementation.
drAllocPtr
- The number of the allocation block at which the next allocation search will begin. Used internally.
drNmAlBlks
- The number of allocation blocks in the volume. Because the value in this field is an integer, a volume can contain at most 65,535 allocation blocks.
drAlBlkSiz
- The allocation block size (in bytes). This value must always be a multiple of 512 bytes.
drClpSiz
- The default clump size.
drAlBlSt
- The location of the first allocation block in the volume.
drNxtCNID
- The next unused catalog node ID (directory ID or file ID).
drFreeBks
- The number of unused allocation blocks on the volume.
drVN
- The volume name. This field consists of a length byte followed
by 27 bytes. Note that the volume name can occupy at most
27 characters; this is an exception to the normal file and directory name limit of 31 characters.drVolBkUp
- The date and time of the last volume backup.
drVSeqNum
- Volume backup sequence number. Used internally.
drWrCnt
- The volume write count (that is, the number of times the volume has been written to).
drXTClpSize
- The clump size for the extents overflow file.
drCTClpSize
- The clump size for the catalog file.
drNmRtDirs
- The number of directories in the root directory.
drFilCnt
- The number of files on the volume.
drDirCnt
- The number of directories on the volume.
drFndrInfo
- Information used by the Finder. See the chapter "Finder Interface" in Inside Macintosh: Macintosh Toolbox Essentials for details on
Finder information.drVCSize
- The size (in allocation blocks) of the volume cache. Used internally.
drVBMCSiz
e- The size (in allocation blocks) of the volume bitmap cache.
Used internally.drCtlCSize
- The size (in allocation blocks) of the common volume cache.
Used internally.drXTFlSize
- The size (in allocation blocks) of the extents overflow file.
drXTExtRec
- First extent record for the extents overflow file. An extent record is an array of three extents. See "Extents Overflow Files" on page 2-74 for a description of extents and extent records.
- drCTFlSize
- The size (in allocation blocks) of the catalog file.
drCTExtRec
- First extent record for the catalog file.
- Note
- The values in the
drNmAlBlks
anddrFreeBks
fields should be interpreted as unsigned integers (that is, they can range from 0 to 65,535, not from -32,768 to 32,767). Pascal does not support unsigned data types, and so you need to use the technique illustrated in "Determining the Amount of Free Space on a Volume" on page 2-46 to read the values in these fields correctly.