New yaffs2_image_maker tool to work with 4kB pages - still under test
[yaffs2.git] / yaffs_guts.h
index 974396ff65c6b770239fbcbdafe21aff91b01778..96fd547c40d47b629d41679cf26bf1a2521b04fa 100644 (file)
@@ -1,8 +1,7 @@
 /*
  * YAFFS: Yet another Flash File System . A NAND-flash specific file system.
  *
- * Copyright (C) 2002-2011 Aleph One Ltd.
- *   for Toby Churchill Ltd and Brightstar Engineering
+ * Copyright (C) 2002-2018 Aleph One Ltd.
  *
  * Created by Charles Manning <charles@aleph1.co.uk>
  *
 /* Special sequence number for bad block that failed to be marked bad */
 #define YAFFS_SEQUENCE_BAD_BLOCK       0xffff0000
 
-/* ChunkCache is used for short read/write operations.*/
+/* Chunk cache is used for short read/write operations.*/
 struct yaffs_cache {
        struct yaffs_obj *object;
        int chunk_id;
@@ -137,6 +136,13 @@ struct yaffs_cache {
        u8 *data;
 };
 
+struct yaffs_cache_manager {
+       struct yaffs_cache *cache;
+       int n_caches;
+       int cache_last_use;
+       int n_temp_buffers;
+};
+
 /* yaffs1 tags structures in RAM
  * NB This uses bitfield. Bitfields should not straddle a u32 boundary
  * otherwise the structure size will get blown out.
@@ -742,8 +748,7 @@ struct yaffs_dev {
        int buffered_block;     /* Which block is buffered here? */
        int doing_buffered_block_rewrite;
 
-       struct yaffs_cache *cache;
-       int cache_last_use;
+       struct yaffs_cache_manager cache_mgr;
 
        /* Stuff for background deletion and unlinked files. */
        struct yaffs_obj *unlinked_dir; /* Directory where unlinked and deleted
@@ -886,6 +891,7 @@ struct yaffs_xattr_mod {
 
 int yaffs_guts_initialise(struct yaffs_dev *dev);
 void yaffs_deinitialise(struct yaffs_dev *dev);
+void yaffs_guts_cleanup(struct yaffs_dev *dev);
 
 int yaffs_get_n_free_chunks(struct yaffs_dev *dev);
 
@@ -1040,6 +1046,11 @@ loff_t yaffs_oh_to_size(struct yaffs_dev *dev, struct yaffs_obj_hdr *oh,
                        int do_endian);
 loff_t yaffs_max_file_size(struct yaffs_dev *dev);
 
+
+/* yaffs_wr_data_obj needs to be exposed to allow the cache to access it. */
+int yaffs_wr_data_obj(struct yaffs_obj *in, int inode_chunk,
+                            const u8 *buffer, int n_bytes, int use_reserve);
+
 /*
  * Debug function to count number of blocks in each state
  * NB Needs to be called with correct number of integers