-*- outline -*-
This directory contains patches that are queued for sending to Linus
for inclusion into next official kernel.

They are not yet thoroughly tested (december, 11, 2001) and your testing and
feedback are most welcome.

All patches are subject to in-place modification without further notice.
They should be applied in alphabetical order against vanilla official
kernel.

B-check_nlink_in_reiserfs_read_inode2.patch
   It is possible that knfsd is trying to access inode of a file
   that is being removed from the disk by some other thread. As we
   update sd on unlink all that is required is to check for nlink
   here. This bug was first found by Sizif when debugging
   SquidNG/Butterfly, forgotten, and found again after Philippe
   Gramoulle <[email protected]> reproduced it.

   More logical fix would require changes in fs/inode.c:iput() to
   remove inode from hash-table _after_ fs cleaned disk stuff up and
   in iget() to return NULL if I_FREEING inode is found in
   hash-table.

C-bitmap-range-checking.patch
   Check that block number are going to free in a bitmap makes sense.
   This avoids oops after trying to access bitmap for wild block number.

D-prepare_for_delete_or_cut-cleanup.patch
   Patch by Chris Mason <[email protected]>.
   prepare_for_delete_or_cut() tries to find the unformatted node in
   the buffer cache to make sure it isn't in use.  Since unformatted
   nodes are never in the buffer cache, this check is useless.  The
   page locking done by mm/vmscan.c:vmtruncate protects us from
   truncating away pages that are in use, so it is safe to just remove
   the bogus check from our code.

   Since the get_hash_table was also the reason for the repeat loop,
   this patch removes it as well.  Light testing here, I had put an
   older version through more tests (before the RFALSE/big endian
   stuff), I'll run them again.

   This should make file deletes faster, at the very least it cuts down
   on CPU overhead for deletes/truncates.

E-cleanup.patch
   There is always place for Yet Another Cleanup of Reiserfs Code.

F-unlink-truncate-opened.patch
   Fixes long-standing problem in reiserfs, when disk space gets leaked
   if crash occurred when some process hold a reference to unlinked file.

   It's possible to unlink file that is still opened by some
   process. In this case, body of file is actually removed at the time
   of last close. If crash occurs in between last unlink (when
   directory entry for this file is removed) and last close, body
   doesn't get unlinked and "disk-space-leak" occurs. To prevent this,
   unlink-truncate-opened patch stores in a tree special record at the
   time of last unlink. This record is some form of logical logging and
   will be either removed during following close, or replayed during
   next mount after a crash.

G-chown-32-bit-fix.patch
       Reiserfs 3.5 disk format can only store 16 bit uid/gid inside
       stat-data. This patch adds error checking so that EINVAL is returned
       on attempt to change uid/gid of an old file to value that doesn't
       fit into 16 bit, in stead of silently truncating it into 16 bit.

       This, of course, requires that CONFIG_UID16 is *not* being set in
       your kernel     .config file.

H-journal-preallocated.patch
   Patch by Chris Mason for bug found and debugged by Anne Milicia
   ([email protected]): don't run preallocated blocks
   through journal_mark_freed() and don't corrupt i_prealloc_block during
   __discard_prealloc().

I-double-replay.patch
   Patch by Chris Mason to avoid duplicate replay of last flushed
   transaction.

J-infinite-replay.patch
   Patch to break infinite loop in journal_read() in a case when
   journal log area is completely filled with transactions.

K-big-endian-const.patch
   Suppress compilation warnings on big endian platform.

L-kreiserfsd-sleep-timeout.patch
   Correct a typo in fs/reiserfs/journal.c:
   interruptible_sleep_on_timeout() takes timeout in jiffies, rather
   than seconds.

M-remount-options.patch
   Handle more options on remount: notail, no_border,
   no_unhashed_relocation, hashed_relocation, test4

N-more-procfs.patch
   Gather information in /proc/fs/reiserfs about restarts of tree
   updates: this is small but useful addition to procinfo patch.

O-inode-attrs.patch
   Store some attributes on reiserfs inode persistently on disk. User
   level API to set and get inode attributes is the same as in ext2, so
   chattr(1) and lsattr(1) work where possible. All ext2 attributes and
   "notail" attribute are saved and inherited across directory
   hierarchy, but only following are currently implemented: immutable,
   noatime, and notail. One cannot set and get "notail" attribute with
   current version of e2fsprogs, but this will be supported in a
   future.

   Attributes are only supported on 3.6 disk format file system.

   Inode attributes are stored in previously unused field of
   stat-data. It may happen that this field actually contains garbage,
   so after applying this patch it's recommended to run

       chattr -R = /reiserfs-mount-point

   for each reiserfs file system. To activate attributes, pass "attrs"
   mount option to reiserfs. This option will have no effect (save for
   warning) until special flag is set in reiserfs super-block. This is because
   said garbage on root file-system can prevent system from booting
   (for example spurious immutable bit on /dev/console). This flag
   will be set by future releases of reiserfsck once it clears all
   attributes fields.

P-reiser_stats_fix.patch
   Cleans up old_format_only macros to a correct state. Introduces on-disk
   properties variable in reiserfs_superblock (currently for storing
   on-disk format). REISERFS_CONVERT is now only used to see if conv
   mount option was specified.

Q-find-hash.patch
   Fixes mount/remount options handling

^ Local variables:
^ mode-name: "patch set"
^ indent-tabs-mode: nil
^ tab-width: 4
^ outline-regexp: "[A-Z]-.*"
^ eval: (progn (hide-body) (flyspell-mode))
^ End: