]> git.saurik.com Git - apple/xnu.git/blobdiff - bsd/ufs/ffs/fs.h
xnu-344.23.tar.gz
[apple/xnu.git] / bsd / ufs / ffs / fs.h
index db4436dac7875760e774071469f4e41a627e3267..6af9664504d303c410da013ed46be1be3b346a43 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000 Apple Computer, Inc. All rights reserved.
+ * Copyright (c) 2000-2002 Apple Computer, Inc. All rights reserved.
  *
  * @APPLE_LICENSE_HEADER_START@
  * 
@@ -57,6 +57,9 @@
 #ifndef _FFS_FS_H_
 #define _FFS_FS_H_
 
+#include <sys/appleapiopts.h>
+
+#ifdef __APPLE_API_UNSTABLE
 /*
  * Each disk drive contains some number of file systems.
  * A file system consists of a number of cylinder groups.
  * 32-bit pointers, and 1 million on 64-bit machines). One pointer
  * is taken away to point to an array of cluster sizes that is
  * computed as cylinder groups are inspected.
+ * There is a 128-byte region in the superblock reserved for in-core
+ * pointers to summary information. Originally this included an array
+ * of pointers to blocks of struct csum; now there are just two
+ * pointers and the remaining space is padded with fs_ocsp[].
+ *
+ * NOCSPTRS determines the size of this padding. One pointer (fs_csp)
+ * is taken away to point to a contiguous array of struct csum for
+ * all cylinder groups; a second (fs_maxcluster) points to an array
+ * of cluster sizes that is computed as cylinder groups are inspected.
  */
-#define        MAXCSBUFS       ((128 / sizeof(void *)) - 1)
+#define NOCSPTRS ((128 / sizeof(void *)) - 2)
+
 
 /*
  * A summary of contiguous blocks of various sizes is maintained
  * from first cylinder group data blocks.  These blocks have to be
  * read in from fs_csaddr (size fs_cssize) in addition to the
  * super block.
- *
- * N.B. sizeof(struct csum) must be a power of two in order for
- * the ``fs_cs'' macro to work (see below).
  */
 struct csum {
        int32_t cs_ndir;                /* number of directories */
@@ -209,8 +219,8 @@ struct fs {
        int32_t  fs_fragshift;          /* block to frag shift */
        int32_t  fs_fsbtodb;            /* fsbtodb and dbtofsb shift constant */
        int32_t  fs_sbsize;             /* actual size of super block */
-       int32_t  fs_csmask;             /* csum block offset */
-       int32_t  fs_csshift;            /* csum block number */
+       int32_t  fs_csmask;             /* csum block offset (now unused) */
+       int32_t  fs_csshift;            /* csum block number (now unused) */
        int32_t  fs_nindir;             /* value of NINDIR */
        int32_t  fs_inopb;              /* value of INOPB */
        int32_t  fs_nspf;               /* value of NSPF */
@@ -246,7 +256,8 @@ struct fs {
        u_char   fs_fsmnt[MAXMNTLEN];   /* name mounted on */
 /* these fields retain the current block allocation info */
        int32_t  fs_cgrotor;            /* last cg searched */
-       struct  csum *fs_csp[MAXCSBUFS];/* list of fs_cs info buffers */
+       void    *fs_ocsp[NOCSPTRS];     /* list of fs_cs info buffers */
+       struct  csum *fs_csp;           /* list of fs_cs info buffers */
        int32_t  *fs_maxcluster;        /* max cluster in each cyl group */
        int32_t  fs_cpc;                /* cyl per cycle in postbl */
        int16_t  fs_opostbl[16][8];     /* old rotation block list head */
@@ -319,8 +330,7 @@ struct fs {
  *
  * N.B. This macro assumes that sizeof(struct csum) is a power of two.
  */
-#define fs_cs(fs, indx) \
-       fs_csp[(indx) >> (fs)->fs_csshift][(indx) & ~(fs)->fs_csmask]
+#define fs_cs(fs, indx) fs_csp[indx]
 
 /*
  * Cylinder group block for a file system.
@@ -527,8 +537,10 @@ struct ocg {
  */
 #define        BIG_ENDIAN_FS   (__LITTLE_ENDIAN__)
 
+#ifdef __APPLE_API_PRIVATE
 extern int inside[], around[];
 extern u_char *fragtbl[];
+#endif /* __APPLE_API_PRIVATE */
 
 
 /*
@@ -551,8 +563,10 @@ struct ufslabel {
     u_int32_t          ul_time;        /* creation time */
     u_int16_t          ul_namelen;     /* filesystem name length */
     u_char             ul_name[UFS_MAX_LABEL_NAME]; /* filesystem name */
-    u_char             ul_reserved[32];/* reserved for future use */
+    u_int64_t          ul_uuid;        /* filesystem uuid */
+    u_char             ul_reserved[24];/* reserved for future use */
     u_char             ul_unused[460]; /* pad out to 1K */
 };
 
+#endif /* __APPLE_API_UNSTABLE */
 #endif /* ! _FFS_FS_H_ */