Describes a file system file or directory entry as it is listed on a disk.
#include <sys/types.h> #include <sys/ino.h>
The inode file for an ordinary file or directory in a file system has the following structure defined by the sys/ino.h file format:
struct dinode { /* generation number */ ulong di_gen; /* mode_t returned by stat () */ /* format,attributes and permission bits */ mode_t di_mode; /* number of links to file(if 0,inode is available) */ ushort di_nlink; /* accounting ID */ ushort di_acct; /* user id of owner */ uid_t di_uid; /* group id of owner */ gid_t di_gid; /* size of file */ off_t di_size; /* number of blocks actually used by file */ ulong di_nblocks; /* time last modified */ struct timestruc_t di_mtime_ts; /* time last accessed */ struct timestruc_t di_atime_ts; /* time last changed inode */ struct timestruc_t di_ctime_ts; /*defines for old time_t names */ #define di_mtime di_mtime_ts.tv_sec #define di_atime di_atime_ts.tv_sec #define di_ctime di_ctime_ts.tv_sec /* extended access control information */ long di_acl; /* acl pointer */ #define ACL_INCORE (1<<31) ulong di_sec; /* reserved */ /* spares */ ulong di_rsrvd[5]; /***** file type-dependent information ****/ /* size of private data in disk inode is D_PRIVATE. * location and size of fields depend on object type. */ # define D_PRIVATE 48 union di_info { /* all types must fit within d_private */ char d_private[D_PRIVATE]; /* jfs regular file or directory. */ struct regdir { /*privilege vector-only for non-directory */ struct { ulong_di_offset; ulong_di_flags; define;PCL_ENABLED(1<<31) define PCL_EXTENDED(1<<30) define PCL_FLAGS\ (PCL_ENABLED|PCL_EXTENDED) }_di_privingo; priv_t_di_priv; /* ACL templates - only for directory */ struct { ulong_di_aclf; ulong_di_acld; {_di_aclingo; } _di_sec; } _di_file; /* offsets of regular file or directory private data. */ # define di_rdaddr _di_info._di_file._di_rdaddr define di_vindirect _di_info._di_file._di_vinderect define di_rinderect _di_info._di_file._di_rinderect define di_privinfo _di_info._di_file._di_sec._di_privinfo define di_privoffset _di_privinfo._di_privoffset define di_privflags _di_privinfo._di_privflags define di_priv _di_info._di_file._di_sec._di_priv define di_aclf _di_info._di_file._di_sec._di_aclinfo._di_aclf define di_acld _di_info._di_file._di_sec._di_aclinfo._di_acld /*special file (device) /* struct } dev_t_di_rdev; }_di_dev; /* offsets of special file private data. */ # define di_rdev _di_infor._di_dev._di_rdev # define di_bnlastr _di_info._di_dev._di_bnlastr # define di_dgp _di_info._di_dev._di_dgp # define di_pino _di_info._di_dev._di_pino /* * symbolic link.link is stored inode if its * length is less than D_PRIVATE. Otherwise like * regular file. */ union { char _s_private[D_PRIVATE]; struct regdir_s_symfile; }_di_sym; /* offset of symbolic link private data */ # define di_symlink _di_info._di_sym._s_private /* *data for mounted filesystem. kept in inode = 0 *and dev = devt of mounted filesystem in inode table. */ struct mountnode { struct inode *_iplog; /*itab of log*/ struct inode *_ipinode; /*itab of .inodes*/ struct inode *_ipind; /*itab of .indirect*/ struct inode *_ipinomap; /*itab of inode map*/ struct inode *_ipdmap; /*itab of disk map*/ struct inode *_ipsuper; /*itab of super blk*/ struct inode *_ipinodex; /*itab of .inodex*/ struct jfsmount *_jfsmnt; /* ptr to mount data*/ ushort _fperpage; /* frag per block */ ushort _agsize; /* frags per ag */ ushort _iagsize; /* inodes per ag */ }_mt_info; /* * data for mounted filesystem. kept in inode = 0 * and dev = devt of mounted filesystem in inode table. */ struct mountnode { struct inode *_iplog; /*itab of log*/ struct inode *_ipinode; /*itab of .inodes*/ struct inode *_ipind; /*itab of .indirect*/ struct inode *_ipinomap; /*itab of inode map*/ struct inode *_ipdmap; /*itab of disk map*/ struct inode *_ipsuper; /*itab of super blk*/ struct inode *_ipinodex; /*itab of .inodex*/ struct jfsmount *_jfsmnt; /* ptr to mount data*/ ushort _fperpage; /* frag per block */ ushort _agsize; /* frags per ag */ ushort _iagsize; /* inodes per ag */ ushort _compress /* > 0 if data comp */ }_mt_info; /* offsets of MOUNT data */ # define di_iplog _di_info._mt_info._iplog # define di_ipinode _di_info._mt_info._ipinode # define di_ipind _di_info._mt_info._ipind # define di_ipinomap _di_info._mt_info._ipinomap # define di_ipdmap _di_info._mt_info._ipdmap # define di_ipsuper _di_info._mt_info._ipsuper # define di_ipinodex _di_info._mt_info._ipinodex # define di_jfsmnt _di_info._mt_info._jfsmnt # define di_fperpage _di_info._mt_info._fperpage # define di_agsize _di_info._mt_info._agsize # define di_iagsize _di_info._mt_info._iagsize /* * log info. kept in inode = 0 and dev = devt of * log device filesystem in inode table. */ struct lognode { int _logptr /* page number end of log */ int _logsize /* log size in pages */ int _logend /* eor in page _logptr */ int _logsync /* addr in last syncpt record */ int _nextsync /* bytes to next logsyncpt */ struct gnode * _logdgp; /* pointer to device gnode */ }_di_log; /* offsets of MOUNT data */ # define di_iplog _di_info._mt_info._iplog # define di_ipinode _di_info._mt_info._ipinode # define di_ipind _di_info._mt_info._ipind # define di_ipinomap _di_info._mt_info._ipinomap # define di_ipdmap _di_info._mt_info._ipdmap # define di_ipsuper _di_info._mt_info._ipsuper # define di_ipinodex _di_info._mt_info._ipinodex # define di_jfsmnt _di_info._mt_info._jfsmnt # define di_fperpage _di_info._mt_info._fperpage # define di_agsize _di_info._mt_info._agsize # define di_iagsize _di_info._mt_info._iagsize # define di_compress _di_info._mt_info._compress /* * log info. kept in inode = 0 and dev = devt of * log device filesystem in inode table. */ struct lognode { int _logptr /* page number end of log */ int _logsize /* log size in pages */ int _logend /* eor in page _logptr */ int _logsync /* addr in last syncpt record */ int _nextsync /* bytes to next logsyncpt */ struct gnode * _logdgp; /* pointer to device gnode */ }_di_log; /* offsets of LOG data */ # define di_logptr _di_info._di_log._logptr # define di_logsize _di_info._di_log._logsize # define di_logend _di_info._di_log._logend # define di_logsync _di_info._di_log._logsync # define di_nextsync _di_info._di_log._nextsync # define di_logdgp _di_info._di_log._logdgp }_di_info; };
This file is part of Base Operating System (BOS) Runtime.
The filsys.h file, stat.h file, types.h file.
Directory Overview and File Systems Overview for System Management in AIX Version 4.3 System Management Concepts: Operating System and Devices.