1 | /* SPDX-License-Identifier: GPL-2.0-or-later */ |
2 | #ifndef SQUASHFS_FS_SB |
3 | #define SQUASHFS_FS_SB |
4 | /* |
5 | * Squashfs |
6 | * |
7 | * Copyright (c) 2002, 2003, 2004, 2005, 2006, 2007, 2008 |
8 | * Phillip Lougher <phillip@squashfs.org.uk> |
9 | * |
10 | * squashfs_fs_sb.h |
11 | */ |
12 | |
13 | #include "squashfs_fs.h" |
14 | |
15 | struct squashfs_cache { |
16 | char *name; |
17 | int entries; |
18 | int curr_blk; |
19 | int next_blk; |
20 | int num_waiters; |
21 | int unused; |
22 | int block_size; |
23 | int pages; |
24 | spinlock_t lock; |
25 | wait_queue_head_t wait_queue; |
26 | struct squashfs_cache_entry *entry; |
27 | }; |
28 | |
29 | struct squashfs_cache_entry { |
30 | u64 block; |
31 | int length; |
32 | int refcount; |
33 | u64 next_index; |
34 | int pending; |
35 | int error; |
36 | int num_waiters; |
37 | wait_queue_head_t wait_queue; |
38 | struct squashfs_cache *cache; |
39 | void **data; |
40 | struct squashfs_page_actor *actor; |
41 | }; |
42 | |
43 | struct squashfs_sb_info { |
44 | const struct squashfs_decompressor *decompressor; |
45 | int devblksize; |
46 | int devblksize_log2; |
47 | struct squashfs_cache *block_cache; |
48 | struct squashfs_cache *fragment_cache; |
49 | struct squashfs_cache *read_page; |
50 | struct address_space *cache_mapping; |
51 | int next_meta_index; |
52 | __le64 *id_table; |
53 | __le64 *fragment_index; |
54 | __le64 *xattr_id_table; |
55 | struct mutex meta_index_mutex; |
56 | struct meta_index *meta_index; |
57 | void *stream; |
58 | __le64 *inode_lookup_table; |
59 | u64 inode_table; |
60 | u64 directory_table; |
61 | u64 xattr_table; |
62 | unsigned int block_size; |
63 | unsigned short block_log; |
64 | long long bytes_used; |
65 | unsigned int inodes; |
66 | unsigned int fragments; |
67 | unsigned int xattr_ids; |
68 | unsigned int ids; |
69 | bool panic_on_errors; |
70 | const struct squashfs_decompressor_thread_ops *thread_ops; |
71 | int max_thread_num; |
72 | }; |
73 | #endif |
74 | |