root/include/linux/sysv_fs_sb.h

/* [previous][next][first][last][top][bottom][index][help] */

INCLUDED FROM


   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 

/* [previous][next][first][last][top][bottom][index][help] */