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