IBM's Journaled File System (JFS) for Linux version 1.1.1
Team members
Dave Kleikamp     shaggy@austin.ibm.com  
Dave Blaschke     blaschke@us.ibm.com
Steve Best        sbest@us.ibm.com
Barry Arndt       barndt@us.ibm.com
Christoph Hellwig hch@infradead.org


Release March 25, 2003 (version 1.1.2)

This is our sixty-fifth release of IBM's Enterprise JFS technology port to
Linux.
Beta 1 was release 0.1.0 on 12/8/2000, Beta 2 was release 0.2.0 on 3/7/2001, 
Beta 3 was release 0.3.0 on 4/30/2001, and release 1.0.0 on 6/28/2001.

Function and Fixes in drop 65 (1.1.2)
   - Clean up code flushing outstanding transactions to the journal
   - Replace ugly debug macros with simpler ones
   - Add get_index_page to eliminate unneeded I/O
   - Fix hang while flushing outstanding transactions under heavy load
   - Avoid deadlock under very heavy load
   - Don't zero s_op during failed mount cleanup

Function and Fixes in drop 64 (1.1.1)
   - calling brelse() with wrong bh during writing out of secondary superblock 
     while resizing the FS
   - Remove COMMIT_Holdlock
   - jfs_clear_inode was assuming that active_ag should never be set comming into
     this routine. Since it's possible for a file to be extended after the file
     descriptor has been closed, we need to allow the possibility. (Dirty pages
     of memory mapped files can be written after the file has been closed.)
   - Avoid writing partial log pages for lazy transactions.
   - Move index table out of directory inode's address space.
   - jfs_truncate needs to call block_truncate_page


