Commit | Line | Data |
---|---|---|
68252eb5 | 1 | /* SPDX-License-Identifier: GPL-2.0-or-later */ |
ffae2cd7 PL |
2 | /* |
3 | * Squashfs - a compressed read only filesystem for Linux | |
4 | * | |
5 | * Copyright (c) 2002, 2003, 2004, 2005, 2006, 2007, 2008 | |
d7f2ff67 | 6 | * Phillip Lougher <phillip@squashfs.org.uk> |
ffae2cd7 | 7 | * |
ffae2cd7 PL |
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 | ||
22010836 | 15 | #define WARNING(s, args...) pr_warn("SQUASHFS: "s, ## args) |
ffae2cd7 | 16 | |
ffae2cd7 | 17 | /* block.c */ |
846b730e PL |
18 | extern int squashfs_read_data(struct super_block *, u64, int, u64 *, |
19 | struct squashfs_page_actor *); | |
ffae2cd7 PL |
20 | |
21 | /* cache.c */ | |
22 | extern struct squashfs_cache *squashfs_cache_init(char *, int, int); | |
23 | extern void squashfs_cache_delete(struct squashfs_cache *); | |
24 | extern struct squashfs_cache_entry *squashfs_cache_get(struct super_block *, | |
25 | struct squashfs_cache *, u64, int); | |
26 | extern void squashfs_cache_put(struct squashfs_cache_entry *); | |
27 | extern int squashfs_copy_data(void *, struct squashfs_cache_entry *, int, int); | |
28 | extern int squashfs_read_metadata(struct super_block *, void *, u64 *, | |
29 | int *, int); | |
30 | extern struct squashfs_cache_entry *squashfs_get_fragment(struct super_block *, | |
31 | u64, int); | |
32 | extern struct squashfs_cache_entry *squashfs_get_datablock(struct super_block *, | |
33 | u64, int); | |
82de647e | 34 | extern void *squashfs_read_table(struct super_block *, u64, int); |
ffae2cd7 | 35 | |
4c0f0bb2 PL |
36 | /* decompressor.c */ |
37 | extern const struct squashfs_decompressor *squashfs_lookup_decompressor(int); | |
9508c6b9 PL |
38 | extern void *squashfs_decompressor_setup(struct super_block *, unsigned short); |
39 | ||
40 | /* decompressor_xxx.c */ | |
80f78409 XN |
41 | |
42 | struct squashfs_decompressor_thread_ops { | |
43 | void * (*create)(struct squashfs_sb_info *msblk, void *comp_opts); | |
44 | void (*destroy)(struct squashfs_sb_info *msblk); | |
45 | int (*decompress)(struct squashfs_sb_info *msblk, struct bio *bio, | |
46 | int offset, int length, struct squashfs_page_actor *output); | |
47 | int (*max_decompressors)(void); | |
48 | }; | |
49 | ||
50 | #ifdef CONFIG_SQUASHFS_DECOMP_SINGLE | |
51 | extern const struct squashfs_decompressor_thread_ops squashfs_decompressor_single; | |
52 | #endif | |
53 | #ifdef CONFIG_SQUASHFS_DECOMP_MULTI | |
54 | extern const struct squashfs_decompressor_thread_ops squashfs_decompressor_multi; | |
55 | #endif | |
56 | #ifdef CONFIG_SQUASHFS_DECOMP_MULTI_PERCPU | |
57 | extern const struct squashfs_decompressor_thread_ops squashfs_decompressor_percpu; | |
58 | #endif | |
4c0f0bb2 | 59 | |
ffae2cd7 | 60 | /* export.c */ |
ac51a0a7 | 61 | extern __le64 *squashfs_read_inode_lookup_table(struct super_block *, u64, u64, |
ffae2cd7 PL |
62 | unsigned int); |
63 | ||
64 | /* fragment.c */ | |
65 | extern int squashfs_frag_lookup(struct super_block *, unsigned int, u64 *); | |
66 | extern __le64 *squashfs_read_fragment_index_table(struct super_block *, | |
1cac63cc | 67 | u64, u64, unsigned int); |
ffae2cd7 | 68 | |
5f55dbc0 | 69 | /* file.c */ |
cdbb65c4 | 70 | void squashfs_fill_page(struct page *, struct squashfs_cache_entry *, int, int); |
5f55dbc0 PL |
71 | void squashfs_copy_cache(struct page *, struct squashfs_cache_entry *, int, |
72 | int); | |
73 | ||
74 | /* file_xxx.c */ | |
a3f94cb9 | 75 | extern int squashfs_readpage_block(struct page *, u64, int, int); |
5f55dbc0 | 76 | |
ffae2cd7 PL |
77 | /* id.c */ |
78 | extern int squashfs_get_id(struct super_block *, unsigned int, unsigned int *); | |
37986f63 | 79 | extern __le64 *squashfs_read_id_index_table(struct super_block *, u64, u64, |
ffae2cd7 PL |
80 | unsigned short); |
81 | ||
82 | /* inode.c */ | |
83 | extern struct inode *squashfs_iget(struct super_block *, long long, | |
84 | unsigned int); | |
85 | extern int squashfs_read_inode(struct inode *, long long); | |
86 | ||
67f66cc6 PL |
87 | /* xattr.c */ |
88 | extern ssize_t squashfs_listxattr(struct dentry *, char *, size_t); | |
89 | ||
ffae2cd7 | 90 | /* |
67f66cc6 | 91 | * Inodes, files, decompressor and xattr operations |
ffae2cd7 PL |
92 | */ |
93 | ||
94 | /* dir.c */ | |
95 | extern const struct file_operations squashfs_dir_ops; | |
96 | ||
97 | /* export.c */ | |
98 | extern const struct export_operations squashfs_export_ops; | |
99 | ||
100 | /* file.c */ | |
101 | extern const struct address_space_operations squashfs_aops; | |
102 | ||
67f66cc6 PL |
103 | /* inode.c */ |
104 | extern const struct inode_operations squashfs_inode_ops; | |
105 | ||
ffae2cd7 PL |
106 | /* namei.c */ |
107 | extern const struct inode_operations squashfs_dir_inode_ops; | |
108 | ||
109 | /* symlink.c */ | |
110 | extern const struct address_space_operations squashfs_symlink_aops; | |
67f66cc6 PL |
111 | extern const struct inode_operations squashfs_symlink_inode_ops; |
112 | ||
113 | /* xattr.c */ | |
c08a831c | 114 | extern const struct xattr_handler * const squashfs_xattr_handlers[]; |