fs (cdfs) -- format of a cdfs filesystem


   #include <sys/fs/iso9660.h>
   #include <sys/fs/cdfs_fs.h>


The cdfs filesystem supports the ISO-9660 and High Sierra filesystem format specifications. In a cdfs filesystem, sectors 0-15 are reserved for boot information (this area is not used). The Volume Descriptor list begins at sector 16. The Volume Descriptor list contains the Primary Volume Descriptor (PVD) (which is known as the super-block in other types of filesystems). Directory and file data make up the rest of the filesystem.

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 */ };


cdfs-specific dir_cdfs(F), cdfs-specific inode_cdfs(F)

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

© 2005 The SCO Group, Inc. All rights reserved.
SCO OpenServer Release 6.0.0 -- 03 June 2005