1*79398b25SAndroid Build Coastguard Worker SQUASHFS 3.1 - A squashed read-only filesystem for Linux 2*79398b25SAndroid Build Coastguard Worker 3*79398b25SAndroid Build Coastguard Worker Copyright 2002-2006 Phillip Lougher <[email protected]> 4*79398b25SAndroid Build Coastguard Worker 5*79398b25SAndroid Build Coastguard Worker Released under the GPL licence (version 2 or later). 6*79398b25SAndroid Build Coastguard Worker 7*79398b25SAndroid Build Coastguard WorkerWelcome to Squashfs version 3.1-r2. Squashfs 3.1 has major improvements to 8*79398b25SAndroid Build Coastguard Workerthe Squashfs tools (Mksquashfs and Unsquashfs), some major bug fixes, new 9*79398b25SAndroid Build Coastguard Workerkernel patches, and various other smaller improvements and bug fixes. 10*79398b25SAndroid Build Coastguard WorkerPlease see the CHANGES file for a detailed list. 11*79398b25SAndroid Build Coastguard Worker 12*79398b25SAndroid Build Coastguard Worker1. MKSQUASHFS 13*79398b25SAndroid Build Coastguard Worker------------- 14*79398b25SAndroid Build Coastguard Worker 15*79398b25SAndroid Build Coastguard WorkerMksquashfs has been rewritten and it is now multi-threaded. It offers 16*79398b25SAndroid Build Coastguard Workerthe following improvements: 17*79398b25SAndroid Build Coastguard Worker 18*79398b25SAndroid Build Coastguard Worker1. Parallel compression. By default as many compression and fragment 19*79398b25SAndroid Build Coastguard Workercompression threads are created as there are available processors. 20*79398b25SAndroid Build Coastguard WorkerThis significantly speeds up performance on SMP systems. 21*79398b25SAndroid Build Coastguard Worker 22*79398b25SAndroid Build Coastguard Worker2. File input and filesystem output is peformed in parallel on separate 23*79398b25SAndroid Build Coastguard Workerthreads to maximise I/O performance. Even on single processor systems 24*79398b25SAndroid Build Coastguard Workerthis speeds up performance by at least 10%. 25*79398b25SAndroid Build Coastguard Worker 26*79398b25SAndroid Build Coastguard Worker3. Appending has been significantly improved, and files within the 27*79398b25SAndroid Build Coastguard Workerfilesystem being appended to are no longer scanned and checksummed. This 28*79398b25SAndroid Build Coastguard Workersignificantly improves append time for large filesystems. 29*79398b25SAndroid Build Coastguard Worker 30*79398b25SAndroid Build Coastguard Worker4. File duplicate checking has been optimised, and split into two separate 31*79398b25SAndroid Build Coastguard Workerphases. Only files which are considered possible duplicates after the 32*79398b25SAndroid Build Coastguard Workerfirst phase are checksummed and cached in memory. 33*79398b25SAndroid Build Coastguard Worker 34*79398b25SAndroid Build Coastguard Worker5. The use of swap memory was found to significantly impact performance. The 35*79398b25SAndroid Build Coastguard Workeramount of memory used to cache the file is now a command line option, by default 36*79398b25SAndroid Build Coastguard Workerthis is 512 Mbytes. 37*79398b25SAndroid Build Coastguard Worker 38*79398b25SAndroid Build Coastguard Worker1.1 NEW COMMAND LINE OPTIONS 39*79398b25SAndroid Build Coastguard Worker---------------------------- 40*79398b25SAndroid Build Coastguard Worker 41*79398b25SAndroid Build Coastguard WorkerThe new Mksquashfs program has a couple of extra command line options 42*79398b25SAndroid Build Coastguard Workerwhich can be used to control the new features: 43*79398b25SAndroid Build Coastguard Worker 44*79398b25SAndroid Build Coastguard Worker-processors <processors> 45*79398b25SAndroid Build Coastguard Worker 46*79398b25SAndroid Build Coastguard WorkerThis specifies the number of processors used by Mksquashfs. 47*79398b25SAndroid Build Coastguard WorkerBy default this is the number of available processors. 48*79398b25SAndroid Build Coastguard Worker 49*79398b25SAndroid Build Coastguard Worker-read_queue <size in Mbytes> 50*79398b25SAndroid Build Coastguard Worker 51*79398b25SAndroid Build Coastguard WorkerThis specifies the size of the file input queue used by the reader thread. 52*79398b25SAndroid Build Coastguard WorkerThis defaults to 64 Mbytes. 53*79398b25SAndroid Build Coastguard Worker 54*79398b25SAndroid Build Coastguard Worker-write_queue <size in Mbytes> 55*79398b25SAndroid Build Coastguard Worker 56*79398b25SAndroid Build Coastguard WorkerThis specifies the size of the filesystem output queue used by the 57*79398b25SAndroid Build Coastguard Workerwriter thread. It also specifies the maximum cache used in file 58*79398b25SAndroid Build Coastguard Workerduplicate detection (the output queue is shared between these tasks). 59*79398b25SAndroid Build Coastguard WorkerThis defaults to 512 Mbytes. 60*79398b25SAndroid Build Coastguard Worker 61*79398b25SAndroid Build Coastguard Worker1.2 PERFORMANCE RESULTS 62*79398b25SAndroid Build Coastguard Worker----------------------- 63*79398b25SAndroid Build Coastguard Worker 64*79398b25SAndroid Build Coastguard WorkerThe following results give an indication of the speed improvements. Two 65*79398b25SAndroid Build Coastguard Workerexample filesystems were tested, a liveCD filesystem (about 1.8 Gbytes 66*79398b25SAndroid Build Coastguard Workeruncompressed), and my home directory consisting largely of text files 67*79398b25SAndroid Build Coastguard Worker(about 1.3 Gbytes uncompressed). Tests were run on a single core 68*79398b25SAndroid Build Coastguard Workerand a dual core system. 69*79398b25SAndroid Build Coastguard Worker 70*79398b25SAndroid Build Coastguard WorkerDual Core (AMDx2 3800+) system: 71*79398b25SAndroid Build Coastguard WorkerSource directories on ext3. 72*79398b25SAndroid Build Coastguard Worker 73*79398b25SAndroid Build Coastguard WorkerLiveCD, old mksquashfs: 74*79398b25SAndroid Build Coastguard Worker 75*79398b25SAndroid Build Coastguard Workerreal 11m48.401s 76*79398b25SAndroid Build Coastguard Workeruser 9m27.056s 77*79398b25SAndroid Build Coastguard Workersys 0m15.281s 78*79398b25SAndroid Build Coastguard Worker 79*79398b25SAndroid Build Coastguard WorkerLiveCD, new par_mksquashfs: 80*79398b25SAndroid Build Coastguard Worker 81*79398b25SAndroid Build Coastguard Workerreal 4m8.736s 82*79398b25SAndroid Build Coastguard Workeruser 7m11.771s 83*79398b25SAndroid Build Coastguard Workersys 0m27.749s 84*79398b25SAndroid Build Coastguard Worker 85*79398b25SAndroid Build Coastguard Worker"Home", old mksquashfs: 86*79398b25SAndroid Build Coastguard Worker 87*79398b25SAndroid Build Coastguard Workerreal 4m34.360s 88*79398b25SAndroid Build Coastguard Workeruser 3m54.007s 89*79398b25SAndroid Build Coastguard Workersys 0m32.155s 90*79398b25SAndroid Build Coastguard Worker 91*79398b25SAndroid Build Coastguard Worker"Home", new par_mksquashfs: 92*79398b25SAndroid Build Coastguard Worker 93*79398b25SAndroid Build Coastguard Workerreal 1m27.381s 94*79398b25SAndroid Build Coastguard Workeruser 2m7.304s 95*79398b25SAndroid Build Coastguard Workersys 0m17.234s 96*79398b25SAndroid Build Coastguard Worker 97*79398b25SAndroid Build Coastguard WorkerSingle Core PowerBook (PowerPC G4 1.5 GHz Ubuntu Linux) 98*79398b25SAndroid Build Coastguard WorkerSource directories on ext3. 99*79398b25SAndroid Build Coastguard Worker 100*79398b25SAndroid Build Coastguard WorkerLiveCD, old mksquashs: 101*79398b25SAndroid Build Coastguard Worker 102*79398b25SAndroid Build Coastguard Workerreal 11m38.472s 103*79398b25SAndroid Build Coastguard Workeruser 9m6.137s 104*79398b25SAndroid Build Coastguard Workersys 0m23.799s 105*79398b25SAndroid Build Coastguard Worker 106*79398b25SAndroid Build Coastguard WorkerLiveCD, par_mksquashfs: 107*79398b25SAndroid Build Coastguard Worker 108*79398b25SAndroid Build Coastguard Workerreal 10m5.572s 109*79398b25SAndroid Build Coastguard Workeruser 8m59.921s 110*79398b25SAndroid Build Coastguard Workersys 0m16.145s 111*79398b25SAndroid Build Coastguard Worker 112*79398b25SAndroid Build Coastguard Worker"Home", old mksquashfs: 113*79398b25SAndroid Build Coastguard Worker 114*79398b25SAndroid Build Coastguard Workerreal 3m42.298s 115*79398b25SAndroid Build Coastguard Workeruser 2m49.478s 116*79398b25SAndroid Build Coastguard Workersys 0m13.675s 117*79398b25SAndroid Build Coastguard Worker 118*79398b25SAndroid Build Coastguard Worker"Home", new par_mksquashfs: 119*79398b25SAndroid Build Coastguard Worker 120*79398b25SAndroid Build Coastguard Workerreal 3m9.178s 121*79398b25SAndroid Build Coastguard Workeruser 2m50.699s 122*79398b25SAndroid Build Coastguard Workersys 0m9.069s 123*79398b25SAndroid Build Coastguard Worker 124*79398b25SAndroid Build Coastguard WorkerI'll be interested in any performance results obtained, especially from SMP 125*79398b25SAndroid Build Coastguard Workermachines larger than my dual-core AMD box, as this will give an indication of 126*79398b25SAndroid Build Coastguard Workerthe scalability of the code. Obviously, I'm also interested in any problems, 127*79398b25SAndroid Build Coastguard Workerdeadlocks, low performance etc. 128*79398b25SAndroid Build Coastguard Worker 129*79398b25SAndroid Build Coastguard Worker2. UNSQUASHFS 130*79398b25SAndroid Build Coastguard Worker------------- 131*79398b25SAndroid Build Coastguard Worker 132*79398b25SAndroid Build Coastguard WorkerUnsquashfs now allows you to specify the filename or directory that is to be 133*79398b25SAndroid Build Coastguard Workerextracted from the Squashfs filesystem, rather than always extracting the 134*79398b25SAndroid Build Coastguard Workerentire filesystem. It also has a new "-force" option, and all options can be 135*79398b25SAndroid Build Coastguard Workerspecified in a short form (-i rather than -info). 136*79398b25SAndroid Build Coastguard Worker 137*79398b25SAndroid Build Coastguard WorkerThe Unsquashfs usage info is now: 138*79398b25SAndroid Build Coastguard Worker 139*79398b25SAndroid Build Coastguard WorkerSYNTAX: ./unsquashfs [options] filesystem [directory or file to extract] 140*79398b25SAndroid Build Coastguard Worker -v[ersion] print version, licence and copyright information 141*79398b25SAndroid Build Coastguard Worker -i[nfo] print files as they are unsquashed 142*79398b25SAndroid Build Coastguard Worker -l[s] list filesystem only 143*79398b25SAndroid Build Coastguard Worker -d[est] <pathname> unsquash to <pathname>, default "squashfs-root" 144*79398b25SAndroid Build Coastguard Worker -f[orce] if file already exists then overwrite 145*79398b25SAndroid Build Coastguard Worker 146*79398b25SAndroid Build Coastguard WorkerTo extract a subset of the filesystem, the filename or directory 147*79398b25SAndroid Build Coastguard Workertree that is to be extracted can now be specified on the command line. The 148*79398b25SAndroid Build Coastguard Workerfile/directory should be specified using the full path to the file/directory 149*79398b25SAndroid Build Coastguard Workeras it appears within the Squashfs filesystem. The file/directory will also be 150*79398b25SAndroid Build Coastguard Workerextracted to that position within the specified destination directory. 151*79398b25SAndroid Build Coastguard Worker 152*79398b25SAndroid Build Coastguard WorkerThe new "-force" option forces Unsquashfs to output to the destination 153*79398b25SAndroid Build Coastguard Workerdirectory even if files or directories already exist. This allows you 154*79398b25SAndroid Build Coastguard Workerto update an existing directory tree, or to Unsquashfs to a partially 155*79398b25SAndroid Build Coastguard Workerfilled directory. Without the "-force" option, Unsquashfs will 156*79398b25SAndroid Build Coastguard Workerrefuse to overwrite any existing files, or to create any directories if they 157*79398b25SAndroid Build Coastguard Workeralready exist. This is done to protect data in case of mistakes, and 158*79398b25SAndroid Build Coastguard Workerso the "-force" option should be used with caution. 159