can anybody please tell how the squashfs maps the disk block numbers to file system blocks. Basically i am saying about read_blocklist() in squashfs.
Thanks, Kapil
The squashfs metadata for a regular file looks roughly like this:
===== Header start_block: Position of the first block in the file file_size: Size of the file in bytes ... ===== Block list size0: 32-bit header for the first block size1 size2 ... =====
The block header contains the compressed size of the block. So we can calculate the position of any given block by adding up start_block and the sizes of all preceding blocks.
Playing around with my pure-ruby squashfs parser might help: https://github.com/vasi/squash.rb