e2compr_0.4.53

Changes

5 June 2008
Matthias Winkler <matthiaswinkler@users.sourceforge.net>
* released version 0.4.53
* fixes himem bug: unmapped block in ext2_decompress_cluster()
* fixes bdev bug: ext2_get_block() must be called for every block
which cause ooops because of bdev == NULL. ext2_get_block() will
set the correct bdev and the correct blocknumber of the block.

NEVER assign bdev manually, because the blocknumber might be random then:
"block->b_bdev = something" (DON'T!)

ALWAYS use:
if (!buffer_mapped(block)) || (block->b_bdev == NULL)
ext2_get_block()

Bdev bug is closely related to file holes (empty block in a file).
If compressed data will be written to a former hole, then
usually ext2_get_block() must be called with create.
ext2_get_block( , , , 1 /*create*/).

* fixed missing include in xattr.h
* EXT2_COMPRBLK might be removed during compression if a cluster
doesn't compress. During compression we re-raise EXT2_COMPRBLK
flag after every cluster now.
* added missing export of __pagevec_free to (mm/page_alloc.c)
* deny O_DIRECT access mode after open of a file using fcntl()
(in fs/fcntl.c).
* file.c:
Replaced ext2_filew_write() to use kernels generic
do_sync_write(). Writing on compressed files calls
ext2_filew_write():
- divide write range into clusters
- ext2_decompress_cluster (if needed)
- do_sync_write()
- ext2_compress_cluster (if needed)
* inode.c:
ext2_writepage()/ext2_writepages() usually writes back
dirty pages of an inode. They reside in the kernels page cache.
This pages might e.g. be written/dirtied by a mmap()-ped file.
Also generic_file_aio_write() uses ext2_writepage() finally.
I don't see how the ext2_writepage() would handle compressed
files, so I re-inserted and re-wrote this part of old 2.4 code.
Don't know if this code (USE_WRITEPAGE) is needed at all.
So I leave it disabled by default. Enabled it might
leave compressed files with compression ratio of 100%.
Don't use yet!

17 April 2008
Matthias Winkler <matthiaswinkler@users.sourceforge.net>
* first patch for kernel 2.6.25 released

20 March 2008
Matthias Winkler <matthiaswinkler@users.sourceforge.net>
* version 0.4.52: EXT2_COMPRESS_WHEN_CLU didn't work. this
feature enables compression during file write.

Posted by matthias 2008-06-25