IBM's Journaled File System (JFS) for Linux version 1.0.5
Team members
Steve Best       sbest@us.ibm.com
Dave Kleikamp    shaggy@us.ibm.com  
Barry Arndt      barndt@us.ibm.com


Release September 14, 2001 (version 1.0.5)

This is our forty-third 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.
 
The changelog.jfs file contains detailed information of changes done in each source
code drop.

JFS has a source tree that can be built on 2.2.14 - 2.2.19 and 2.4.0 - 2.4.9
kernel.org source trees.

There is a anonymous cvs access available for the JFS tree. The steps below are
what is needed to pull the JFS cvs tree from the oss.software.ibm.com server.

id anoncvs
password anoncvs

To checkout 2.2.x series of the JFS files do the following:
CVSROOT should be set to :pserver:anoncvs@oss.software.ibm.com:/usr/cvs/jfs
cvs checkout linux-2.2.12

To checkout 2.4.x series of the JFS files do the following:
CVSROOT should be set to :pserver:anoncvs@oss.software.ibm.com:/usr/cvs/jfs
cvs checkout linux24

To checkout the JFS utilities do the following:
CVSROOT should be set to :pserver:anoncvs@oss.software.ibm.com:/usr/cvs/jfs
cvs checkout jfsutils

The jfs-2.4-1.0.5-patch.tar.gz file contains a readme and patch files for different
levels of the 2.4 kernel. Please see the README in the jfs-2.4-1.0.5-patch.tar.gz
file for help on applying the two patch files.

Similarly jfs-2.2-1.0.5-patch.tar.gz contains a readme and patch files for
different levels of the 2.2 kernel.

The following files in the kernel source tree have been changed so JFS can be built.
The jfs-2.4-1.0.5.tar.gz source tar ball now contains each of the files below with
the extension of the kernel level it is associated with. As an example, there are now
three Config.in files named Config.in-2.4.0, Config.in-2.4.5, and Config.in-2.4.7.

Similarly, the jfs-2.2-1.0.5.tar.gz source tar ball contains the files
Config.in-2.2.14, Config.in-2.2.16, and Config.in-2.2.18.

If you use the tar ball to build JFS you must rename each of the kernel files to the 
file names listed below. The standard kernel from www.kernel.org is the source of the 
kernel files that are included in the jfs tar files. 

Note: Some of these files below do not need to be changed for the 2.4.x series of the
kernel.

In sub dir fs Config.in, Makefile, filesystem.c
In sub dir fs/nls Config.in
In sub dir arch/i386 defconfig
In sub dir Documentation Configure.help
In sub dir Documentation/filesystems 00-INDEX
In sub dir include/linux fs.h
In sub dir linux MAINTAINERS
In sub dir linux/kernel/ksyms.c

Please backup the above files before the JFS patch file is added to the kernel source 
tree. There are three new header files in the sub dir include/linux named jfs_fs.h,
jfs_fs_i.h,and jfs_fs_sb.h. All other JFS files are located in the include/linux/jfs
or fs/jfs sub dirs.

Our development team has used the Linux kernel levels 2.2.14-2.2.19 and 
2.4.0 - 2.4.9 kernels with gcc version egcs-2.91.66 19990314/Linux (egcs-1.1.2 release) 
for our port so far. A goal of the JFS team is to have JFS run on all architectures
that Linux supports, there is no architecture specific code in JFS. JFS has been run
on the following architectures (x86, PowerPC, Alpha, s/390, ARM) so far. 

To make JFS build, during the "make config" step of building the kernel answer y to
the Prompt for development and/or incomplete code/drivers in the Code maturity level
options section. In the Filesystems section use the m for the answer to 
JFS filesystem support (experimental) (CONFIG_JFS_FS) [Y/m/n?]

Note: If you are use JFS as module on the 2.2.x series of the kernel you must rebuild 
the kernel and run that rebuilt kernel for JFS to run. The reason for this change is 
that JFS needs to export symbols. 

Build in /usr/src/linux with the command:


make modules
make modules_install

If you rebuild jfs.o after having mounted and unmounted a partition, "modprobe -r jfs" 
will unload the old module.

For the file system debugging messages are being written to /var/log/messages.

There are two ways to the build the JFS utilities, the first using the jfsprogs.spec
file and the second way is to run make and then make install in the 
/jfsutils sub dir.

To use the jfsprogs.spec located in sub dir jfsutils/SPECS you need to update
the version of JFS in the spec file, also the corresponding jfsutils-x.x.x.tar.gz file
must be in the SOURCES directory of your system. Now it's time to begin the build. First,
change into the directory holding jfsprogs.spec file:

cd /jfsutils/SPECS

Next, start the build with a rpm -b command:

rpm -ba jfsprogs.spec

The a following the -b option directs RPM to perform all phases of the build process.


The second way to build the utilities for JFS (mkfs, xpeek, logredo, xchkdmp, fsck, logdump, xchklog). 

Build in /jfsutils with the command:

make
make install

One of results of this build is a program called mkfs.jfs. 
To format a JFS partition use the following command.

     mkfs -t jfs device-name

will result in the specified device being formatted.



JFS TODO list:

Plans for our near term development items

   - Fix for 2.2.* SMP kernel hangs
   - get defrag capabilities operational in the FS
   - get extendfs capabilities operational in the FS
   - test EXTENDFS utility, for growing JFS partitions
   - test defrag utility, calls file system to defrag the file system.
   - add support for block sizes (512,1024,2048)
   - add support for logfile on dedicated partition

   
Longer term work items

   - get access control list functionality operational
   - get extended attributes functionality operational
   - add quota support

Please send bugs, comments, cards and letters to linuxjfs@us.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/.
