Linux kernel mirror (for testing)
git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel
os
linux
1/* SPDX-License-Identifier: GPL-2.0-or-later */
2/*
3 * Squashfs - a compressed read only filesystem for Linux
4 *
5 * Copyright (c) 2002, 2003, 2004, 2005, 2006, 2007, 2008
6 * Phillip Lougher <phillip@squashfs.org.uk>
7 *
8 * squashfs.h
9 */
10
11#define TRACE(s, args...) pr_debug("SQUASHFS: "s, ## args)
12
13#define ERROR(s, args...) pr_err("SQUASHFS error: "s, ## args)
14
15#define WARNING(s, args...) pr_warn("SQUASHFS: "s, ## args)
16
17#ifdef CONFIG_SQUASHFS_FILE_CACHE
18#define SQUASHFS_READ_PAGES msblk->max_thread_num
19#else
20#define SQUASHFS_READ_PAGES 0
21#endif
22
23/* block.c */
24extern int squashfs_read_data(struct super_block *, u64, int, u64 *,
25 struct squashfs_page_actor *);
26
27/* cache.c */
28extern struct squashfs_cache *squashfs_cache_init(char *, int, int);
29extern void squashfs_cache_delete(struct squashfs_cache *);
30extern struct squashfs_cache_entry *squashfs_cache_get(struct super_block *,
31 struct squashfs_cache *, u64, int);
32extern void squashfs_cache_put(struct squashfs_cache_entry *);
33extern int squashfs_copy_data(void *, struct squashfs_cache_entry *, int, int);
34extern int squashfs_read_metadata(struct super_block *, void *, u64 *,
35 int *, int);
36extern struct squashfs_cache_entry *squashfs_get_fragment(struct super_block *,
37 u64, int);
38extern struct squashfs_cache_entry *squashfs_get_datablock(struct super_block *,
39 u64, int);
40extern void *squashfs_read_table(struct super_block *, u64, int);
41
42/* decompressor.c */
43extern const struct squashfs_decompressor *squashfs_lookup_decompressor(int);
44extern void *squashfs_decompressor_setup(struct super_block *, unsigned short);
45
46/* decompressor_xxx.c */
47
48struct squashfs_decompressor_thread_ops {
49 void * (*create)(struct squashfs_sb_info *msblk, void *comp_opts);
50 void (*destroy)(struct squashfs_sb_info *msblk);
51 int (*decompress)(struct squashfs_sb_info *msblk, struct bio *bio,
52 int offset, int length, struct squashfs_page_actor *output);
53 int (*max_decompressors)(void);
54};
55
56#ifdef CONFIG_SQUASHFS_DECOMP_SINGLE
57extern const struct squashfs_decompressor_thread_ops squashfs_decompressor_single;
58#endif
59#ifdef CONFIG_SQUASHFS_DECOMP_MULTI
60extern const struct squashfs_decompressor_thread_ops squashfs_decompressor_multi;
61#endif
62#ifdef CONFIG_SQUASHFS_DECOMP_MULTI_PERCPU
63extern const struct squashfs_decompressor_thread_ops squashfs_decompressor_percpu;
64#endif
65
66/* export.c */
67extern __le64 *squashfs_read_inode_lookup_table(struct super_block *, u64, u64,
68 unsigned int);
69
70/* fragment.c */
71extern int squashfs_frag_lookup(struct super_block *, unsigned int, u64 *);
72extern __le64 *squashfs_read_fragment_index_table(struct super_block *,
73 u64, u64, unsigned int);
74
75/* file.c */
76void squashfs_copy_cache(struct folio *, struct squashfs_cache_entry *,
77 size_t bytes, size_t offset);
78
79/* file_xxx.c */
80int squashfs_readpage_block(struct folio *, u64 block, int bsize, int expected);
81
82/* id.c */
83extern int squashfs_get_id(struct super_block *, unsigned int, unsigned int *);
84extern __le64 *squashfs_read_id_index_table(struct super_block *, u64, u64,
85 unsigned short);
86
87/* inode.c */
88extern struct inode *squashfs_iget(struct super_block *, long long,
89 unsigned int);
90extern int squashfs_read_inode(struct inode *, long long);
91
92/* xattr.c */
93extern ssize_t squashfs_listxattr(struct dentry *, char *, size_t);
94
95/*
96 * Inodes, files, decompressor and xattr operations
97 */
98
99/* dir.c */
100extern const struct file_operations squashfs_dir_ops;
101
102/* export.c */
103extern const struct export_operations squashfs_export_ops;
104
105/* file.c */
106extern const struct address_space_operations squashfs_aops;
107
108/* inode.c */
109extern const struct inode_operations squashfs_inode_ops;
110extern const struct file_operations squashfs_file_operations;
111
112/* namei.c */
113extern const struct inode_operations squashfs_dir_inode_ops;
114
115/* symlink.c */
116extern const struct address_space_operations squashfs_symlink_aops;
117extern const struct inode_operations squashfs_symlink_inode_ops;
118
119/* xattr.c */
120extern const struct xattr_handler * const squashfs_xattr_handlers[];