Blame view
fs/jffs2/jffs2_fs_sb.h
4.75 KB
c00c310ea [JFFS2] Tidy up l... |
1 2 3 4 5 6 7 8 9 10 |
/* * JFFS2 -- Journalling Flash File System, Version 2. * * Copyright © 2001-2007 Red Hat, Inc. * * Created by David Woodhouse <dwmw2@infradead.org> * * For licensing information, see the file 'LICENCE' in this directory. * */ |
1da177e4c Linux-2.6.12-rc2 |
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
#ifndef _JFFS2_FS_SB #define _JFFS2_FS_SB #include <linux/types.h> #include <linux/spinlock.h> #include <linux/workqueue.h> #include <linux/completion.h> #include <asm/semaphore.h> #include <linux/timer.h> #include <linux/wait.h> #include <linux/list.h> #include <linux/rwsem.h> #define JFFS2_SB_FLAG_RO 1 |
31fbdf7aa [JFFS2] Fix NOR s... |
26 27 |
#define JFFS2_SB_FLAG_SCANNING 2 /* Flash scanning is in progress */ #define JFFS2_SB_FLAG_BUILDING 4 /* File system building is in progress */ |
1da177e4c Linux-2.6.12-rc2 |
28 29 30 31 |
struct jffs2_inodirty; /* A struct for the overall file system control. Pointers to |
182ec4eee [JFFS2] Clean up ... |
32 |
jffs2_sb_info structs are named `c' in the source code. |
1da177e4c Linux-2.6.12-rc2 |
33 34 35 36 37 38 39 40 41 42 43 |
Nee jffs_control */ struct jffs2_sb_info { struct mtd_info *mtd; uint32_t highest_ino; uint32_t checked_ino; unsigned int flags; struct task_struct *gc_task; /* GC task struct */ |
fff7afd79 [JFFS2] Convert t... |
44 |
struct completion gc_thread_start; /* GC thread start completion */ |
1da177e4c Linux-2.6.12-rc2 |
45 |
struct completion gc_thread_exit; /* GC thread exit completion port */ |
182ec4eee [JFFS2] Clean up ... |
46 |
struct semaphore alloc_sem; /* Used to protect all the following |
1da177e4c Linux-2.6.12-rc2 |
47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 |
fields, and also to protect against out-of-order writing of nodes. And GC. */ uint32_t cleanmarker_size; /* Size of an _inline_ CLEANMARKER (i.e. zero for OOB CLEANMARKER */ uint32_t flash_size; uint32_t used_size; uint32_t dirty_size; uint32_t wasted_size; uint32_t free_size; uint32_t erasing_size; uint32_t bad_size; uint32_t sector_size; uint32_t unchecked_size; uint32_t nr_free_blocks; uint32_t nr_erasing_blocks; /* Number of free blocks there must be before we... */ uint8_t resv_blocks_write; /* ... allow a normal filesystem write */ uint8_t resv_blocks_deletion; /* ... allow a normal filesystem deletion */ uint8_t resv_blocks_gctrigger; /* ... wake up the GC thread */ uint8_t resv_blocks_gcbad; /* ... pick a block from the bad_list to GC */ uint8_t resv_blocks_gcmerge; /* ... merge pages when garbage collecting */ uint32_t nospc_dirty_size; uint32_t nr_blocks; |
182ec4eee [JFFS2] Clean up ... |
75 |
struct jffs2_eraseblock *blocks; /* The whole array of blocks. Used for getting blocks |
1da177e4c Linux-2.6.12-rc2 |
76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 |
* from the offset (blocks[ofs / sector_size]) */ struct jffs2_eraseblock *nextblock; /* The block we're currently filling */ struct jffs2_eraseblock *gcblock; /* The block we're currently garbage-collecting */ struct list_head clean_list; /* Blocks 100% full of clean data */ struct list_head very_dirty_list; /* Blocks with lots of dirty space */ struct list_head dirty_list; /* Blocks with some dirty space */ struct list_head erasable_list; /* Blocks which are completely dirty, and need erasing */ struct list_head erasable_pending_wbuf_list; /* Blocks which need erasing but only after the current wbuf is flushed */ struct list_head erasing_list; /* Blocks which are currently erasing */ struct list_head erase_pending_list; /* Blocks which need erasing now */ struct list_head erase_complete_list; /* Blocks which are erased and need the clean marker written to them */ struct list_head free_list; /* Blocks which are free and ready to be used */ struct list_head bad_list; /* Bad blocks. */ struct list_head bad_used_list; /* Bad blocks with valid data in. */ |
182ec4eee [JFFS2] Clean up ... |
92 |
spinlock_t erase_completion_lock; /* Protect free_list and erasing_list |
1da177e4c Linux-2.6.12-rc2 |
93 94 95 96 97 98 |
against erase completion handler */ wait_queue_head_t erase_wait; /* For waiting for erases to complete */ wait_queue_head_t inocache_wq; struct jffs2_inode_cache **inocache_list; spinlock_t inocache_lock; |
182ec4eee [JFFS2] Clean up ... |
99 |
|
1da177e4c Linux-2.6.12-rc2 |
100 |
/* Sem to allow jffs2_garbage_collect_deletion_dirent to |
182ec4eee [JFFS2] Clean up ... |
101 |
drop the erase_completion_lock while it's holding a pointer |
1da177e4c Linux-2.6.12-rc2 |
102 103 |
to an obsoleted node. I don't like this. Alternatives welcomed. */ struct semaphore erase_free_sem; |
733802d97 [JFFS2] Debug cod... |
104 |
uint32_t wbuf_pagesize; /* 0 for NOR and other flashes with no wbuf */ |
182ec4eee [JFFS2] Clean up ... |
105 |
|
2f82ce1eb [JFFS2] Use a sin... |
106 |
#ifdef CONFIG_JFFS2_FS_WRITEBUFFER |
a7a6ace14 [JFFS2] Use MTD_O... |
107 |
unsigned char *wbuf; /* Write-behind buffer for NAND flash */ |
1da177e4c Linux-2.6.12-rc2 |
108 109 |
uint32_t wbuf_ofs; uint32_t wbuf_len; |
1da177e4c Linux-2.6.12-rc2 |
110 |
struct jffs2_inodirty *wbuf_inodes; |
1da177e4c Linux-2.6.12-rc2 |
111 |
struct rw_semaphore wbuf_sem; /* Protects the write buffer */ |
a7a6ace14 [JFFS2] Use MTD_O... |
112 113 |
unsigned char *oobbuf; int oobavail; /* How many bytes are available for JFFS2 in OOB */ |
1da177e4c Linux-2.6.12-rc2 |
114 |
#endif |
e631ddba5 [JFFS2] Add erase... |
115 |
struct jffs2_summary *summary; /* Summary information */ |
aa98d7cf5 [JFFS2][XATTR] XA... |
116 117 118 |
#ifdef CONFIG_JFFS2_FS_XATTR #define XATTRINDEX_HASHSIZE (57) uint32_t highest_xid; |
c9f700f84 [JFFS2][XATTR] us... |
119 |
uint32_t highest_xseqno; |
aa98d7cf5 [JFFS2][XATTR] XA... |
120 |
struct list_head xattrindex[XATTRINDEX_HASHSIZE]; |
aa98d7cf5 [JFFS2][XATTR] XA... |
121 |
struct list_head xattr_unchecked; |
c9f700f84 [JFFS2][XATTR] us... |
122 123 |
struct list_head xattr_dead_list; struct jffs2_xattr_ref *xref_dead_list; |
8f2b6f49c [JFFS2][XATTR] Re... |
124 |
struct jffs2_xattr_ref *xref_temp; |
aa98d7cf5 [JFFS2][XATTR] XA... |
125 126 127 128 |
struct rw_semaphore xattr_sem; uint32_t xdatum_mem_usage; uint32_t xdatum_mem_threshold; #endif |
1da177e4c Linux-2.6.12-rc2 |
129 130 131 132 133 |
/* OS-private pointer for getting back to master superblock info */ void *os_priv; }; #endif /* _JFFS2_FB_SB */ |