-*- 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 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 . 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 (milicia@missioncriticallinux.com): 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: .