1/* 2 * Copyright (c) 1982, 1989, 1993 3 * The Regents of the University of California. All rights reserved. 4 * (c) UNIX System Laboratories, Inc. 5 * All or some portions of this file are derived from material licensed 6 * to the University of California by American Telephone and Telegraph 7 * Co. or Unix System Laboratories, Inc. and are reproduced herein with 8 * the permission of UNIX System Laboratories, Inc. --- 22 unchanged lines hidden (view full) --- 31 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 32 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 33 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 34 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 35 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 36 * SUCH DAMAGE. 37 * 38 * @(#)inode.h 8.9 (Berkeley) 5/14/95 |
39 * $FreeBSD: head/sys/gnu/fs/ext2fs/inode.h 96877 2002-05-18 19:12:38Z iedowse $ |
40 */ 41 42#ifndef _SYS_GNU_EXT2FS_INODE_H_ 43#define _SYS_GNU_EXT2FS_INODE_H_ 44 45#include <sys/lock.h> 46#include <sys/queue.h> 47 --- 48 unchanged lines hidden (view full) --- 96 int16_t i_nlink; /* File link count. */ 97 u_int64_t i_size; /* File byte count. */ 98 int32_t i_atime; /* Last access time. */ 99 int32_t i_atimensec; /* Last access time. */ 100 int32_t i_mtime; /* Last modified time. */ 101 int32_t i_mtimensec; /* Last modified time. */ 102 int32_t i_ctime; /* Last inode change time. */ 103 int32_t i_ctimensec; /* Last inode change time. */ |
104 int32_t i_db[NDADDR]; /* Direct disk blocks. */ 105 int32_t i_ib[NIADDR]; /* Indirect disk blocks. */ |
106 u_int32_t i_flags; /* Status flags (chflags). */ 107 int32_t i_blocks; /* Blocks actually held. */ 108 int32_t i_gen; /* Generation number. */ 109 u_int32_t i_uid; /* File owner. */ 110 u_int32_t i_gid; /* File group. */ 111}; 112 113/* 114 * The di_db fields may be overlaid with other information for 115 * file types that do not have associated disk storage. Block 116 * and character devices overlay the first data block with their 117 * dev_t value. Short symbolic links place their path in the 118 * di_db area. 119 */ 120#define i_shortlink i_db 121#define i_rdev i_db[0] |
122#define MAXSYMLINKLEN ((NDADDR + NIADDR) * sizeof(int32_t)) |
123 124/* File permissions. */ 125#define IEXEC 0000100 /* Executable. */ 126#define IWRITE 0000200 /* Writeable. */ 127#define IREAD 0000400 /* Readable. */ 128#define ISVTX 0001000 /* Sticky bit. */ 129#define ISGID 0002000 /* Set-gid. */ 130#define ISUID 0004000 /* Set-uid. */ --- 17 unchanged lines hidden (view full) --- 148#define IN_RENAME 0x0010 /* Inode is being renamed. */ 149#define IN_HASHED 0x0020 /* Inode is on hash list */ 150#define IN_LAZYMOD 0x0040 /* Modified, but don't write yet. */ 151#define IN_SPACECOUNTED 0x0080 /* Blocks to be freed in free count. */ 152 153#ifdef _KERNEL 154/* 155 * Structure used to pass around logical block paths generated by |
156 * ext2_getlbns and used by truncate and bmap code. |
157 */ 158struct indir { |
159 int32_t in_lbn; /* Logical block number. */ |
160 int in_off; /* Offset in buffer. */ 161 int in_exists; /* Flag if the block exists. */ 162}; 163 164/* Convert between inode pointers and vnode pointers. */ 165#define VTOI(vp) ((struct inode *)(vp)->v_data) 166#define ITOV(ip) ((ip)->i_vnode) 167 168/* This overlays the fid structure (see mount.h). */ 169struct ufid { 170 u_int16_t ufid_len; /* Length of structure. */ 171 u_int16_t ufid_pad; /* Force 32-bit alignment. */ 172 ino_t ufid_ino; /* File number (ino). */ 173 int32_t ufid_gen; /* Generation number. */ 174}; 175#endif /* _KERNEL */ 176 177#endif /* !_SYS_GNU_EXT2FS_INODE_H_ */ |