]> git.karo-electronics.de Git - mv-sheeva.git/blobdiff - include/linux/jffs2.h
[JFFS2] Add erase block summary support (mount time improvement)
[mv-sheeva.git] / include / linux / jffs2.h
index a66d0a8b70e4ba4286a087c633d2a731efaa6a69..acb51a3669a2cf0506d4470e3933e5814cb2b6b7 100644 (file)
@@ -8,7 +8,7 @@
  * For licensing information, see the file 'LICENCE' in the 
  * jffs2 directory.
  *
- * $Id: jffs2.h,v 1.36 2005/07/26 13:19:36 havasi Exp $
+ * $Id: jffs2.h,v 1.37 2005/09/07 08:34:55 havasi Exp $
  *
  */
 
@@ -28,6 +28,9 @@
 #define JFFS2_EMPTY_BITMASK 0xffff
 #define JFFS2_DIRTY_BITMASK 0x0000
 
+/* Summary node MAGIC marker */
+#define JFFS2_SUM_MAGIC        0x02851885
+
 /* We only allow a single char for length, and 0xFF is empty flash so
    we don't want it confused with a real length. Hence max 254.
 */
@@ -60,6 +63,8 @@
 #define JFFS2_NODETYPE_CLEANMARKER (JFFS2_FEATURE_RWCOMPAT_DELETE | JFFS2_NODE_ACCURATE | 3)
 #define JFFS2_NODETYPE_PADDING (JFFS2_FEATURE_RWCOMPAT_DELETE | JFFS2_NODE_ACCURATE | 4)
 
+#define JFFS2_NODETYPE_SUMMARY (JFFS2_FEATURE_RWCOMPAT_DELETE | JFFS2_NODE_ACCURATE | 6)
+
 // Maybe later...
 //#define JFFS2_NODETYPE_CHECKPOINT (JFFS2_FEATURE_RWCOMPAT_DELETE | JFFS2_NODE_ACCURATE | 3)
 //#define JFFS2_NODETYPE_OPTIONS (JFFS2_FEATURE_RWCOMPAT_COPY | JFFS2_NODE_ACCURATE | 4)
@@ -146,10 +151,24 @@ struct jffs2_raw_inode
        uint8_t data[0];
 } __attribute__((packed));
 
+struct jffs2_summary_node{
+       jint16_t magic;
+       jint16_t nodetype;      /* = JFFS2_NODETYPE_INODE_SUM */
+       jint32_t totlen;
+       jint32_t hdr_crc;
+       jint32_t sum_num;       /* number of sum entries*/
+       jint32_t cln_mkr;       /* clean marker size, 0 = no cleanmarker */
+       jint32_t padded;        /* sum of the size of padding nodes */
+       jint32_t sum_crc;       /* summary information crc */
+       jint32_t node_crc;      /* node crc */
+       jint32_t sum[0];        /* inode summary info */
+} __attribute__((packed));
+
 union jffs2_node_union {
        struct jffs2_raw_inode i;
        struct jffs2_raw_dirent d;
        struct jffs2_unknown_node u;
+       struct jffs2_summary_node s;
 };
 
 #endif /* __LINUX_JFFS2_H__ */