blob: 1e90c2575f9bffbcd1d1b3a0261ea8902a6dff1b [file] [log] [blame]
Thomas Gleixner68252eb2019-05-20 19:08:00 +02001/* SPDX-License-Identifier: GPL-2.0-or-later */
Phillip Lougherffae2cd2009-01-05 08:46:27 +00002#ifndef SQUASHFS_FS_SB
3#define SQUASHFS_FS_SB
4/*
5 * Squashfs
6 *
7 * Copyright (c) 2002, 2003, 2004, 2005, 2006, 2007, 2008
Phillip Lougherd7f2ff62011-05-26 10:39:56 +01008 * Phillip Lougher <phillip@squashfs.org.uk>
Phillip Lougherffae2cd2009-01-05 08:46:27 +00009 *
Phillip Lougherffae2cd2009-01-05 08:46:27 +000010 * squashfs_fs_sb.h
11 */
12
13#include "squashfs_fs.h"
14
15struct squashfs_cache {
16 char *name;
17 int entries;
Ajeet Yadavd7fbd892011-12-27 15:10:04 +053018 int curr_blk;
Phillip Lougherffae2cd2009-01-05 08:46:27 +000019 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
29struct 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;
Phillip Lougher846b7302013-11-18 02:59:12 +000040 struct squashfs_page_actor *actor;
Phillip Lougherffae2cd2009-01-05 08:46:27 +000041};
42
43struct squashfs_sb_info {
Phillip Lougher4c0f0bb2009-10-06 04:04:15 +010044 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;
Phillip Lougher4b5397d2010-05-14 20:48:47 +010053 __le64 *xattr_id_table;
Phillip Lougher4c0f0bb2009-10-06 04:04:15 +010054 struct mutex meta_index_mutex;
55 struct meta_index *meta_index;
Phillip Lougher9508c6b2013-11-13 02:56:26 +000056 struct squashfs_stream *stream;
Phillip Lougher4c0f0bb2009-10-06 04:04:15 +010057 __le64 *inode_lookup_table;
58 u64 inode_table;
59 u64 directory_table;
Phillip Lougher4b5397d2010-05-14 20:48:47 +010060 u64 xattr_table;
Phillip Lougher4c0f0bb2009-10-06 04:04:15 +010061 unsigned int block_size;
62 unsigned short block_log;
63 long long bytes_used;
64 unsigned int inodes;
Linus Torvalds71755ee2018-08-02 08:43:35 -070065 unsigned int fragments;
Phillip Lougher4b5397d2010-05-14 20:48:47 +010066 int xattr_ids;
Phillip Lougherf37aa4c2021-02-09 13:41:53 -080067 unsigned int ids;
Vincent Whitchurch10dde052021-06-28 19:33:55 -070068 bool panic_on_errors;
Phillip Lougherffae2cd2009-01-05 08:46:27 +000069};
70#endif