115 lines · c
1/* SPDX-License-Identifier: GPL-2.0-or-later */2/*3 * Squashfs - a compressed read only filesystem for Linux4 *5 * Copyright (c) 2002, 2003, 2004, 2005, 2006, 2007, 20086 * Phillip Lougher <phillip@squashfs.org.uk>7 *8 * squashfs.h9 */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/* block.c */18extern int squashfs_read_data(struct super_block *, u64, int, u64 *,19 struct squashfs_page_actor *);20 21/* cache.c */22extern struct squashfs_cache *squashfs_cache_init(char *, int, int);23extern void squashfs_cache_delete(struct squashfs_cache *);24extern struct squashfs_cache_entry *squashfs_cache_get(struct super_block *,25 struct squashfs_cache *, u64, int);26extern void squashfs_cache_put(struct squashfs_cache_entry *);27extern int squashfs_copy_data(void *, struct squashfs_cache_entry *, int, int);28extern int squashfs_read_metadata(struct super_block *, void *, u64 *,29 int *, int);30extern struct squashfs_cache_entry *squashfs_get_fragment(struct super_block *,31 u64, int);32extern struct squashfs_cache_entry *squashfs_get_datablock(struct super_block *,33 u64, int);34extern void *squashfs_read_table(struct super_block *, u64, int);35 36/* decompressor.c */37extern const struct squashfs_decompressor *squashfs_lookup_decompressor(int);38extern void *squashfs_decompressor_setup(struct super_block *, unsigned short);39 40/* decompressor_xxx.c */41 42struct 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_SINGLE51extern const struct squashfs_decompressor_thread_ops squashfs_decompressor_single;52#endif53#ifdef CONFIG_SQUASHFS_DECOMP_MULTI54extern const struct squashfs_decompressor_thread_ops squashfs_decompressor_multi;55#endif56#ifdef CONFIG_SQUASHFS_DECOMP_MULTI_PERCPU57extern const struct squashfs_decompressor_thread_ops squashfs_decompressor_percpu;58#endif59 60/* export.c */61extern __le64 *squashfs_read_inode_lookup_table(struct super_block *, u64, u64,62 unsigned int);63 64/* fragment.c */65extern int squashfs_frag_lookup(struct super_block *, unsigned int, u64 *);66extern __le64 *squashfs_read_fragment_index_table(struct super_block *,67 u64, u64, unsigned int);68 69/* file.c */70void squashfs_fill_page(struct page *, struct squashfs_cache_entry *, int, int);71void squashfs_copy_cache(struct page *, struct squashfs_cache_entry *, int,72 int);73 74/* file_xxx.c */75extern int squashfs_readpage_block(struct page *, u64, int, int);76 77/* id.c */78extern int squashfs_get_id(struct super_block *, unsigned int, unsigned int *);79extern __le64 *squashfs_read_id_index_table(struct super_block *, u64, u64,80 unsigned short);81 82/* inode.c */83extern struct inode *squashfs_iget(struct super_block *, long long,84 unsigned int);85extern int squashfs_read_inode(struct inode *, long long);86 87/* xattr.c */88extern ssize_t squashfs_listxattr(struct dentry *, char *, size_t);89 90/*91 * Inodes, files, decompressor and xattr operations92 */93 94/* dir.c */95extern const struct file_operations squashfs_dir_ops;96 97/* export.c */98extern const struct export_operations squashfs_export_ops;99 100/* file.c */101extern const struct address_space_operations squashfs_aops;102 103/* inode.c */104extern const struct inode_operations squashfs_inode_ops;105 106/* namei.c */107extern const struct inode_operations squashfs_dir_inode_ops;108 109/* symlink.c */110extern const struct address_space_operations squashfs_symlink_aops;111extern const struct inode_operations squashfs_symlink_inode_ops;112 113/* xattr.c */114extern const struct xattr_handler * const squashfs_xattr_handlers[];115