	SQUASHFS 3.1 - A squashed read-only filesystem for Linux

	Copyright 2002-2006 Phillip Lougher <phillip@lougher.org.uk>

	Released under the GPL licence (version 2 or later).

Welcome to Squashfs version 3.1-r2.  Squashfs 3.1 has major improvements to
the Squashfs tools (Mksquashfs and Unsquashfs), some major bug fixes, new
kernel patches, and various other smaller improvements and bug fixes.
Please see the CHANGES file for a detailed list.

1. MKSQUASHFS
-------------

Mksquashfs has been rewritten and it is now multi-threaded.  It offers
the following improvements:

1. Parallel compression.  By default as many compression and fragment
compression threads are created as there are available processors.
This significantly speeds up performance on SMP systems.

2. File input and filesystem output is peformed in parallel on separate
threads to maximise I/O performance.  Even on single processor systems
this speeds up performance by at least 10%.

3. Appending has been significantly improved, and files within the
filesystem being appended to are no longer scanned and checksummed.  This
significantly improves append time for large filesystems.

4. File duplicate checking has been optimised, and split into two separate
phases.  Only files which are considered possible duplicates after the
first phase are checksummed and cached in memory.

5. The use of swap memory was found to significantly impact performance. The
amount of memory used to cache the file is now a command line option, by default
this is 512 Mbytes.

1.1 NEW COMMAND LINE OPTIONS
----------------------------

The new Mksquashfs program has a couple of extra command line options
which can be used to control the new features:

-processors <processors>

This specifies the number of processors used by Mksquashfs.
By default this is the number of available processors.

-read_queue <size in Mbytes>

This specifies the size of the file input queue used by the reader thread.
This defaults to 64 Mbytes.

-write_queue <size in Mbytes>

This specifies the size of the filesystem output queue used by the
writer thread.  It also specifies the maximum cache used in file
duplicate detection (the output queue is shared between these tasks).
This defaults to 512 Mbytes.

1.2 PERFORMANCE RESULTS
-----------------------

The following results give an indication of the speed improvements.  Two
example filesystems were tested, a liveCD filesystem (about 1.8 Gbytes
uncompressed), and my home directory consisting largely of text files
(about 1.3 Gbytes uncompressed).  Tests were run on a single core
and a dual core system.

Dual Core (AMDx2 3800+) system:
Source directories on ext3.

LiveCD, old mksquashfs:

real    11m48.401s
user    9m27.056s
sys     0m15.281s

LiveCD, new par_mksquashfs:

real    4m8.736s
user    7m11.771s
sys     0m27.749s

"Home", old mksquashfs:

real    4m34.360s
user    3m54.007s
sys     0m32.155s

"Home", new par_mksquashfs:

real    1m27.381s
user    2m7.304s
sys     0m17.234s

Single Core PowerBook (PowerPC G4 1.5 GHz Ubuntu Linux)
Source directories on ext3.

LiveCD, old mksquashs:

real    11m38.472s
user    9m6.137s
sys     0m23.799s

LiveCD,  par_mksquashfs:

real    10m5.572s
user    8m59.921s
sys     0m16.145s

"Home", old mksquashfs:

real    3m42.298s
user    2m49.478s
sys     0m13.675s

"Home", new par_mksquashfs:

real    3m9.178s
user    2m50.699s
sys     0m9.069s

I'll be interested in any performance results obtained, especially from SMP
machines larger than my dual-core AMD box, as this will give an indication of
the scalability of the code.  Obviously, I'm also interested in any problems,
deadlocks, low performance etc.

2. UNSQUASHFS
-------------

Unsquashfs now allows you to specify the filename or directory that is to be
extracted from the Squashfs filesystem, rather than always extracting the
entire filesystem.  It also has a new "-force" option, and all options can be
specified in a short form (-i rather than -info).

The Unsquashfs usage info is now:

SYNTAX: ./unsquashfs [options] filesystem [directory or file to extract]
	-v[ersion]		print version, licence and copyright information
	-i[nfo]			print files as they are unsquashed
	-l[s]			list filesystem only
	-d[est] <pathname>	unsquash to <pathname>, default "squashfs-root"
	-f[orce]		if file already exists then overwrite

To extract a subset of the filesystem, the filename or directory
tree that is to be extracted can now be specified on the command line.  The
file/directory should be specified using the full path to the file/directory
as it appears within the Squashfs filesystem.  The file/directory will also be
extracted to that position within the specified destination directory.

The new "-force" option forces Unsquashfs to output to the destination
directory even if files or directories already exist.  This allows you
to update an existing directory tree, or to Unsquashfs to a partially
filled directory.  Without the "-force" option, Unsquashfs will
refuse to overwrite any existing files, or to create any directories if they
already exist.  This is done to protect data in case of mistakes, and
so the "-force" option should be used with caution.
