Go to the first, previous, next, last section, table of contents.


`none' method

The "compression algorithm" in `fs/ext2/none.c' just returns 0, meaning "I couldn't compress this cluster to any smaller than it is, so just store it in uncompressed form."

From the release notice for e2compr-0.3.1:

One problem with using e2compr has been that while the kernel does compression, the whole machine is effectively frozen. [This has been largely fixed since release 0.3.1.]

While this has not been fixed, there's now a workaround that some people may find very useful.

Once your files have been compressed, use `touch /scratch/file; chattr -m none FILES_AND_DIRS'. Further writes to these files and within these directories will not use compression. Then when you want the compression to take place:

find files_and_dirs -type f -newer /scratch/file -print0 | 
  xargs -0 chattr -m gzip9;
touch /scratch/file2;
find files_and_dirs -type f -newer /scratch/file -print0 |
  xargs -0 chattr -m none;
mv /scratch/file2 /scratch/file

(Of course `/scratch/file', `/scratch/file2' and files_and_dirs should be replaced with whatever's suitable/applicable for you.)

Changing the method from `none' to some other algorithm (using chattr) makes it apply the new compression algorithm to any uncompressed clusters (and only uncompressed clusters). (This is a special case for the `none' algorithm. Comments welcome on the e2compr list.)

Note that the previously-release chattr and lsattr didn't accept the `none' algorithm, so you must get the new e2compr program distribution to use this.

Not a perfect solution, but it's a useful trick.


Go to the first, previous, next, last section, table of contents.