home *** CD-ROM | disk | FTP | other *** search
/ Complete Linux / Complete Linux.iso / docs / system / filesyst / sysv / sysvfs53.z / sysvfs53 / include / linux / sysv_fs_sb.h < prev    next >
Encoding:
C/C++ Source or Header  |  1993-07-20  |  5.3 KB  |  105 lines

  1. #ifndef _SYSV_FS_SB
  2. #define _SYSV_FS_SB
  3.  
  4. /*
  5.  * SystemV/Coherent super-block data in memory
  6.  * The SystemV/Coherent superblock contains dynamic data (it gets modified
  7.  * while the system is running). This is in contrast to the Minix and Berkeley
  8.  * filesystems (where the superblock is never modified). This affects the
  9.  * sync() operation: we must keep the superblock in a disk buffer and use this
  10.  * one as our "working copy".
  11.  */
  12.  
  13. struct sysv_sb_info {
  14.     int           s_type;        /* file system type: FSTYPE_{XENIX|SYSV|COH} */
  15.     unsigned int   s_block_size;    /* zone size, = 512 or = 1024 */
  16.     unsigned int   s_block_size_1;    /* block_size - 1 */
  17.     unsigned int   s_block_size_bits;    /* log2(block_size) */
  18.     unsigned int   s_block_size_ratio;    /* BLOCK_SIZE / block_size */
  19.     unsigned int   s_block_size_ratio_1;    /* block_size_ratio - 1 */
  20.     unsigned int   s_block_size_ratio_bits;    /* log2(block_size_ratio) */
  21.     char           s_convert;    /* flag whether byte ordering requires conversion */
  22.     char           s_kludge_symlinks; /* flag whether symlinks have a kludgey mode */
  23.     char           s_truncate;    /* if 1: names > SYSV_NAMELEN chars are truncated */
  24.                     /* if 0: they are disallowed (ENAMETOOLONG) */
  25.     nlink_t        s_link_max;    /* max number of hard links to a file */
  26.     unsigned int   s_inodes_per_block;    /* number of inodes per block */
  27.     unsigned int   s_inodes_per_block_1;    /* inodes_per_block - 1 */
  28.     unsigned int   s_inodes_per_block_bits;    /* log2(inodes_per_block) */
  29.     unsigned int   s_ind_per_block;        /* number of indirections per block */
  30.     unsigned int   s_ind_per_block_1;    /* ind_per_block - 1 */
  31.     unsigned int   s_ind_per_block_bits;    /* log2(ind_per_block) */
  32.     unsigned int   s_ind_per_block_2;    /* ind_per_block ^ 2 */
  33.     unsigned int   s_ind_per_block_2_1;    /* ind_per_block ^ 2 - 1 */
  34.     unsigned int   s_ind_per_block_2_bits;    /* log2(ind_per_block^2) */
  35.     unsigned int   s_ind_per_block_3;    /* ind_per_block ^ 3 */
  36.     unsigned int   s_toobig_block;        /* 10 + ipb + ipb^2 + ipb^3 */
  37.     unsigned int   s_block_base;    /* physical block number of block 0 */
  38.     unsigned short s_fic_size;    /* free inode cache size, NICINOD */
  39.     unsigned short s_flc_size;    /* free block list chunk size, NICFREE */
  40.     /* The superblock is kept in a disk buffer: */
  41.     struct buffer_head *s_bh;
  42.     /* These are pointers into the disk buffer, to compensate for
  43.        different superblock layout. */
  44.     char *         s_sbd;        /* entire superblock data */
  45.     unsigned short *s_sb_fic_count;    /* pointer to s_sbd->s_ninode */
  46.         unsigned short *s_sb_fic_inodes; /* pointer to s_sbd->s_inode */
  47.     unsigned short *s_sb_total_free_inodes; /* pointer to s_sbd->s_tinode */
  48.     unsigned short *s_sb_flc_count;    /* pointer to s_sbd->s_nfree */
  49.     unsigned long  *s_sb_flc_blocks; /* pointer to s_sbd->s_free */
  50.     unsigned long  *s_sb_total_free_blocks;/* pointer to s_sbd->s_tfree */
  51.     unsigned long  *s_sb_time;    /* pointer to s_sbd->s_time */
  52.     /* We keep those superblock entities that don't change here;
  53.        this saves us an indirection and perhaps a conversion. */
  54.     unsigned long  s_firstinodezone; /* index of first inode zone */
  55.     unsigned long  s_firstdatazone;    /* same as s_sbd->s_isize */
  56.     unsigned long  s_ninodes;    /* total number of inodes */
  57.     unsigned long  s_ndatazones;    /* total number of data zones */
  58.     unsigned long  s_nzones;    /* same as s_sbd->s_fsize */
  59. };
  60. /* The fields s_block_size_ratio, s_toobig_block, s_sbd are currently unused. */
  61.  
  62. /* sv_ == u.sysv_sb.s_ */
  63. #define sv_type                u.sysv_sb.s_type
  64. #define sv_block_size            u.sysv_sb.s_block_size
  65. #define sv_block_size_1            u.sysv_sb.s_block_size_1
  66. #define sv_block_size_bits        u.sysv_sb.s_block_size_bits
  67. #define sv_block_size_ratio        u.sysv_sb.s_block_size_ratio
  68. #define sv_block_size_ratio_1        u.sysv_sb.s_block_size_ratio_1
  69. #define sv_block_size_ratio_bits    u.sysv_sb.s_block_size_ratio_bits
  70. #define sv_convert            u.sysv_sb.s_convert
  71. #define sv_kludge_symlinks        u.sysv_sb.s_kludge_symlinks
  72. #define sv_truncate            u.sysv_sb.s_truncate
  73. #define sv_link_max            u.sysv_sb.s_link_max
  74. #define sv_inodes_per_block        u.sysv_sb.s_inodes_per_block
  75. #define sv_inodes_per_block_1        u.sysv_sb.s_inodes_per_block_1
  76. #define sv_inodes_per_block_bits    u.sysv_sb.s_inodes_per_block_bits
  77. #define sv_ind_per_block        u.sysv_sb.s_ind_per_block
  78. #define sv_ind_per_block_1        u.sysv_sb.s_ind_per_block_1
  79. #define sv_ind_per_block_bits        u.sysv_sb.s_ind_per_block_bits
  80. #define sv_ind_per_block_2        u.sysv_sb.s_ind_per_block_2
  81. #define sv_ind_per_block_2_1        u.sysv_sb.s_ind_per_block_2_1
  82. #define sv_ind_per_block_2_bits        u.sysv_sb.s_ind_per_block_2_bits
  83. #define sv_ind_per_block_3        u.sysv_sb.s_ind_per_block_3
  84. #define sv_toobig_block            u.sysv_sb.s_toobig_block
  85. #define sv_block_base            u.sysv_sb.s_block_base
  86. #define sv_fic_size            u.sysv_sb.s_fic_size
  87. #define sv_flc_size            u.sysv_sb.s_flc_size
  88. #define sv_bh                u.sysv_sb.s_bh
  89. #define sv_sbd                u.sysv_sb.s_sbd
  90. #define sv_sb_fic_count            u.sysv_sb.s_sb_fic_count
  91. #define sv_sb_fic_inodes        u.sysv_sb.s_sb_fic_inodes
  92. #define sv_sb_total_free_inodes        u.sysv_sb.s_sb_total_free_inodes
  93. #define sv_sb_flc_count            u.sysv_sb.s_sb_flc_count
  94. #define sv_sb_flc_blocks        u.sysv_sb.s_sb_flc_blocks
  95. #define sv_sb_total_free_blocks        u.sysv_sb.s_sb_total_free_blocks
  96. #define sv_sb_time            u.sysv_sb.s_sb_time
  97. #define sv_firstinodezone        u.sysv_sb.s_firstinodezone
  98. #define sv_firstdatazone        u.sysv_sb.s_firstdatazone
  99. #define sv_ninodes            u.sysv_sb.s_ninodes
  100. #define sv_ndatazones            u.sysv_sb.s_ndatazones
  101. #define sv_nzones            u.sysv_sb.s_nzones
  102.  
  103. #endif
  104.  
  105.