aboutsummaryrefslogtreecommitdiff
path: root/sys/gnu/fs/ext2fs/inode.h
diff options
context:
space:
mode:
authorJohn Dyson <dyson@FreeBSD.org>1997-02-10 02:22:35 +0000
committerJohn Dyson <dyson@FreeBSD.org>1997-02-10 02:22:35 +0000
commit996c772f581f5624846dcd8470ca6860c1678b7c (patch)
tree88a944de263165091f0a18abeedbaaccec532407 /sys/gnu/fs/ext2fs/inode.h
parentd243e2f7f456304830e7f832629bc24c504c2385 (diff)
downloadsrc-996c772f581f5624846dcd8470ca6860c1678b7c.tar.gz
src-996c772f581f5624846dcd8470ca6860c1678b7c.zip
This is the kernel Lite/2 commit. There are some requisite userland
changes, so don't expect to be able to run the kernel as-is (very well) without the appropriate Lite/2 userland changes. The system boots and can mount UFS filesystems. Untested: ext2fs, msdosfs, NFS Known problems: Incorrect Berkeley ID strings in some files. Mount_std mounts will not work until the getfsent library routine is changed. Reviewed by: various people Submitted by: Jeffery Hsu <hsu@freebsd.org>
Notes
Notes: svn path=/head/; revision=22521
Diffstat (limited to 'sys/gnu/fs/ext2fs/inode.h')
-rw-r--r--sys/gnu/fs/ext2fs/inode.h100
1 files changed, 45 insertions, 55 deletions
diff --git a/sys/gnu/fs/ext2fs/inode.h b/sys/gnu/fs/ext2fs/inode.h
index dc19d34ecdfb..438471fb3d93 100644
--- a/sys/gnu/fs/ext2fs/inode.h
+++ b/sys/gnu/fs/ext2fs/inode.h
@@ -35,42 +35,33 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * @(#)inode.h 8.4 (Berkeley) 1/21/94
+ * @(#)inode.h 8.9 (Berkeley) 5/14/95
* $FreeBSD$
*/
#ifndef _UFS_UFS_INODE_H_
#define _UFS_UFS_INODE_H_
+#include <ufs/ufs/dir.h>
#include <ufs/ufs/dinode.h>
/*
- * Theoretically, directories can be more than 2Gb in length, however, in
- * practice this seems unlikely. So, we define the type doff_t as a long
- * to keep down the cost of doing lookup on a 32-bit machine. If you are
- * porting to a 64-bit architecture, you should make doff_t the same as off_t.
- */
-#define doff_t long
-
-/*
- * The inode is used to describe each active (or recently active)
- * file in the UFS filesystem. It is composed of two types of
- * information. The first part is the information that is needed
- * only while the file is active (such as the identity of the file
- * and linkage to speed its lookup). The second part is the
- * permanent meta-data associated with the file which is read
- * in from the permanent dinode from long term storage when the
- * file becomes active, and is put back when the file is no longer
- * being used.
+ * The inode is used to describe each active (or recently active) file in the
+ * UFS filesystem. It is composed of two types of information. The first part
+ * is the information that is needed only while the file is active (such as
+ * the identity of the file and linkage to speed its lookup). The second part
+ * is the permanent meta-data associated with the file which is read in
+ * from the permanent dinode from long term storage when the file becomes
+ * active, and is put back when the file is no longer being used.
*/
struct inode {
- struct inode *i_next; /* Hash chain forward. */
- struct inode **i_prev; /* Hash chain back. */
- struct vnode *i_vnode; /* Vnode associated with this inode. */
- struct vnode *i_devvp; /* Vnode for block I/O. */
- u_long i_flag; /* I* flags. */
- dev_t i_dev; /* Device associated with the inode. */
- ino_t i_number; /* The identity of the inode. */
+ LIST_ENTRY(inode) i_hash;/* Hash chain. */
+ struct vnode *i_vnode;/* Vnode associated with this inode. */
+ struct vnode *i_devvp;/* Vnode for block I/O. */
+ u_int32_t i_flag; /* flags, see below */
+ dev_t i_dev; /* Device associated with the inode. */
+ ino_t i_number; /* The identity of the inode. */
+
union { /* Associated filesystem. */
struct fs *fs; /* FFS */
struct lfs *lfs; /* LFS */
@@ -79,22 +70,21 @@ struct inode {
#define i_fs inode_u.fs
#define i_lfs inode_u.lfs
#define i_e2fs inode_u.e2fs
- struct dquot *i_dquot[MAXQUOTAS]; /* Dquot structures. */
- u_quad_t i_modrev; /* Revision level for lease. */
- struct lockf *i_lockf; /* Head of byte-level lock list. */
- pid_t i_lockholder; /* DEBUG: holder of inode lock. */
- pid_t i_lockwaiter; /* DEBUG: latest blocked for inode lock. */
+ struct dquot *i_dquot[MAXQUOTAS]; /* Dquot structures. */
+ u_quad_t i_modrev; /* Revision level for NFS lease. */
+ struct lockf *i_lockf;/* Head of byte-level lock list. */
+ struct lock i_lock; /* Inode lock. */
/*
* Side effects; used during directory lookup.
*/
- long i_count; /* Size of free slot in directory. */
- doff_t i_endoff; /* End of useful stuff in directory. */
- doff_t i_diroff; /* Offset in dir, where we found last entry. */
- doff_t i_offset; /* Offset of free space in directory. */
- ino_t i_ino; /* Inode number of found directory. */
- u_long i_reclen; /* Size of found directory entry. */
- int i_lockcount; /* Process lock count (recursion) */
- long i_spare[10]; /* Spares to round up to 128 bytes. */
+ int32_t i_count; /* Size of free slot in directory. */
+ doff_t i_endoff; /* End of useful stuff in directory. */
+ doff_t i_diroff; /* Offset in dir, where we found last entry. */
+ doff_t i_offset; /* Offset of free space in directory. */
+ ino_t i_ino; /* Inode number of found directory. */
+ u_int32_t i_reclen; /* Size of found directory entry. */
+ int i_lockcount; /* Process lock count (recursion) */
+ int i_spare[10]; /* XXX spare storage (for ext2fs) */
/*
* The on-disk dinode itself.
*/
@@ -102,8 +92,10 @@ struct inode {
};
#define i_atime i_din.di_atime
+#define i_atimensec i_din.di_atimensec
#define i_blocks i_din.di_blocks
#define i_ctime i_din.di_ctime
+#define i_ctimensec i_din.di_ctimensec
#define i_db i_din.di_db
#define i_flags i_din.di_flags
#define i_gen i_din.di_gen
@@ -111,6 +103,7 @@ struct inode {
#define i_ib i_din.di_ib
#define i_mode i_din.di_mode
#define i_mtime i_din.di_mtime
+#define i_mtimensec i_din.di_mtimensec
#define i_nlink i_din.di_nlink
#define i_rdev i_din.di_rdev
#define i_shortlink i_din.di_shortlink
@@ -120,15 +113,12 @@ struct inode {
/* These flags are kept in i_flag. */
#define IN_ACCESS 0x0001 /* Access time update request. */
#define IN_CHANGE 0x0002 /* Inode change time update request. */
-#define IN_EXLOCK 0x0004 /* File has exclusive lock. */
-#define IN_LOCKED 0x0008 /* Inode lock. */
-#define IN_LWAIT 0x0010 /* Process waiting on file lock. */
-#define IN_MODIFIED 0x0020 /* Inode has been modified. */
-#define IN_RENAME 0x0040 /* Inode is being renamed. */
-#define IN_SHLOCK 0x0080 /* File has shared lock. */
-#define IN_UPDATE 0x0100 /* Modification time update request. */
-#define IN_WANTED 0x0200 /* Inode is wanted by a process. */
-#define IN_RECURSE 0x0400 /* Recursion expected */
+#define IN_UPDATE 0x0004 /* Modification time update request. */
+#define IN_MODIFIED 0x0008 /* Inode has been modified. */
+#define IN_RENAME 0x0010 /* Inode is being renamed. */
+#define IN_SHLOCK 0x0020 /* File has shared lock. */
+#define IN_EXLOCK 0x0040 /* File has exclusive lock. */
+#define IN_RECURSE 0x0080 /* Recursion expected */
#ifdef KERNEL
/*
@@ -136,7 +126,7 @@ struct inode {
* ufs_getlbns and used by truncate and bmap code.
*/
struct indir {
- daddr_t in_lbn; /* Logical block number. */
+ ufs_daddr_t in_lbn; /* Logical block number. */
int in_off; /* Offset in buffer. */
int in_exists; /* Flag if the block exists. */
};
@@ -155,25 +145,25 @@ struct indir {
if ((ip)->i_flag & (IN_ACCESS | IN_CHANGE | IN_UPDATE)) { \
(ip)->i_flag |= IN_MODIFIED; \
if ((ip)->i_flag & IN_ACCESS) \
- (ip)->i_atime.tv_sec \
+ (ip)->i_atime \
= ((t1) == &time ? tv_sec : (t1)->tv_sec); \
if ((ip)->i_flag & IN_UPDATE) { \
- (ip)->i_mtime.tv_sec \
+ (ip)->i_mtime \
= ((t2) == &time ? tv_sec : (t2)->tv_sec); \
(ip)->i_modrev++; \
} \
if ((ip)->i_flag & IN_CHANGE) \
- (ip)->i_ctime.tv_sec = tv_sec; \
+ (ip)->i_ctime = tv_sec; \
(ip)->i_flag &= ~(IN_ACCESS | IN_CHANGE | IN_UPDATE); \
} \
}
/* This overlays the fid structure (see mount.h). */
struct ufid {
- u_short ufid_len; /* Length of structure. */
- u_short ufid_pad; /* Force long alignment. */
- ino_t ufid_ino; /* File number (ino). */
- long ufid_gen; /* Generation number. */
+ u_int16_t ufid_len; /* Length of structure. */
+ u_int16_t ufid_pad; /* Force 32-bit alignment. */
+ ino_t ufid_ino; /* File number (ino). */
+ int32_t ufid_gen; /* Generation number. */
};
#endif /* KERNEL */