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