Function and Fixes in drop 63 (1.1.0)
   - Fix off-by-one error when symbolic link length == 256 (bug 1513)
   - jfs_clear_inode should skip bad inodes instead of choking on them (bug 1445)
   - Make txForce actually force the metadata to disk
   - Fix hang on umount after stress test(#21357) ACL problem
   - Fix byte-swapping problem in getting ealist->size (bug 21085) EA problem
  
Function and Fixes in drop 62 (1.0.24)
   - readSuper() was incorrectly checking return status of sb_bread()
   - change name of get_index to read_index fixes MIPS build issue
   - Releasing LOGGC_LOCK too early
      In txLazyCommit, we are releasing log->gclock (LOGGC_LOCK) before
      checking tblk->flag for tblkGC_LAZY. For the case that tblkGC_LAZY
      is not set, the user thread may release the tblk, and it may be
      reused and the tblkGC_LAZY bit set again, between the time we release
      the spinlock until we check the flag. This problem is easy to hit on
      a 2.5 kernel with CONFIG_PREEMPT set, but it is a potential problem
      on SMP as well.
      The fix is to hold the spinlock until after we've checked the flag.	

Function and Fixes in drop 61 (1.0.23)
   - detect and fix invalid directory index values
	The directory index values are the unique cookies used to resume
	a readdir at the proper place. These are stored with each entry
	in a directory. fsck.jfs does not currently validate these entries,
	nor even create them when populating the lost+found directory.
	This fix causes readdir to detect the invalid cookies, and generate
	new ones, if possible.
   - Fix problems with NFS
	Don't complain when read_inode is called with a deleted inode. This
	is normally done by revalidate.
	readdir: Don't hold metadata page while calling filldir(). NFS's
	filldir may call lookup() which could result in a hang.
   - Fix off-by-one error in dbNextAG
	In certain situations, dbNextAG set db_agpref to db_numag, is
	one higher than the last valid value. This will eventually result
	in a trap.
   - Avoid parallel allocations within the same allocation group
	When large files are writing in parallel, allocating the space for
	these files within the same allocation group can cause severe
	fragmentation of the files. By keeping track of open, growing files
	within an allocation group, we can force other new allocations into
	a different allocation group to avoid causing fragmentation.
   - Fix test in lmLogFileSystem
   - Remove assert(i < MAX_ACTIVE) when the external log can't be found.
   - Remove excessive typedefs   


Function and Fixes in drop 60 (1.0.22)
   - Use strtoul instead of strtoull
   - Add write_super_lockfs & unlock_fs used for snapshot
   - rework extent invalidation
   - cosmetic changes to reduce the diff to the bitkeeper tree
   - backport lmLogWait from 2.5
   - Remove unused jfs_extendfs.h
   - use buffer_heads to access the superblock
   - ifdef out unused functions related to partial blocks
   - sync the block device on umount or r/o remount
   - remove superfluous includes

Function and Fixes in drop 59 (1.0.21)
   - define sb_bread for kernels older than 2.4.18
   - C99-style initializers (Christoph Hellwig)
   - Add resize function to JFS
       This is invoked by mount -oremount,resize=<blocks>
       See Documentation/filesystems/jfs.txt for more information.
   - Remove d_delete calls from jfs_rmdir & jfs_unlink
   - Dynamically allocate metapage structures
       Use slab cache and pool of reserved structures to manage the metapage
       structures. This is set up similar to the mempool routines in the
       2.5 kernel. Previously a fixed number of these structures were
       preallocated. This did not scale well.
   - Rework JFS's inode locking	

Function and Fixes in drop 58 (1.0.20)
   - set s_maxbytes to 1 byte lower
      When i_size was (PAGE_CACHE_SIZE << 32), generic_file_read overflowed
      an index and failed on any read. Subtracting one fixes it.
   - procfs entries should be created when CONFIG_JFS_STATISTICS is set.
      Currently, if CONFIG_JFS_DEBUG is not set, no entries are created
      under /proc/fs/jfs, even if CONFIG_JFS_STATISTICS is set.
   - fix fsync (Christoph Hellwig)
      fsync is allowed to return early if datasysnc is set and the I_DIRTY_DATASYNC
      flags is cleared, not if either of those is true
   - JFS does not need to set i_version. It is never used. (Manfred Spraul)
   - Fix for truncate problem, assert(!test_cflag(COMMIT_Nolink, ip))
      kernel BUG at jfs_txnmgr.c537! (bugzilla #583)
   - Fix race in JFS kernel threads.
      Timing window existed between time threads dropped locks and slept, where
      the waker can try and wake the threads before they got to sleep.	
	 

Function and Fixes in drop 57 (1.0.19)
   - Fix powerpc64 compiler warnings
   - Fix structure alignment 
        xdlistlock_t must be the same size as maplock_t, whether pointers are
	32 bits or 64 bits.
	(fix for bugzilla #583, assert(blkno + nblocks <= bmp->db_mapsize) jfs_dmap.c:464!
   - Add Christoph's copyright to files he has significantly contributed to.
   - sanitize->clear_inode, remove ->put_inode (Christoph Hellwig)
	Rename the JFS->clear_inode from diClearExtension to the more descriptive 
	jfs_clear_inode, move it ti inode.c and clean it up a bit.
	Remove jfs_put_inode as in 2.5

Function and Fixes in drop 56 (1.0.18)
   - File truncate was not always enough space from the block map.
   - Bring 2.4 code in line with 2.5 and various cleanups (Christoph Hellwig)
   - JFS metapage changes (Christoph Hellwig)
	use the bdev mapping instead of JFS-private device mapping/inode
	add metapages to -> mp_list of the inode passed to __get_metpage
   - Reduce number of return paths in dbAlloc to two. This is in preparation
     for quota support. (Christoph Hellwig)
   - External journal support
	Add uuid to file system and journal
   - Add additional debug code to help debug mysterious uncommitted anonymous txns
   - Add xtAppend
   - Add lmLogFromat which is used to format the file system log
   - Add extern for diExtendFS
   - Increase number of transaction locks in JFS txnmgr
   - Make license boilerplate uniform, update copyright dates
   - No need to handle regular files in jfs_mknod (Christoph Hellwig)
   - Remove register keyword (Christoph Hellwig)
   - Simplify sync_metapage (Christoph Hellwig)  	

Function and Fixes in drop 55 (1.0.17)
   - Call sb_set_blocksize instead of set_blocksize in 2.5 (Christoph Hellwig)
   - Replace strtok by strsep (Christoph Hellwig)
   - Store entire device number in log superblock rather than just the minor.
   - Include file clean (Christoph Hellwig)
   - Fix race introduced by thread handling cleanups (Christoph Hellwig)
   - Detect dtree corruption to avoid infinite loop
   - JFS needs to include completion.h
   - Support external log(journal) device file system work part 1 (Christoph Hellwig)

Please send bugs, comments, cards and letters to shaggy@austin.ibm.com.

The JFS mailing list can be subscribed to by using the link labeled "Mail list Subscribe"
at our web page http://oss.software.ibm.com/jfs/.









