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 int next_meta_index; 51 __le64 *id_table; 52 __le64 *fragment_index; 53 __le64 *xattr_id_table; 54 struct mutex meta_index_mutex; 55 struct meta_index *meta_index; 56 void *stream; 57 __le64 *inode_lookup_table; 58 u64 inode_table; 59 u64 directory_table; 60 u64 xattr_table; 61 unsigned int block_size; 62 unsigned short block_log; 63 long long bytes_used; 64 unsigned int inodes; 65 unsigned int fragments; 66 int xattr_ids; 67 unsigned int ids; 68 bool panic_on_errors; 69 const struct squashfs_decompressor_thread_ops *thread_ops; 70 int max_thread_num; 71 }; 72 #endif 73