The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/fs/freevxfs/vxfs_inode.h

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 /*
    2  * Copyright (c) 2000-2001 Christoph Hellwig.
    3  * All rights reserved.
    4  *
    5  * Redistribution and use in source and binary forms, with or without
    6  * modification, are permitted provided that the following conditions
    7  * are met:
    8  * 1. Redistributions of source code must retain the above copyright
    9  *    notice, this list of conditions, and the following disclaimer,
   10  *    without modification.
   11  * 2. The name of the author may not be used to endorse or promote products
   12  *    derived from this software without specific prior written permission.
   13  *
   14  * Alternatively, this software may be distributed under the terms of the
   15  * GNU General Public License ("GPL").
   16  *
   17  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
   18  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
   19  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
   20  * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR
   21  * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
   22  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
   23  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
   24  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
   25  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
   26  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   27  * SUCH DAMAGE.
   28  *
   29  */
   30 #ifndef _VXFS_INODE_H_
   31 #define _VXFS_INODE_H_
   32 
   33 #ident "$Id: vxfs_inode.h,v 1.15 2001/05/26 22:41:23 hch Exp hch $"
   34 
   35 /*
   36  * Veritas filesystem driver - inode structure.
   37  *
   38  * This file contains the definition of the disk and core
   39  * inodes of the Veritas Filesystem.
   40  */
   41 
   42 
   43 #define VXFS_ISIZE              0x100           /* Inode size */
   44 
   45 #define VXFS_NDADDR             10              /* Number of direct addrs in inode */
   46 #define VXFS_NIADDR             2               /* Number of indirect addrs in inode */
   47 #define VXFS_NIMMED             96              /* Size of immediate data in inode */
   48 #define VXFS_NTYPED             6               /* Num of typed extents */
   49 
   50 #define VXFS_TYPED_OFFSETMASK   (0x00FFFFFFFFFFFFFFULL)
   51 #define VXFS_TYPED_TYPEMASK     (0xFF00000000000000ULL)
   52 #define VXFS_TYPED_TYPESHIFT    56
   53 
   54 #define VXFS_TYPED_PER_BLOCK(sbp) \
   55         ((sbp)->s_blocksize / sizeof(struct vxfs_typed))
   56 
   57 /*
   58  * Possible extent descriptor types for %VXFS_ORG_TYPED extents.
   59  */
   60 enum {
   61         VXFS_TYPED_INDIRECT             = 1,
   62         VXFS_TYPED_DATA                 = 2,
   63         VXFS_TYPED_INDIRECT_DEV4        = 3,
   64         VXFS_TYPED_DATA_DEV4            = 4,
   65 };
   66 
   67 /*
   68  * Data stored immediately in the inode.
   69  */
   70 struct vxfs_immed {
   71         u_int8_t        vi_immed[VXFS_NIMMED];
   72 };
   73 
   74 struct vxfs_ext4 {
   75         u_int32_t               ve4_spare;              /* ?? */
   76         u_int32_t               ve4_indsize;            /* Indirect extent size */
   77         vx_daddr_t              ve4_indir[VXFS_NIADDR]; /* Indirect extents */
   78         struct direct {                                 /* Direct extents */
   79                 vx_daddr_t      extent;                 /* Extent number */
   80                 int32_t         size;                   /* Size of extent */
   81         } ve4_direct[VXFS_NDADDR];
   82 };
   83 
   84 struct vxfs_typed {
   85         u_int64_t       vt_hdr;         /* Header, 0xTTOOOOOOOOOOOOOO; T=type,O=offs */
   86         vx_daddr_t      vt_block;       /* Extent block */
   87         int32_t         vt_size;        /* Size in blocks */
   88 };
   89 
   90 struct vxfs_typed_dev4 {
   91         u_int64_t       vd4_hdr;        /* Header, 0xTTOOOOOOOOOOOOOO; T=type,O=offs */
   92         u_int64_t       vd4_block;      /* Extent block */
   93         u_int64_t       vd4_size;       /* Size in blocks */
   94         int32_t         vd4_dev;        /* Device ID */
   95         u_int32_t       __pad1;
   96 };
   97 
   98 /*
   99  * The inode as contained on the physical device.
  100  */
  101 struct vxfs_dinode {
  102         int32_t         vdi_mode;
  103         u_int32_t       vdi_nlink;      /* Link count */
  104         u_int32_t       vdi_uid;        /* UID */
  105         u_int32_t       vdi_gid;        /* GID */
  106         u_int64_t       vdi_size;       /* Inode size in bytes */
  107         u_int32_t       vdi_atime;      /* Last time accessed - sec */
  108         u_int32_t       vdi_autime;     /* Last time accessed - usec */
  109         u_int32_t       vdi_mtime;      /* Last modify time - sec */
  110         u_int32_t       vdi_mutime;     /* Last modify time - usec */
  111         u_int32_t       vdi_ctime;      /* Create time - sec */
  112         u_int32_t       vdi_cutime;     /* Create time - usec */
  113         u_int8_t        vdi_aflags;     /* Allocation flags */
  114         u_int8_t        vdi_orgtype;    /* Organisation type */
  115         u_int16_t       vdi_eopflags;
  116         u_int32_t       vdi_eopdata;
  117         union {
  118                 u_int32_t               rdev;
  119                 u_int32_t               dotdot;
  120                 struct {
  121                         u_int32_t       reserved;
  122                         u_int32_t       fixextsize;
  123                 } i_regular;
  124                 struct {
  125                         u_int32_t       matchino;
  126                         u_int32_t       fsetindex;
  127                 } i_vxspec;
  128                 u_int64_t               align;
  129         } vdi_ftarea;
  130         u_int32_t       vdi_blocks;     /* How much blocks does inode occupy */
  131         u_int32_t       vdi_gen;        /* Inode generation */
  132         u_int64_t       vdi_version;    /* Version */
  133         union {
  134                 struct vxfs_immed       immed;
  135                 struct vxfs_ext4        ext4;
  136                 struct vxfs_typed       typed[VXFS_NTYPED];
  137         } vdi_org;
  138         u_int32_t       vdi_iattrino;
  139 };
  140 
  141 #define vdi_rdev        vdi_ftarea.rdev
  142 #define vdi_dotdot      vdi_ftarea.dotdot
  143 #define vdi_fixextsize  vdi_ftarea.regular.fixextsize
  144 #define vdi_matchino    vdi_ftarea.vxspec.matchino
  145 #define vdi_fsetindex   vdi_ftarea.vxspec.fsetindex
  146 
  147 #define vdi_immed       vdi_org.immed
  148 #define vdi_ext4        vdi_org.ext4
  149 #define vdi_typed       vdi_org.typed
  150 
  151 
  152 /*
  153  * The inode as represented in the main memory.
  154  *
  155  * TBD: This should become a separate structure...
  156  */
  157 #define vxfs_inode_info vxfs_dinode
  158 
  159 #define vii_mode        vdi_mode
  160 #define vii_uid         vdi_uid
  161 #define vii_gid         vdi_gid
  162 #define vii_nlink       vdi_nlink
  163 #define vii_size        vdi_size
  164 #define vii_atime       vdi_atime
  165 #define vii_ctime       vdi_ctime
  166 #define vii_mtime       vdi_mtime
  167 #define vii_blocks      vdi_blocks
  168 #define vii_org         vdi_org
  169 #define vii_orgtype     vdi_orgtype
  170 #define vii_gen         vdi_gen
  171 
  172 #define vii_rdev        vdi_ftarea.rdev
  173 #define vii_dotdot      vdi_ftarea.dotdot
  174 #define vii_fixextsize  vdi_ftarea.regular.fixextsize
  175 #define vii_matchino    vdi_ftarea.vxspec.matchino
  176 #define vii_fsetindex   vdi_ftarea.vxspec.fsetindex
  177 
  178 #define vii_immed       vdi_org.immed
  179 #define vii_ext4        vdi_org.ext4
  180 #define vii_typed       vdi_org.typed
  181 
  182 #endif /* _VXFS_INODE_H_ */

Cache object: 5f461c71376e00b8add4e792a2388945


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.