ext3 0.9.12 for 2.4.10-ac11

From: Andrew Morton (akpm@zip.com.au)
Date: Thu Oct 11 2001 - 00:22:46 EST

An ext3 update for Alan's latest kernel is at


The version of ext3 in -ac kernels currently stands at 0.9.6, so
this is a fairly large diff. However most of this code has had a
decent amount of external testing via the 0.9.9 patch. The changelog
since 0.9.6 is below.

Please test it if you can, and all being well we shall ask Alan
to merge it a few days hence.

Most ext3 work at present is concentrating on -ac kernels. The
change rate in Linus' kernels seems to have slowed now, so we'll
try to get a 2.4.11 version of ext3 ready for next week.

There is a core kernel change in this diff which should be

generic_file_write() has been altered so that it always calls
commit_write(), even if the copy_from_user() faulted. This change
is already present in Linus' kernel - it is a generic bugfix which
prevents leakage of stale disk data in rare circumstances.

lo_send() has also been changed so that it too calls commit_write()
if prepare_write() succeeded.

The net result is that all prepare_write()/commit_write() calls
are now balanced, so the abort_write() a_op (which was introduced
to cope with the perpare-but-no-commit error case) has been

This is an internal kernel API change! All callers of prepare_write()
must now call commit_write() if the prepare_write() succeeded.


- 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.)


- Fix an NFS oops when doing a local delete on an active, nfs-exported

- 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)


- 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.


- 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

- 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.



- Fix truncate deadlock

- Fix bmap oops on data-journaled filesystems


- Cleanup some error messages


- 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
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/

This archive was generated by hypermail 2b29 : Mon Oct 15 2001 - 21:00:37 EST