1/* 2 * Squashfs - a compressed read only filesystem for Linux 3 * 4 * Copyright (c) 2002, 2003, 2004, 2005, 2006, 2007 5 * Phillip Lougher <phillip@lougher.org.uk> 6 * 7 * This program is free software; you can redistribute it and/or 8 * modify it under the terms of the GNU General Public License 9 * as published by the Free Software Foundation; either version 2, 10 * or (at your option) any later version. 11 * 12 * This program is distributed in the hope that it will be useful, 13 * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 * GNU General Public License for more details. 16 * 17 * You should have received a copy of the GNU General Public License 18 * along with this program; if not, write to the Free Software 19 * Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 20 * 21 * squashfs.h 22 */ 23 24#ifdef CONFIG_SQUASHFS_1_0_COMPATIBILITY 25#undef CONFIG_SQUASHFS_1_0_COMPATIBILITY 26#endif 27 28#ifdef SQUASHFS_TRACE 29#define TRACE(s, args...) printk(KERN_NOTICE "SQUASHFS: "s, ## args) 30#else 31#define TRACE(s, args...) {} 32#endif 33 34#define ERROR(s, args...) printk(KERN_ERR "SQUASHFS error: "s, ## args) 35 36#define SERROR(s, args...) do { \ 37 if (!silent) \ 38 printk(KERN_ERR "SQUASHFS error: "s, ## args);\ 39 } while(0) 40 41#define WARNING(s, args...) printk(KERN_WARNING "SQUASHFS: "s, ## args) 42 43static inline struct squashfs_inode_info *SQUASHFS_I(struct inode *inode) 44{ 45 return list_entry(inode, struct squashfs_inode_info, vfs_inode); 46} 47 48#if defined(CONFIG_SQUASHFS_1_0_COMPATIBILITY) || \ 49 defined(CONFIG_SQUASHFS_2_0_COMPATIBILITY) 50#define SQSH_EXTERN 51extern unsigned int squashfs_read_data(struct super_block *s, char *buffer, 52 long long index, unsigned int length, 53 long long *next_index, int srclength); 54extern int squashfs_get_cached_block(struct super_block *s, char *buffer, 55 long long block, unsigned int offset, 56 int length, long long *next_block, 57 unsigned int *next_offset); 58extern void release_cached_fragment(struct squashfs_sb_info *msblk, struct 59 squashfs_fragment_cache *fragment); 60extern struct squashfs_fragment_cache *get_cached_fragment(struct super_block 61 *s, long long start_block, 62 int length); 63extern struct inode *squashfs_iget(struct super_block *s, squashfs_inode_t inode, unsigned int inode_number); 64extern const struct address_space_operations squashfs_symlink_aops; 65extern const struct address_space_operations squashfs_aops; 66extern const struct address_space_operations squashfs_aops_4K; 67extern struct inode_operations squashfs_dir_inode_ops; 68#else 69#define SQSH_EXTERN static 70#endif 71 72#ifdef CONFIG_SQUASHFS_1_0_COMPATIBILITY 73extern int squashfs_1_0_supported(struct squashfs_sb_info *msblk); 74#else 75static inline int squashfs_1_0_supported(struct squashfs_sb_info *msblk) 76{ 77 return 0; 78} 79#endif 80 81#ifdef CONFIG_SQUASHFS_2_0_COMPATIBILITY 82extern int squashfs_2_0_supported(struct squashfs_sb_info *msblk); 83#else 84static inline int squashfs_2_0_supported(struct squashfs_sb_info *msblk) 85{ 86 return 0; 87} 88#endif 89