Merge tag 'x86-urgent-2025-01-28' of git://git.kernel.org/pub/scm/linux/kernel/git...
[linux.git] / fs / squashfs / squashfs.h
blob218868b20f16e0f9f0fbfd8946f974eec9a9a06c
1 /* SPDX-License-Identifier: GPL-2.0-or-later */
2 /*
3 * Squashfs - a compressed read only filesystem for Linux
5 * Copyright (c) 2002, 2003, 2004, 2005, 2006, 2007, 2008
6 * Phillip Lougher <phillip@squashfs.org.uk>
8 * squashfs.h
9 */
11 #define TRACE(s, args...) pr_debug("SQUASHFS: "s, ## args)
13 #define ERROR(s, args...) pr_err("SQUASHFS error: "s, ## args)
15 #define WARNING(s, args...) pr_warn("SQUASHFS: "s, ## args)
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
23 /* block.c */
24 extern int squashfs_read_data(struct super_block *, u64, int, u64 *,
25 struct squashfs_page_actor *);
27 /* cache.c */
28 extern struct squashfs_cache *squashfs_cache_init(char *, int, int);
29 extern void squashfs_cache_delete(struct squashfs_cache *);
30 extern struct squashfs_cache_entry *squashfs_cache_get(struct super_block *,
31 struct squashfs_cache *, u64, int);
32 extern void squashfs_cache_put(struct squashfs_cache_entry *);
33 extern int squashfs_copy_data(void *, struct squashfs_cache_entry *, int, int);
34 extern int squashfs_read_metadata(struct super_block *, void *, u64 *,
35 int *, int);
36 extern struct squashfs_cache_entry *squashfs_get_fragment(struct super_block *,
37 u64, int);
38 extern struct squashfs_cache_entry *squashfs_get_datablock(struct super_block *,
39 u64, int);
40 extern void *squashfs_read_table(struct super_block *, u64, int);
42 /* decompressor.c */
43 extern const struct squashfs_decompressor *squashfs_lookup_decompressor(int);
44 extern void *squashfs_decompressor_setup(struct super_block *, unsigned short);
46 /* decompressor_xxx.c */
48 struct 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);
56 #ifdef CONFIG_SQUASHFS_DECOMP_SINGLE
57 extern const struct squashfs_decompressor_thread_ops squashfs_decompressor_single;
58 #endif
59 #ifdef CONFIG_SQUASHFS_DECOMP_MULTI
60 extern const struct squashfs_decompressor_thread_ops squashfs_decompressor_multi;
61 #endif
62 #ifdef CONFIG_SQUASHFS_DECOMP_MULTI_PERCPU
63 extern const struct squashfs_decompressor_thread_ops squashfs_decompressor_percpu;
64 #endif
66 /* export.c */
67 extern __le64 *squashfs_read_inode_lookup_table(struct super_block *, u64, u64,
68 unsigned int);
70 /* fragment.c */
71 extern int squashfs_frag_lookup(struct super_block *, unsigned int, u64 *);
72 extern __le64 *squashfs_read_fragment_index_table(struct super_block *,
73 u64, u64, unsigned int);
75 /* file.c */
76 void squashfs_copy_cache(struct folio *, struct squashfs_cache_entry *,
77 size_t bytes, size_t offset);
79 /* file_xxx.c */
80 int squashfs_readpage_block(struct folio *, u64 block, int bsize, int expected);
82 /* id.c */
83 extern int squashfs_get_id(struct super_block *, unsigned int, unsigned int *);
84 extern __le64 *squashfs_read_id_index_table(struct super_block *, u64, u64,
85 unsigned short);
87 /* inode.c */
88 extern struct inode *squashfs_iget(struct super_block *, long long,
89 unsigned int);
90 extern int squashfs_read_inode(struct inode *, long long);
92 /* xattr.c */
93 extern ssize_t squashfs_listxattr(struct dentry *, char *, size_t);
96 * Inodes, files, decompressor and xattr operations
99 /* dir.c */
100 extern const struct file_operations squashfs_dir_ops;
102 /* export.c */
103 extern const struct export_operations squashfs_export_ops;
105 /* file.c */
106 extern const struct address_space_operations squashfs_aops;
108 /* inode.c */
109 extern const struct inode_operations squashfs_inode_ops;
111 /* namei.c */
112 extern const struct inode_operations squashfs_dir_inode_ops;
114 /* symlink.c */
115 extern const struct address_space_operations squashfs_symlink_aops;
116 extern const struct inode_operations squashfs_symlink_inode_ops;
118 /* xattr.c */
119 extern const struct xattr_handler * const squashfs_xattr_handlers[];