To: e2compr@list.fuller.edu Subject: e2compr-0.3.5 pre-release --text follows this line-- The main changes for e2compr-0.3.5 are already ready and tested, so I thought I'd make them available on a pre-release basis. You get the improvements earlier, and others get the confidence of a wider test base. Just to give _you_ confidence: I've run the 2.0.29 kernel for a week or two and the 2.1.42 kernel for almost a week (though for fairness I should say that I made one change only yesterday), I've done parallel kernel compiles and `cp -R' to find race conditions, and e2decompress -f --stress-test --to-stdout works without warning and compares identically with original file (as decompressed by kernel) for all the files on my hard drive. The test even identified a file with a corrupt indirect cluster bitmap block! [I think the e2decompress testing did highlight a defficiency in the current architecture of e2compr, namely that a file can be accessed in either raw or interpreted (decompressed) form, but not both simultaneously by different processes. That is why e2decompress refused to work on a handful of the files I tested, because they were already open by other processes. Such architectural changes won't happen this year.] Things that may be present in 0.3.5 release but not available now: lzo algorithm (expected to be faster but not as compressing as current algorithms), probably a patch for 2.1.47 (or later), possibly updated e2fsprogs, possibly more work on the documentation in linux/fs/ext2. There's a patch for 2.0 kernels and another for 2.1.42. You should also get the ancillary package, which contains an updated e2compress and documentation. Could someone see whether the 2.1.42 patch works with 2.1.47? You might like to look at the mark_inode_dirty() function and see whether we should be calling that rather than setting inode->i_dirt = 1. An unfinished announcement for the real e2compr-0.3.5 release appears below. pjm. This is to announce the release of version 0.3.5 of e2compr, the software that does transparent file compression and decompression in the kernel. It is available from the web site, CHANGES (in decreasing order of importance): + Compression routines now share the CPU with other processes. + Read access to raw compressed data is now provided. (I.e. `chattr +X' (EXT2_NOCOMPR_FL) now works for read access as well as write access.) This means that `e2decompress' really _does_ do decompression in user space. + The definition of EXT2_ECOMPR_FL (i.e. the compression error indicator seen in lsattr output) as changed to avoid a clash with EXT2_NOATIME_FL (which is defined in kernel 2.1). You may want to do find / -fstype ext2 \( -type f -o -type d \) -print0 | xargs -0 chattr -E before installing. + Documentation is getting a bit better. It's now in the form of a Texinfo file, so you can read it and search through it with `info' (or make a nice-looking printout if you're so inclined). There's been no major rewrite, but new work has been added here and there, and some other sections have been updated. Also, the file fs/ext2/Readme.e2compr contains slightly more programming information (both for user-level programmers and for people reading the kernel source). + Files with the `E' attribute (EXT2_ECOMPR_FL) are now allowed to be read, but you should see an "I/O error" when trying to access a cluster with an error in it. + Big-endian changes: we now read/write the cluster head as little-endian rather than native-endian. Also, the 2.1 patch now stores the inode information in little-endian format. (The 2.0 patch still stores it in host-endian format, as this is what the rest of the 2.0 kernel does.) THESE CHANGES WILL BREAK EXISTING BIG-ENDIAN INSTALLATIONS! But then, no-one has written to tell me of their success or otherwise with using e2compr on a non-x86 platform, so I can only assume that there isn't anyone. If you constitute counter-proof by example, then you should decompress all your existing e2compressed files before running the new kernel. See the e2compr.texinfo file (sections on uninstalling and fragmentation) for some notes on disk-near-full situations. Also send a note to the e2compr mailing list so that I and others know of your existance. + There are also some other changes, that I don't expect anyone to notice. A requested changes not made: + I have not added the LZO algorithm, but I have written some documentation on how to add new algorithms to e2compr :-) . The new documentation is in linux/fs/ext2/new-method-howto.c. I read in the LZO-1.00 announcement that it is now easier to embed in other applications than in the past. Credit + Inspiration for how to share the CPU came from Ivan Shvedunov , who sent me some code to put a bubblesort system call into the kernel :-) . More importantly, it spawned a kernel thread and periodically called schedule(). (Incidentally, e2compr doesn't spawn a new kernel thread.) pjm.