0.9.0 ----- - Multiplied the version numbering by ten to cater for bugfix releases against the 0.9.0 stream. - The main thrust has been the removal of a number of changes in the core kernel which were required for to support the journalling of data. This has caused some duplication of core code within ext3, but it's not too bad. - A number of cleanups and resyncs with latest ext2. (Thanks, Al). - Reorganised and optimised ext3_write_inode() and the handling of files which were opened O_SYNC. - Move quota operations outside lock_super() - fixes last known source of quota deadlocks in -ac kernels. - Deleted large chunks of debug/development support code. - Improved handling of corner-case errors. - Improved robustness in out-of-memory situations. 0.9.1 ----- - Fix unaligned access on Alpha - Fix build with CONFIG_JBD=n - Speed up log_do_checkpoint() - significant benefits for journalled data mode. - Fix possible oops in log_do_checkpoint(). - Comment out unused journal_release-buffer(). 0.9.2 ----- - Fix bogus duplicated journal_forget on block allocation contention paths. 0.9.3 ----- - Rework checkpoint cleanup code to eliminate an O(n^2) performance bottleneck. - Improve efficiency of commit code. - Add two rescheduling points in commit to avoid starving other threads - Fix an assertion which was triggering in journalled data mode when write and mmap are both used on the same file. - Fix a several-second busy spin which could occur under heavy load. 0.9.4 ----- - Fixed an oopsable bug in log_do_checkpoint where released memory could be touched. - Performance tuning in log_do_checkpoint. - Performance tuning in commit during sync_data writeout. - Tidy up memory allocation routines, rate-limit out-of-memory diagnostic messages. - Enabled slab cache poisoning for journal_head structures. - Don't call an __exit function from __init. Fixes ia64 linkage problems. - Honour the VM layer's requests for synchronous writes in journal_try_to_free_buffers(). This can halve system CPU utilisation under certain loads. It also reduces throughput slightly under some loads. 0.9.5 ----- - Fixed a bug which could trip an assertion failure when using small journals under heavy load in full data journalling mode. - A patch from Ted plus the latest version of e2fsprogs plus the stomping of various ext3 bugs gives us preliminary support for external journals. - Redesigned the handling of synchronous operations. Much simplified and several bugs fixed. - Drastically improved throughput with synchronous mounts - they're now as efficient as `chattr +S'. - Fixed an O(n^2) bottleneck in the commit code. - Implemented transaction handle batching for a big throughput increase with synchronous operations. 0.9.6 ----- - Fix an endianness bug which causes failure on PPC and s390. 0.9.7 ----- - Merge in a large batch of changes to allow ext3 to recover gracefully from fatal errors. If the fs is set to remount-readonly on error, then we should still be able to unwind cleanly and unmount the filesystem. - Performance: don't write superblocks synchronously. This reduces a bottleneck in the VM. Load the ext3 module with the parameter "do_sync_supers=1" to restore the previous behaviour. - Performance: don't force a new transaction every time we sync (should prevent the writes previously happening every 5 seconds, allowing laptop drives to spin down again.) 0.9.8 ----- - Fix an NFS oops when doing a local delete on an active, nfs-exported file. - Add proper log levels to a lot of kernel warnings when mounting a bad filesystem or a fs with errors - Make sure we set the error flag both in the journal and fs superblocks on error (unless we're doing panic-on-error) 0.9.9 ----- - Fix the buffer-already-revoked assertion failure by looking up an aliased buffercache buffer and clearing the revoke bits in there as well as in the journalled data buffer. - Reorganise page truncation code so we don't take the address of block_flushpage(). This is to simplify merging with Andrea's O_DIRECT patch, which turns block_flushpage() into a macro. 0.9.10 ------ - Fix an oops which could occur at unmount time due to non-empty orphan list. This could be triggered by an earlier error during a truncate. - Merge Ted's directory scan speedup heuristic. - Remove the abort_write() address_space_operation() by ensuring that all prepare_write() callers always call commit_write(). - A number of changes to suit the new 2.4.10 VM and buffer-layer design. 0.9.11 ------ - Fix CONFIG_BUFFER_DEBUG builds - Fix truncate deadlock - Fix bmap oops on data-journaled filesystems - Add MODULE_LICENSE tags - Cleanup some error messages 0.9.12 ------ - Fix oops in directory readahead on empty (ie. deleted) directories - Handle new S_NOQUOTA flag for 2.4.10+ quota code - Revert i_truncate_sem vs i_sem lock ordering to original design. This fixes an obscure deadlock, but will deadlock 2.4.11's shmem.c. It's safe with 2.4.10-ac11's shmem.c 0.9.13 ------ - Remove compatibility ifdefs for old-style quotas. - Fix oops in ext3_writepage(). Truncate can zero page->mapping after block_write_full_page(). 0.9.14 ------ - Removed much debug code. Minimized core kernel changes as much as poss. - Move /proc/sys/fs/jbd-debug control up into jbd itself. - Removed i_truncate_sem, in favour of leaving the orphaned pages on the inactive_dirty LRU rather than swapping them out. 0.9.15 (Included in 2.4.15-pre2) ------ - oops. No change from 0.9.14 :) 0.9.16 02 Dec 2001 (Included in 2.4.17-pre6) ------------------- - Merged several ext2 sync-up patches from Christoph Hellwig - Drop the big kernel lock across the call to block_prepare_write. This was causing excessive contention on large SMP machines. Thanks to Anton ("dbench") Blanchard for finding this. - Fixed a couple of potential kmap leaks on error paths. There is some question whether the core kernel should be changed so that this is not necessary, but it is right for current kernels. - Fixed bugs concerning the use of bit operations on 32 bit quantities, which could cause problems on 64-bit hardware. Thanks davem. - Fix failure to return EFBIG when an attempt is made to lengthen an ext3 file to more than the maximum file size via ftruncate(). - Current ext3 can cause an assertion failure and take down the machine when an I/O error is encountered while mapping journal blocks in preparation for writing to the journal. Fix from Stephen turns the filesystem readonly when this occurs. - ext3 is presently marking data dirty itself, which defeats the core kernel's dirty buffer balancing. Take that out and let the generic layer mark the buffers dirty. This change, along with core kernel changes in 2.4.17-pre2 can potentially reduce system congestion under heavy write loads. - Update Documentation/Changes to reflect requirement for e2fsprogs version (1.25) - Update Documentation/Locking to describe the two address_space methods which ext3 introduced. 0.9.17 12 Jan 2002 (Included in 2.4.18-pre5) ------------------- - Cleanup from Manfred Spraul which provides better randomisation of inode generation numbers. - A locking fix which prevents possible panics when an application is using ioctl(FIBMAP) against a loaded filesystem. - Buffer locking fix for journal descriptor buffers - fixes the "end_request: buffer-list destroyed" crash which can occur under heavy VM load. - Buffer locking fix which could cause corruption if a process is reading rom the underlying block device while journal recovery is in progress.