1 | /*␊ |
2 | * Copyright (c) 2000-2008 Apple, Inc. All rights reserved.␊ |
3 | *␊ |
4 | * @APPLE_OSREFERENCE_LICENSE_HEADER_START@␊ |
5 | * ␊ |
6 | * This file contains Original Code and/or Modifications of Original Code␊ |
7 | * as defined in and that are subject to the Apple Public Source License␊ |
8 | * Version 2.0 (the 'License'). You may not use this file except in␊ |
9 | * compliance with the License. The rights granted to you under the License␊ |
10 | * may not be used to create, or enable the creation or redistribution of,␊ |
11 | * unlawful or unlicensed copies of an Apple operating system, or to␊ |
12 | * circumvent, violate, or enable the circumvention or violation of, any␊ |
13 | * terms of an Apple operating system software license agreement.␊ |
14 | * ␊ |
15 | * Please obtain a copy of the License at␊ |
16 | * http://www.opensource.apple.com/apsl/ and read it before using this file.␊ |
17 | * ␊ |
18 | * The Original Code and all software distributed under the License are␊ |
19 | * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER␊ |
20 | * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,␊ |
21 | * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,␊ |
22 | * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.␊ |
23 | * Please see the License for the specific language governing rights and␊ |
24 | * limitations under the License.␊ |
25 | * ␊ |
26 | * @APPLE_OSREFERENCE_LICENSE_HEADER_END@␊ |
27 | */␊ |
28 | /* Copyright (c) 1995 NeXT Computer, Inc. All Rights Reserved */␊ |
29 | /*␊ |
30 | * Copyright (c) 1982, 1989, 1993␊ |
31 | *␉The Regents of the University of California. All rights reserved.␊ |
32 | * (c) UNIX System Laboratories, Inc.␊ |
33 | * All or some portions of this file are derived from material licensed␊ |
34 | * to the University of California by American Telephone and Telegraph␊ |
35 | * Co. or Unix System Laboratories, Inc. and are reproduced herein with␊ |
36 | * the permission of UNIX System Laboratories, Inc.␊ |
37 | *␊ |
38 | * Redistribution and use in source and binary forms, with or without␊ |
39 | * modification, are permitted provided that the following conditions␊ |
40 | * are met:␊ |
41 | * 1. Redistributions of source code must retain the above copyright␊ |
42 | * notice, this list of conditions and the following disclaimer.␊ |
43 | * 2. Redistributions in binary form must reproduce the above copyright␊ |
44 | * notice, this list of conditions and the following disclaimer in the␊ |
45 | * documentation and/or other materials provided with the distribution.␊ |
46 | * 3. All advertising materials mentioning features or use of this software␊ |
47 | * must display the following acknowledgement:␊ |
48 | *␉This product includes software developed by the University of␊ |
49 | *␉California, Berkeley and its contributors.␊ |
50 | * 4. Neither the name of the University nor the names of its contributors␊ |
51 | * may be used to endorse or promote products derived from this software␊ |
52 | * without specific prior written permission.␊ |
53 | *␊ |
54 | * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND␊ |
55 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE␊ |
56 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE␊ |
57 | * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE␊ |
58 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL␊ |
59 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS␊ |
60 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)␊ |
61 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT␊ |
62 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY␊ |
63 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF␊ |
64 | * SUCH DAMAGE.␊ |
65 | *␊ |
66 | *␉@(#)inode.h␉8.9 (Berkeley) 5/14/95␊ |
67 | */␊ |
68 | #ifndef _UFS_INDOE_H_␊ |
69 | #define _UFS_INDOE_H_␊ |
70 | ␊ |
71 | #include <sys/appleapiopts.h>␊ |
72 | ␊ |
73 | #ifdef __APPLE_API_PRIVATE␊ |
74 | #include <ufs/ufs/dir.h>␊ |
75 | #include <ufs/ufs/dinode.h>␊ |
76 | #include <sys/queue.h>␊ |
77 | #include <sys/event.h>␊ |
78 | #include <sys/lock.h>␊ |
79 | #include <sys/quota.h>␊ |
80 | ␊ |
81 | /*␊ |
82 | * The inode is used to describe each active (or recently active) file in the␊ |
83 | * UFS filesystem. It is composed of two types of information. The first part␊ |
84 | * is the information that is needed only while the file is active (such as␊ |
85 | * the identity of the file and linkage to speed its lookup). The second part␊ |
86 | * is * the permanent meta-data associated with the file which is read in␊ |
87 | * from the permanent dinode from long term storage when the file becomes␊ |
88 | * active, and is put back when the file is no longer being used.␊ |
89 | */␊ |
90 | struct inode {␊ |
91 | ␉LIST_ENTRY(inode) i_hash;/* Hash chain. */␊ |
92 | ␉struct␉vnode *i_vnode;/* Vnode associated with this inode. */␊ |
93 | ␉struct␉vnode *i_devvp;/* Vnode for block I/O. */␊ |
94 | ␉u_int32_t i_flag;␉/* flags, see below */␊ |
95 | ␉dev_t␉ i_dev;␉/* Device associated with the inode. */␊ |
96 | ␉ino_t␉ i_number;␉/* The identity of the inode. */␊ |
97 | ␊ |
98 | ␉union {␉␉␉/* Associated filesystem. */␊ |
99 | ␉␉struct␉fs *fs;␉␉/* FFS */␊ |
100 | ␉} inode_u;␊ |
101 | #define␉i_fs␉inode_u.fs␊ |
102 | ␊ |
103 | ␉struct␉ dquot *i_dquot[MAXQUOTAS]; /* Dquot structures. */␊ |
104 | ␉u_quad_t i_modrev;␉/* Revision level for NFS lease. */␊ |
105 | ␉void␉ *i_lockf;␉/* DEPRECATED */␊ |
106 | ␊ |
107 | ␉/*␊ |
108 | ␉ * Side effects; used during directory lookup.␊ |
109 | ␉ */␊ |
110 | ␉int32_t␉ i_count;␉/* Size of free slot in directory. */␊ |
111 | ␉doff_t␉ i_endoff;␉/* End of useful stuff in directory. */␊ |
112 | ␉doff_t␉ i_diroff;␉/* Offset in dir, where we found last entry. */␊ |
113 | ␉doff_t␉ i_offset;␉/* Offset of free space in directory. */␊ |
114 | ␉ino_t␉ i_ino;␉/* Inode number of found directory. */␊ |
115 | ␉u_int32_t i_reclen;␉/* Size of found directory entry. */␊ |
116 | daddr_t␉ i_lastr;␉/* last read... read-ahead */␊ |
117 | ␉/*␊ |
118 | ␉ * The on-disk dinode itself.␊ |
119 | ␉ */␊ |
120 | ␉struct␉dinode i_din;␉/* 128 bytes of the on-disk dinode. */␊ |
121 | };␊ |
122 | ␊ |
123 | #define␉i_atime␉␉i_din.di_atime␊ |
124 | #define␉i_atimensec␉i_din.di_atimensec␊ |
125 | #define␉i_blocks␉i_din.di_blocks␊ |
126 | #define␉i_ctime␉␉i_din.di_ctime␊ |
127 | #define␉i_ctimensec␉i_din.di_ctimensec␊ |
128 | #define␉i_db␉␉i_din.di_db␊ |
129 | #define␉i_flags␉␉i_din.di_flags␊ |
130 | #define␉i_gen␉␉i_din.di_gen␊ |
131 | #define␉i_gid␉␉i_din.di_gid␊ |
132 | #define␉i_ib␉␉i_din.di_ib␊ |
133 | #define␉i_mode␉␉i_din.di_mode␊ |
134 | #define␉i_mtime␉␉i_din.di_mtime␊ |
135 | #define␉i_mtimensec␉i_din.di_mtimensec␊ |
136 | #define␉i_nlink␉␉i_din.di_nlink␊ |
137 | #define␉i_rdev␉␉i_din.di_rdev␊ |
138 | #define␉i_shortlink␉i_din.di_shortlink␊ |
139 | #define␉i_size␉␉i_din.di_size␊ |
140 | #define␉i_uid␉␉i_din.di_uid␊ |
141 | #define␉i_spare␉␉i_din.di_spare␊ |
142 | #define␉i_oldids␉i_din.di_u.oldids␊ |
143 | #define␉i_inumber␉i_din.di_u.inumber␊ |
144 | ␊ |
145 | /* These flags are kept in i_flag. */␊ |
146 | #define␉IN_ACCESS␉0x0001␉␉/* Access time update request. */␊ |
147 | #define␉IN_CHANGE␉0x0002␉␉/* Inode change time update request. */␊ |
148 | #define␉IN_UPDATE␉0x0004␉␉/* Modification time update request. */␊ |
149 | #define␉IN_MODIFIED␉0x0008␉␉/* Inode has been modified. */␊ |
150 | #define␉IN_RENAME␉0x0010␉␉/* Inode is being renamed. */␊ |
151 | #define␉IN_SHLOCK␉0x0020␉␉/* File has shared lock. */␊ |
152 | #define␉IN_EXLOCK␉0x0040␉␉/* File has exclusive lock. */␊ |
153 | #define␉IN_TRANSIT␉0x0080␉␉/* inode is getting recycled */␊ |
154 | #define␉IN_WTRANSIT␉0x0100␉␉/* waiting for inode getting recycled */␊ |
155 | #define␉IN_ALLOC␉0x0200␉␉/* being allocated */␊ |
156 | #define␉IN_WALLOC␉0x0400␉␉/* waiting for allocation to be done */␊ |
157 | ␊ |
158 | ␊ |
159 | #endif /* __APPLE_API_PRIVATE */␊ |
160 | #endif /* ! _UFS_INDOE_H_ */␊ |
161 | |