11f413c84d736495fd61ff05ebe52c3a01a4d95c2plougher#ifndef SQUASHFS_FS_SB 21f413c84d736495fd61ff05ebe52c3a01a4d95c2plougher#define SQUASHFS_FS_SB 31f413c84d736495fd61ff05ebe52c3a01a4d95c2plougher/* 41f413c84d736495fd61ff05ebe52c3a01a4d95c2plougher * Squashfs 51f413c84d736495fd61ff05ebe52c3a01a4d95c2plougher * 6bc9fea01a42d4bc9a8e3349b22c92dfd96dc8abaplougher * Copyright (c) 2002, 2003, 2004, 2005, 2006, 2007, 2008 7f6cd337f8de328e2b448b9f29c00d9132748f7feplougher * Phillip Lougher <phillip@lougher.demon.co.uk> 81f413c84d736495fd61ff05ebe52c3a01a4d95c2plougher * 91f413c84d736495fd61ff05ebe52c3a01a4d95c2plougher * This program is free software; you can redistribute it and/or 101f413c84d736495fd61ff05ebe52c3a01a4d95c2plougher * modify it under the terms of the GNU General Public License 111f413c84d736495fd61ff05ebe52c3a01a4d95c2plougher * as published by the Free Software Foundation; either version 2, 121f413c84d736495fd61ff05ebe52c3a01a4d95c2plougher * or (at your option) any later version. 131f413c84d736495fd61ff05ebe52c3a01a4d95c2plougher * 141f413c84d736495fd61ff05ebe52c3a01a4d95c2plougher * This program is distributed in the hope that it will be useful, 151f413c84d736495fd61ff05ebe52c3a01a4d95c2plougher * but WITHOUT ANY WARRANTY; without even the implied warranty of 161f413c84d736495fd61ff05ebe52c3a01a4d95c2plougher * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 171f413c84d736495fd61ff05ebe52c3a01a4d95c2plougher * GNU General Public License for more details. 181f413c84d736495fd61ff05ebe52c3a01a4d95c2plougher * 191f413c84d736495fd61ff05ebe52c3a01a4d95c2plougher * You should have received a copy of the GNU General Public License 201f413c84d736495fd61ff05ebe52c3a01a4d95c2plougher * along with this program; if not, write to the Free Software 21a3e28ecaf227d2c03ec6724dd718e3c5a12b74efplougher * Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 221f413c84d736495fd61ff05ebe52c3a01a4d95c2plougher * 231f413c84d736495fd61ff05ebe52c3a01a4d95c2plougher * squashfs_fs_sb.h 241f413c84d736495fd61ff05ebe52c3a01a4d95c2plougher */ 251f413c84d736495fd61ff05ebe52c3a01a4d95c2plougher 26a70c1cc4b995d559bcbdf2d3dda88c5bd1292c32plougher#include "squashfs_fs.h" 271f413c84d736495fd61ff05ebe52c3a01a4d95c2plougher 28381c2c9226c527c2884c8bad943eed38e8dd9f06plougherstruct squashfs_cache_entry { 290ff97c20420ebf8daabb3303b92b3b275abe1866plougher long long block; 300ff97c20420ebf8daabb3303b92b3b275abe1866plougher int length; 310ff97c20420ebf8daabb3303b92b3b275abe1866plougher int locked; 320ff97c20420ebf8daabb3303b92b3b275abe1866plougher long long next_index; 330ff97c20420ebf8daabb3303b92b3b275abe1866plougher char pending; 340ff97c20420ebf8daabb3303b92b3b275abe1866plougher char error; 350ff97c20420ebf8daabb3303b92b3b275abe1866plougher int waiting; 36bc9fea01a42d4bc9a8e3349b22c92dfd96dc8abaplougher wait_queue_head_t wait_queue; 370ff97c20420ebf8daabb3303b92b3b275abe1866plougher char *data; 381f413c84d736495fd61ff05ebe52c3a01a4d95c2plougher}; 391f413c84d736495fd61ff05ebe52c3a01a4d95c2plougher 40381c2c9226c527c2884c8bad943eed38e8dd9f06plougherstruct squashfs_cache { 410ff97c20420ebf8daabb3303b92b3b275abe1866plougher char *name; 420ff97c20420ebf8daabb3303b92b3b275abe1866plougher int entries; 430ff97c20420ebf8daabb3303b92b3b275abe1866plougher int block_size; 440ff97c20420ebf8daabb3303b92b3b275abe1866plougher int next_blk; 450ff97c20420ebf8daabb3303b92b3b275abe1866plougher int waiting; 460ff97c20420ebf8daabb3303b92b3b275abe1866plougher int unused; 470ff97c20420ebf8daabb3303b92b3b275abe1866plougher int use_vmalloc; 480ff97c20420ebf8daabb3303b92b3b275abe1866plougher spinlock_t lock; 490ff97c20420ebf8daabb3303b92b3b275abe1866plougher wait_queue_head_t wait_queue; 50381c2c9226c527c2884c8bad943eed38e8dd9f06plougher struct squashfs_cache_entry entry[0]; 51381c2c9226c527c2884c8bad943eed38e8dd9f06plougher}; 52381c2c9226c527c2884c8bad943eed38e8dd9f06plougher 531f413c84d736495fd61ff05ebe52c3a01a4d95c2plougherstruct squashfs_sb_info { 541f413c84d736495fd61ff05ebe52c3a01a4d95c2plougher int devblksize; 551f413c84d736495fd61ff05ebe52c3a01a4d95c2plougher int devblksize_log2; 561f413c84d736495fd61ff05ebe52c3a01a4d95c2plougher struct squashfs_cache *block_cache; 57381c2c9226c527c2884c8bad943eed38e8dd9f06plougher struct squashfs_cache *fragment_cache; 58f9c72b137336d5c1d4bdf2792f2bc5142713676bplougher int next_meta_index; 59b4558d4ffb4c30c8b0ac12394996c7c77519b265plougher __le64 *id_table; 60b4558d4ffb4c30c8b0ac12394996c7c77519b265plougher __le64 *fragment_index; 6189014e7b564a1449f6c874329b1a8281836eb7f8plougher unsigned int *fragment_index_2; 621f413c84d736495fd61ff05ebe52c3a01a4d95c2plougher char *read_page; 632e3c34dab37cab724a4c7163c1db6d07616fecd3plougher struct mutex read_data_mutex; 642e3c34dab37cab724a4c7163c1db6d07616fecd3plougher struct mutex read_page_mutex; 652e3c34dab37cab724a4c7163c1db6d07616fecd3plougher struct mutex meta_index_mutex; 66f9c72b137336d5c1d4bdf2792f2bc5142713676bplougher struct meta_index *meta_index; 674dd715b94c322cea9781d88218e2df2e4c20c1beplougher z_stream stream; 68b4558d4ffb4c30c8b0ac12394996c7c77519b265plougher __le64 *inode_lookup_table; 691aef9e4f12365714fd95ac9a7a059ea4c7d6d846plougher long long inode_table; 701aef9e4f12365714fd95ac9a7a059ea4c7d6d846plougher long long directory_table; 71a79924528124a4d6368ffb11ffac3e76eb62b141plougher unsigned int block_size; 72a79924528124a4d6368ffb11ffac3e76eb62b141plougher unsigned short block_log; 73a79924528124a4d6368ffb11ffac3e76eb62b141plougher long long bytes_used; 74a79924528124a4d6368ffb11ffac3e76eb62b141plougher unsigned int inodes; 751f413c84d736495fd61ff05ebe52c3a01a4d95c2plougher}; 761f413c84d736495fd61ff05ebe52c3a01a4d95c2plougher#endif 77