sysv_fs_sb.h
上传用户:lgb322
上传日期:2013-02-24
资源大小:30529k
文件大小:4k
源码类别:

嵌入式Linux

开发平台:

Unix_Linux

  1. #ifndef _SYSV_FS_SB
  2. #define _SYSV_FS_SB
  3. /*
  4.  * SystemV/V7/Coherent super-block data in memory
  5.  * The SystemV/V7/Coherent superblock contains dynamic data (it gets modified
  6.  * while the system is running). This is in contrast to the Minix and Berkeley
  7.  * filesystems (where the superblock is never modified). This affects the
  8.  * sync() operation: we must keep the superblock in a disk buffer and use this
  9.  * one as our "working copy".
  10.  */
  11. struct sysv_sb_info {
  12. int        s_type; /* file system type: FSTYPE_{XENIX|SYSV|COH} */
  13. char        s_bytesex; /* bytesex (le/be/pdp) */
  14. char        s_truncate; /* if 1: names > SYSV_NAMELEN chars are truncated */
  15. /* if 0: they are disallowed (ENAMETOOLONG) */
  16. nlink_t        s_link_max; /* max number of hard links to a file */
  17. unsigned int   s_inodes_per_block; /* number of inodes per block */
  18. unsigned int   s_inodes_per_block_1; /* inodes_per_block - 1 */
  19. unsigned int   s_inodes_per_block_bits; /* log2(inodes_per_block) */
  20. unsigned int   s_ind_per_block; /* number of indirections per block */
  21. unsigned int   s_ind_per_block_bits; /* log2(ind_per_block) */
  22. unsigned int   s_ind_per_block_2; /* ind_per_block ^ 2 */
  23. unsigned int   s_toobig_block; /* 10 + ipb + ipb^2 + ipb^3 */
  24. unsigned int   s_block_base; /* physical block number of block 0 */
  25. unsigned short s_fic_size; /* free inode cache size, NICINOD */
  26. unsigned short s_flc_size; /* free block list chunk size, NICFREE */
  27. /* The superblock is kept in one or two disk buffers: */
  28. struct buffer_head *s_bh1;
  29. struct buffer_head *s_bh2;
  30. /* These are pointers into the disk buffer, to compensate for
  31.    different superblock layout. */
  32. char *         s_sbd1; /* entire superblock data, for part 1 */
  33. char *         s_sbd2; /* entire superblock data, for part 2 */
  34. u16            *s_sb_fic_count; /* pointer to s_sbd->s_ninode */
  35.         u16            *s_sb_fic_inodes; /* pointer to s_sbd->s_inode */
  36. u16            *s_sb_total_free_inodes; /* pointer to s_sbd->s_tinode */
  37. u16            *s_bcache_count; /* pointer to s_sbd->s_nfree */
  38. u32        *s_bcache; /* pointer to s_sbd->s_free */
  39. u32            *s_free_blocks; /* pointer to s_sbd->s_tfree */
  40. u32            *s_sb_time; /* pointer to s_sbd->s_time */
  41. u32            *s_sb_state; /* pointer to s_sbd->s_state, only FSTYPE_SYSV */
  42. /* We keep those superblock entities that don't change here;
  43.    this saves us an indirection and perhaps a conversion. */
  44. u32            s_firstinodezone; /* index of first inode zone */
  45. u32            s_firstdatazone; /* same as s_sbd->s_isize */
  46. u32            s_ninodes; /* total number of inodes */
  47. u32            s_ndatazones; /* total number of data zones */
  48. u32            s_nzones; /* same as s_sbd->s_fsize */
  49. u16        s_namelen;       /* max length of dir entry */
  50. };
  51. /* The field s_toobig_block is currently unused. */
  52. /* sv_ == u.sysv_sb.s_ */
  53. #define sv_type u.sysv_sb.s_type
  54. #define sv_bytesex u.sysv_sb.s_bytesex
  55. #define sv_truncate u.sysv_sb.s_truncate
  56. #define sv_link_max u.sysv_sb.s_link_max
  57. #define sv_inodes_per_block u.sysv_sb.s_inodes_per_block
  58. #define sv_inodes_per_block_1 u.sysv_sb.s_inodes_per_block_1
  59. #define sv_inodes_per_block_bits u.sysv_sb.s_inodes_per_block_bits
  60. #define sv_ind_per_block u.sysv_sb.s_ind_per_block
  61. #define sv_ind_per_block_bits u.sysv_sb.s_ind_per_block_bits
  62. #define sv_ind_per_block_2 u.sysv_sb.s_ind_per_block_2
  63. #define sv_toobig_block u.sysv_sb.s_toobig_block
  64. #define sv_block_base u.sysv_sb.s_block_base
  65. #define sv_fic_size u.sysv_sb.s_fic_size
  66. #define sv_flc_size u.sysv_sb.s_flc_size
  67. #define sv_bh1 u.sysv_sb.s_bh1
  68. #define sv_bh2 u.sysv_sb.s_bh2
  69. #define sv_sbd1 u.sysv_sb.s_sbd1
  70. #define sv_sbd2 u.sysv_sb.s_sbd2
  71. #define sv_sb_fic_count u.sysv_sb.s_sb_fic_count
  72. #define sv_sb_fic_inodes u.sysv_sb.s_sb_fic_inodes
  73. #define sv_sb_total_free_inodes u.sysv_sb.s_sb_total_free_inodes
  74. #define sv_bcache_count u.sysv_sb.s_bcache_count
  75. #define sv_bcache u.sysv_sb.s_bcache
  76. #define sv_free_blocks u.sysv_sb.s_free_blocks
  77. #define sv_sb_time u.sysv_sb.s_sb_time
  78. #define sv_sb_state u.sysv_sb.s_sb_state
  79. #define sv_firstinodezone u.sysv_sb.s_firstinodezone
  80. #define sv_firstdatazone u.sysv_sb.s_firstdatazone
  81. #define sv_ninodes u.sysv_sb.s_ninodes
  82. #define sv_ndatazones u.sysv_sb.s_ndatazones
  83. #define sv_nzones u.sysv_sb.s_nzones
  84. #define sv_namelen                              u.sysv_sb.s_namelen
  85. #endif