Yaffs Clean ups
[yaffs2.git] / yaffs_guts.h
index 98b607ab2b2f7cec8684e81d68e3690469c8bdd8..397aae8cc9c838abcbceca3d9008d94212338643 100644 (file)
@@ -144,12 +144,12 @@ struct yaffs_cache {
  */
 
 struct yaffs_tags {
-       unsigned chunk_id:20;
-       unsigned serial_number:2;
-       unsigned n_bytes_lsb:10;
-       unsigned obj_id:18;
-       unsigned ecc:12;
-       unsigned n_bytes_msb:2;
+       u32 chunk_id:20;
+       u32 serial_number:2;
+       u32 n_bytes_lsb:10;
+       u32 obj_id:18;
+       u32 ecc:12;
+       u32 n_bytes_msb:2;
 };
 
 union yaffs_tags_union {
@@ -163,6 +163,7 @@ union yaffs_tags_union {
 enum yaffs_ecc_result {
        YAFFS_ECC_RESULT_UNKNOWN,
        YAFFS_ECC_RESULT_NO_ERROR,
+       YAFFS_ECC_RESULT_REFRESH,
        YAFFS_ECC_RESULT_FIXED,
        YAFFS_ECC_RESULT_UNFIXED
 };
@@ -287,9 +288,9 @@ enum yaffs_block_state {
 
 struct yaffs_block_info {
 
-       int soft_del_pages:10;  /* number of soft deleted pages */
-       int pages_in_use:10;    /* number of pages in use */
-       unsigned block_state:4; /* One of the above block states. */
+       s32 soft_del_pages:10;  /* number of soft deleted pages */
+       s32 pages_in_use:10;    /* number of pages in use */
+       u32 block_state:4;      /* One of the above block states. */
                                /* NB use unsigned because enum is sometimes
                                 * an int */
        u32 needs_retiring:1;   /* Data has failed on this block, */
@@ -688,8 +689,8 @@ struct yaffs_dev {
        /* Block Info */
        struct yaffs_block_info *block_info;
        u8 *chunk_bits;         /* bitmap of chunks in use */
-       unsigned block_info_alt:1;      /* allocated using alternative alloc */
-       unsigned chunk_bits_alt:1;      /* allocated using alternative alloc */
+       u8 block_info_alt:1;    /* allocated using alternative alloc */
+       u8 chunk_bits_alt:1;    /* allocated using alternative alloc */
        int chunk_bit_stride;   /* Number of bytes of chunk_bits per block.
                                 * Must be consistent with chunks_per_block.
                                 */
@@ -876,10 +877,13 @@ struct yaffs_obj *yaffs_create_file(struct yaffs_obj *parent,
                                    const YCHAR *name, u32 mode, u32 uid,
                                    u32 gid);
 
-int yaffs_flush_file(struct yaffs_obj *obj, int update_time, int data_sync);
+int yaffs_flush_file(struct yaffs_obj *in,
+                    int update_time,
+                    int data_sync,
+                    int discard_cache);
 
 /* Flushing and checkpointing */
-void yaffs_flush_whole_cache(struct yaffs_dev *dev);
+void yaffs_flush_whole_cache(struct yaffs_dev *dev, int discard);
 
 int yaffs_checkpoint_save(struct yaffs_dev *dev);
 int yaffs_checkpoint_restore(struct yaffs_dev *dev);
@@ -937,7 +941,8 @@ void yaffs_chunk_del(struct yaffs_dev *dev, int chunk_id, int mark_flash,
                     int lyn);
 int yaffs_check_ff(u8 *buffer, int n_bytes);
 void yaffs_handle_chunk_error(struct yaffs_dev *dev,
-                             struct yaffs_block_info *bi);
+                             struct yaffs_block_info *bi,
+                             enum yaffs_ecc_result err_type);
 
 u8 *yaffs_get_temp_buffer(struct yaffs_dev *dev);
 void yaffs_release_temp_buffer(struct yaffs_dev *dev, u8 *buffer);