1 /* 2 * Squashfs - a compressed read only filesystem for Linux 3 * 4 * Copyright (c) 2002, 2003, 2004, 2005, 2006 5 * Phillip Lougher <phillip (at) lougher.demon.co.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 #ifdef SQUASHFS_TRACE 28 #define TRACE(s, args...) printk(KERN_NOTICE "SQUASHFS: "s, ## args) 29 #else 30 #define TRACE(s, args...) {} 31 #endif 32 33 #define ERROR(s, args...) printk(KERN_ERR "SQUASHFS error: "s, ## args) 34 35 #define SERROR(s, args...) do { \ 36 if (!silent) \ 37 printk(KERN_ERR "SQUASHFS error: "s, ## args);\ 38 } while(0) 39 40 #define WARNING(s, args...) printk(KERN_WARNING "SQUASHFS: "s, ## args) 41 42 #define SQUASHFS_I(INO) (&INO->u.squashfs_i) 43 44 #define i_size_read(INO) (INO->i_size) 45 46 #if defined(CONFIG_SQUASHFS_1_0_COMPATIBILITY ) || defined(CONFIG_SQUASHFS_2_0_COMPATIBILITY) 47 #define SQSH_EXTERN 48 extern unsigned int squashfs_read_data(struct super_block *s, char *buffer, 49 long long index, unsigned int length, 50 long long *next_index); 51 extern int squashfs_get_cached_block(struct super_block *s, char *buffer, 52 long long block, unsigned int offset, 53 int length, long long *next_block, 54 unsigned int *next_offset); 55 extern void release_cached_fragment(struct squashfs_sb_info *msblk, struct 56 squashfs_fragment_cache *fragment); 57 extern struct squashfs_fragment_cache *get_cached_fragment(struct super_block 58 *s, long long start_block, 59 int length); 60 extern struct address_space_operations squashfs_symlink_aops; 61 extern struct address_space_operations squashfs_aops; 62 extern struct address_space_operations squashfs_aops_4K; 63 extern struct file_operations squashfs_dir_ops; 64 extern struct inode_operations squashfs_dir_inode_ops; 65 #else 66 #define SQSH_EXTERN static 67 #endif 68 69 #ifdef CONFIG_SQUASHFS_1_0_COMPATIBILITY 70 extern int squashfs_1_0_supported(struct squashfs_sb_info *msblk); 71 #else 72 static inline int squashfs_1_0_supported(struct squashfs_sb_info *msblk) 73 { 74 return 0; 75 } 76 #endif 77 78 #ifdef CONFIG_SQUASHFS_2_0_COMPATIBILITY 79 extern int squashfs_2_0_supported(struct squashfs_sb_info *msblk); 80 #else 81 static inline int squashfs_2_0_supported(struct squashfs_sb_info *msblk) 82 { 83 return 0; 84 } 85 #endif 86