X-Git-Url: http://www.aleph1.co.uk/gitweb/?p=yaffs2.git;a=blobdiff_plain;f=yaffs_guts.h;h=631bd65b52b0aba1e1aa36c249d7aca5437ea3e1;hp=1c578a54c442b667241f0e74b3bd05ef4078e3d2;hb=1570788072c1154eff93282e0bb8564de40bd8aa;hpb=6500cebaa2c93512d544719956af259ca13f83b7 diff --git a/yaffs_guts.h b/yaffs_guts.h index 1c578a5..631bd65 100644 --- a/yaffs_guts.h +++ b/yaffs_guts.h @@ -1,7 +1,7 @@ /* * YAFFS: Yet another Flash File System . A NAND-flash specific file system. * - * Copyright (C) 2002-2010 Aleph One Ltd. + * Copyright (C) 2002-2011 Aleph One Ltd. * for Toby Churchill Ltd and Brightstar Engineering * * Created by Charles Manning @@ -23,11 +23,11 @@ /* Give us a Y=0x59, * Give us an A=0x41, - * Give us an FF=0xFF + * Give us an FF=0xff * Give us an S=0x53 * And what have we got... */ -#define YAFFS_MAGIC 0x5941FF53 +#define YAFFS_MAGIC 0x5941ff53 #define YAFFS_NTNODES_LEVEL0 16 #define YAFFS_TNODES_LEVEL0_BITS 4 @@ -49,7 +49,7 @@ #define YAFFS_MIN_YAFFS2_CHUNK_SIZE 1024 #define YAFFS_MIN_YAFFS2_SPARE_SIZE 32 -#define YAFFS_MAX_CHUNK_ID 0x000FFFFF +#define YAFFS_MAX_CHUNK_ID 0x000fffff #define YAFFS_ALLOCATION_NOBJECTS 100 #define YAFFS_ALLOCATION_NTNODES 100 @@ -78,10 +78,12 @@ #define YAFFS_OBJECTID_UNLINKED 3 #define YAFFS_OBJECTID_DELETED 4 +/* Fake object Id for summary data */ +#define YAFFS_OBJECTID_SUMMARY 0x10 + /* Pseudo object ids for checkpointing */ -#define YAFFS_OBJECTID_SB_HEADER 0x10 #define YAFFS_OBJECTID_CHECKPOINT_DATA 0x20 -#define YAFFS_SEQUENCE_CHECKPOINT_DATA 0x21 +#define YAFFS_SEQUENCE_CHECKPOINT_DATA 0x21 #define YAFFS_MAX_SHORT_OP_CACHES 20 @@ -101,10 +103,10 @@ * and is a larger number than the lifetime of a 2GB device. */ #define YAFFS_LOWEST_SEQUENCE_NUMBER 0x00001000 -#define YAFFS_HIGHEST_SEQUENCE_NUMBER 0xEFFFFF00 +#define YAFFS_HIGHEST_SEQUENCE_NUMBER 0xefffff00 /* Special sequence number for bad block that failed to be marked bad */ -#define YAFFS_SEQUENCE_BAD_BLOCK 0xFFFF0000 +#define YAFFS_SEQUENCE_BAD_BLOCK 0xffff0000 /* ChunkCache is used for short read/write operations.*/ struct yaffs_cache { @@ -160,8 +162,6 @@ enum yaffs_obj_type { #define YAFFS_OBJECT_TYPE_MAX YAFFS_OBJECT_TYPE_SPECIAL struct yaffs_ext_tags { - - unsigned validity0; unsigned chunk_used; /* Status of the chunk: used or unused */ unsigned obj_id; /* If 0 this is not used */ unsigned chunk_id; /* If 0 this is a header, else a data chunk */ @@ -189,9 +189,6 @@ struct yaffs_ext_tags { unsigned extra_length; /* Length if it is a file */ unsigned extra_equiv_id; /* Equivalent object for a hard link */ - - unsigned validity1; - }; /* Spare structure for YAFFS1 */ @@ -492,13 +489,12 @@ struct yaffs_checkpt_obj { /*--------------------- Temporary buffers ---------------- * - * These are chunk-sized working buffers. Each device has a few + * These are chunk-sized working buffers. Each device has a few. */ struct yaffs_buffer { u8 *buffer; - int line; /* track from whence this buffer was allocated */ - int max_line; + int in_use; }; /*----------------- Device ---------------------------------*/ @@ -735,6 +731,10 @@ struct yaffs_dev { /* Dirty directory handling */ struct list_head dirty_dirs; /* List of dirty directories */ + /* Summary */ + int chunks_per_summary; + struct yaffs_summary_tags *sum_tags; + /* Statistcs */ u32 n_page_writes; u32 n_page_reads; @@ -893,8 +893,8 @@ int yaffs_check_ff(u8 *buffer, int n_bytes); void yaffs_handle_chunk_error(struct yaffs_dev *dev, struct yaffs_block_info *bi); -u8 *yaffs_get_temp_buffer(struct yaffs_dev *dev, int line_no); -void yaffs_release_temp_buffer(struct yaffs_dev *dev, u8 *buffer, int line_no); +u8 *yaffs_get_temp_buffer(struct yaffs_dev *dev); +void yaffs_release_temp_buffer(struct yaffs_dev *dev, u8 *buffer); struct yaffs_obj *yaffs_find_or_create_by_number(struct yaffs_dev *dev, int number,