delete VERBOSE #ifdef's
[unix-history] / usr / src / sys / ufs / ffs / inode.h
index ae06ac2..6b56de2 100644 (file)
@@ -4,11 +4,20 @@
  *
  * %sccs.include.redist.c%
  *
  *
  * %sccs.include.redist.c%
  *
- *     @(#)inode.h     7.22 (Berkeley) %G%
+ *     @(#)inode.h     7.29 (Berkeley) %G%
  */
 
 #include <ufs/ufs/dinode.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
 /*
  * The inode is used to describe each active (or recently active)
  * file in the UFS filesystem. It is composed of two types of
  * being used.
  */
 struct inode {
  * being used.
  */
 struct inode {
-       struct  inode *i_chain[2]; /* hash chain, MUST be first */
+       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;         /* see below */
        dev_t   i_dev;          /* device where inode resides */
        struct  vnode *i_vnode; /* vnode associated with this inode */
        struct  vnode *i_devvp; /* vnode for block I/O */
        u_long  i_flag;         /* see below */
        dev_t   i_dev;          /* device where inode resides */
-       short   i_pad;
        ino_t   i_number;       /* the identity of the inode */
        union {                 /* associated filesystem */
                struct  fs *fs;         /* FFS */
        ino_t   i_number;       /* the identity of the inode */
        union {                 /* associated filesystem */
                struct  fs *fs;         /* FFS */
@@ -35,16 +44,16 @@ struct inode {
 #define        i_fs    inode_u.fs
 #define        i_lfs   inode_u.lfs
        struct  dquot *i_dquot[MAXQUOTAS]; /* pointer to dquot structures */
 #define        i_fs    inode_u.fs
 #define        i_lfs   inode_u.lfs
        struct  dquot *i_dquot[MAXQUOTAS]; /* pointer to dquot structures */
-       struct  lockf *i_lockf; /* head of byte-level lock list */
        u_quad_t i_modrev;      /* revision level for lease */
        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 */
        /*
         * Side effects; used during directory lookup.
         */
        pid_t   i_lockholder;   /* DEBUG: holder of inode lock */
        pid_t   i_lockwaiter;   /* DEBUG: latest blocked for inode lock */
        /*
         * Side effects; used during directory lookup.
         */
-       off_t   i_endoff;       /* end of useful stuff in directory */
-       long    i_diroff;       /* offset in dir, where we found last entry */
-       long    i_offset;       /* offset of free space 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 */
        long    i_count;        /* size of free slot in directory */
        ino_t   i_ino;          /* inode number of found directory */
        u_long  i_reclen;       /* size of found directory entry */
        long    i_count;        /* size of free slot in directory */
        ino_t   i_ino;          /* inode number of found directory */
        u_long  i_reclen;       /* size of found directory entry */
@@ -59,26 +68,17 @@ struct inode {
 #define        i_nlink         i_din.di_nlink
 #define        i_uid           i_din.di_uid
 #define        i_gid           i_din.di_gid
 #define        i_nlink         i_din.di_nlink
 #define        i_uid           i_din.di_uid
 #define        i_gid           i_din.di_gid
-#ifdef _NOQUAD
-#define i_size i_din.di_qsize.val[_QUAD_LOWWORD]
-#else
-#define i_size i_din.di_qsize
-#endif
-#if defined(tahoe) /* ugh! -- must be fixed */
-#undef i_size
-#define        i_size          i_din.di_qsize.val[0]
-#endif
+#define i_size         i_din.di_size
 #define        i_db            i_din.di_db
 #define        i_ib            i_din.di_ib
 #define        i_atime         i_din.di_atime
 #define        i_mtime         i_din.di_mtime
 #define        i_ctime         i_din.di_ctime
 #define i_blocks       i_din.di_blocks
 #define        i_db            i_din.di_db
 #define        i_ib            i_din.di_ib
 #define        i_atime         i_din.di_atime
 #define        i_mtime         i_din.di_mtime
 #define        i_ctime         i_din.di_ctime
 #define i_blocks       i_din.di_blocks
-#define        i_rdev          i_din.di_db[0]
+#define        i_rdev          i_din.di_rdev
+#define        i_shortlink     i_din.di_shortlink
 #define i_flags                i_din.di_flags
 #define i_gen          i_din.di_gen
 #define i_flags                i_din.di_flags
 #define i_gen          i_din.di_gen
-#define        i_forw          i_chain[0]
-#define        i_back          i_chain[1]
 
 /* flags */
 #define        ILOCKED         0x0001          /* inode is locked */
 
 /* flags */
 #define        ILOCKED         0x0001          /* inode is locked */
@@ -123,13 +123,13 @@ struct inode {
        if ((ip)->i_flag&(IUPD|IACC|ICHG)) { \
                (ip)->i_flag |= IMOD; \
                if ((ip)->i_flag&IACC) \
        if ((ip)->i_flag&(IUPD|IACC|ICHG)) { \
                (ip)->i_flag |= IMOD; \
                if ((ip)->i_flag&IACC) \
-                       (ip)->i_atime = (t1)->tv_sec; \
+                       (ip)->i_atime.ts_sec = (t1)->tv_sec; \
                if ((ip)->i_flag&IUPD) { \
                if ((ip)->i_flag&IUPD) { \
-                       (ip)->i_mtime = (t2)->tv_sec; \
-                       INCRQUAD((ip)->i_modrev); \
+                       (ip)->i_mtime.ts_sec = (t2)->tv_sec; \
+                       (ip)->i_modrev++; \
                } \
                if ((ip)->i_flag&ICHG) \
                } \
                if ((ip)->i_flag&ICHG) \
-                       (ip)->i_ctime = time.tv_sec; \
+                       (ip)->i_ctime.ts_sec = time.tv_sec; \
                (ip)->i_flag &= ~(IACC|IUPD|ICHG); \
        } \
 }
                (ip)->i_flag &= ~(IACC|IUPD|ICHG); \
        } \
 }