#include <sys/fs/iso9660.h> #include <sys/fs/cdfs_fs.h>
The PVD contains information such as:
For each cdfs filesystem that is mounted, an in-core data structure is used to store the relevant portions of the PVD. This data structure, called the cdfs structure, also stores the other filesystem specific information. The cdfs structure is defined in the cdfs_fs.h header file. The ISO-9660 and High Sierra PVD's are defined in the iso9660.h header file.
The format of the cdfs filesystem structure is:
   struct cdfs {
   	uint_t	cdfs_Flags;	/* State flags for this FS */
   	struct pathname	cdfs_MntPnt;	/* Pathname of mount-point */
   	struct pathname	cdfs_DevNode;	/* Pathname of device node */
   	struct vnode	*cdfs_DevVnode;	/* 'specfs' vnode for the device */
   	struct cdfs_inode	*cdfs_RootInode;	/* Inode of CDFS root directory */
   	struct cdfs_fid	cdfs_RootFid;	/* FID of Root Inode */
   	enum cdfs_type	cdfs_Type;	/* File system type (9660/Hi-S) */
   	daddr_t	cdfs_PvdLoc;	/* PVD location (Log Sector #) */
   	uint_t	cdfs_LogSecSz;	/* Logical sector size (Bytes) */
   	uint_t	cdfs_LogSecMask;	/* Convert bytes to beg of Sect */
   	uint_t	cdfs_LogSecShift;	/* Convert bytes to Log Sect Num */
   	uint_t	cdfs_LogBlkMask;	/* Convert bytes to beg of Blk */
   	uint_t	cdfs_LogBlkShift;	/* Convert bytes to Log Blk Num */
   
   	/*
   	 * Relevant PVD Information
   	 */
   	uint_t	cdfs_LogBlkSz;	/* Logical block size (Bytes) */
   	uint_t	cdfs_VolVer;	/* Version # of Vol Descr struct */
   	uint_t	cdfs_FileVer;	/* Version # of Dir Rec/Path Tbl */
   	uint_t	cdfs_VolSetSz;	/* Volume Set size (# of discs) */
   	uint_t	cdfs_VolSeqNum;	/* Volume Sequence # (Disc #) */
   	uint_t	cdfs_VolSpaceSz;	/* Volume Space Size (Bytes) */
   	uint_t	cdfs_PathTabSz;	/* Path Table size (Bytes) */
   	daddr_t	cdfs_PathTabLoc;	/* Path Table loc. (Log Block #) */
   	timestruc_t	cdfs_CreateDate;	/* Volume Creation date/time */
   	timestruc_t	cdfs_ModDate;	/* Volume Modification date/time */
   	timestruc_t	cdfs_ExpireDate;	/* Volume Expiration date/time */
   	timestruc_t	cdfs_EffectDate;	/* Volume Effective date/time */
   	uchar_t	cdfs_VolID[32];	/* Volume ID string */
   	uint_t	cdfs_RootDirOff;	/* PVD offset of Root Dir Rec */
   	uint_t	cdfs_RootDirSz;	/* Size (bytes) of Root Dir Rec */
   
   	/*
   	 * XCDR specific fields.
   	 */
   	struct cd_defs	cdfs_Dflts;	/* Default IDs, perms and modes */
   	uint_t	cdfs_NameConv;	/* XCDR name conversion mode */
   	struct cd_uidmap	cdfs_UidMap[CD_MAXUMAP]; /* User ID map array */
   	struct cd_gidmap	cdfs_GidMap[CD_MAXGMAP]; /* Group ID map array */
   
   	/*
   	 * SUSP specific fields.
   	 */
   	uint_t	cdfs_SuspSkip;	/* Value for finding SUFs in SUA */
   
   	/*
   	 * RRIP specific field(s).
   	 */
   	uint_t	cdfs_DevMap_Cnt;	/* Num of valid Device mappings*/
   	struct cd_devmap	cdfs_DevMap[CD_MAXDMAP]; /* Device Node (Number) Map */
   };
ISO 9660 Specification, Working paper for Information Processing: Volume and File Structure of CD-ROM Information Interchange" in Optical Information Systems magazine, January/February 1987