Exhibit 28-B- SCO's List of "AIX Files & Lines in Code Drop for Linux 2.2.12"

Wednesday, June 02 2004 @ 09:47 PM EDT

Contributed by: PJ

Here is Exhibit 28B, SCO's list of "AIX Files & lines in code drop for Linux 2.2.12", attached to the Declaration of Todd M. Shaughnessy.

In SCO's Second Amended Complaint, paragraphs 99 and 100, they accuse IBM as follows:

"99. . . .IBM contributed key technology to Linux for enterprise use. Among the numerous contributions are the AIX Journaling File Systems, the AIX Enterprise Volume Management System, and the Dynix/ptx Read Copy Update technology.

"100. The contribution of the Journaling File System ('JFS') was done in a series of 'drops' of AIX code identified as 'reference files' inside Linux. The first such drop occurred on or about February 2000, with multiple additions and significant follow-up work by IBM since that time to adapt AIX/JFS for enterprise use inside Linux. These drops of reference files do not necessarily become part of the source code in the Linux kernel, but rather are public displays of the Protected Materials so that anyone has access to them and can use them to construct similar file in Linux. The first drop contains (a) a partially functioning port, or transfer, of JFS from AIX to Linux; (b) a set of reference directories (named ref/) which contain the AIX reference version of AIX/JFS; (c) AIX/JFS-related utility files used to maintain and upkeep AIX/JFS; and (d) a set of directories (named directory ref_utils/) which contain the AIX reference version of utilities. Copies of AIX/JFS files into Linux are shown in Table A, below. Table A compares a 1999 version of AIX and shows the following similarities, demonstrating copying of code, structures and/or sequences."

The problem with SCO's position is quite simply this: IBM's JFS didn't come from AIX, from what I see in the historical record. It came from OS/2, and then was ported separately to Linux and to AIX.

In that connection, you might find this interview from 2001 with IBM's Steve Best about JFS of interest. He clearly states that the JFS they donated to Linux came not from AIX but from OS/2. AIX got it from OS/2 as well:

"1. What is the current status of JFS for Linux? Is it 100% ready for a production level environment?

"Steve Best: Yes, We did our 1.0.0 release which was production level ready on 6/28/01.

"2. What are its biggest differences (good or bad) when compared to ReiserFS and XFS?

"Steve Best: Feature wise Juan I. Santos Florido, did a very good article comparing the journaling file system being developed for Linux. The article is called 'Journal File Systems' was published by the Linux Gazette on 7/2000.

"Juan used some of the information for his article about JFS by viewing a white paper that Dave Kleikamp and I have wrote describing the layout structures that JFS uses.

"3. What are the differences between the Linux version of JFS and the one found on OS/2?

"Steve Best: The JFS for Linux is a port from OS/2 and has an OS/2 compatibility option. The OS/2 source was also used for the JFS2 just release on AIX 5L. There is a JFS1 on AIX and we didn't use this source base, since the OS/2 source base was a new 'ground-up' scalable design started in 1995. The design goals were to use the proven Journaling File System technology that we had developed for 10+ years in AIX and expand on that in the following areas: Performance, Robustness, and SMP support. Some of the team members for the original JFS designed/developed this File System. So this source base for JFS for Linux is now on the following other Operating Systems: OS/2 Warp Server for e-business 4/99; OS/2 Warp Client (fixpack 10/00); AIX 5L called JFS2 4/01

"8. Which part of JFS you would like to change, update, extend or even re-design? What are the future plans for JFS?

"Steve Best: The design for JFS is proven now on several different operating systems and I currently see no major change in this design. We still have performance tuning to do for JFS for Linux and this will be one of our major areas that we will work on in the coming months.

"One good part of working in the file system area of Linux right now is that there are 4 journaling file systems being actively developed and all are GPL, so it is possible that each file system can improve by sharing the best design points.

"The JFS team has worked together for several years and started the port of JFS to Linux in December of 1999. We took the approach of release early and often. Our first release was done on 2/2/2000 and we have done 41 releases so far. In general we do a new release about every 2 weeks and if possible provide patches to problems as they are fixed. We still have new features to add to JFS and will continually enhance this file system.

"Some of the goals of the JFS team are to have JFS run on all architectures that Linux supports. With the help of the Linux community JFS has run on (ia32, ia64, PowerPC 32 and 64, Alpha, s/390 31 and 64 bit, ARM). The community members are helping us debug some problems that JFS has on SPARC and PA-RISC, so we should have this architectures running shortly. JFS has no architecture specific code included in it.

"Another goal is have JFS included in the kernel.org source tree. When we started the port the team decided that we weren't going to change any of the kernel and this would allow JFS to be easily integrated into the kernel." [Emphasis added.]

This directly contradicts SCO's narrative about its efforts to do discovery in the recent Memorandum Regarding Discovery, in which they claimed that JFS1 from AIX was used:

". . . SCO has spent countless hours, and sometimes fruitless effort, trying to track the improper use of UNIX System V code in Linux through AIX and Dynix.

"In the absence of the code, programs and other materials requested, the following tasks and efforts have been undertaken by SCO: Identification and tracing of certain UNIX System V file system code, including structures, sequences, and interfaces in UNIX System V code, that became modified or derivative file system (JFS1) code in AIX; identification and tracing of the same file system code (JFS1) in AIX to modified, derivative file system (JFS2) code also in AIX; and identification and tracing of the same file system code (JFS2) to modified, derivative file system code in Linux, to the extent possible based on the limited production made available by IBM."

Countless hours spent on a fruitless search is an accurate statement. My question is this: If I can find the information about JFS' lineage, why can't SCO? Oh, don't tell me. I know. They need IBM to find it for them.

SCO has made a lot of noise about how impossible it would have been for Linux to scale without IBM, but IBM back then, not in connection with any lawsuit, said it was the other way around. They donated some code, but the community made it grow and improve. You can read IBM's JFS page or go to Steve Best's JFS page for more details.

This 2000 article reinforces and confirms those facts:

"IBM is donating its Journaled File System (JFS) technology to the Linux open source community with the goal of completing a port to Linux. The JFS technology, which is currently used in the IBM OS/2 Warp Server, is now an open source project on developerWorks. The code is available under the GPL license.

"IBM has started the port to Linux and is making the source code available so the community can participate in the effort. Key functions such as format, file system mount/unmount, and directory list are operational on Linux today.

"'We've ported the code to the point where it is a buildable work environment for the community,' said Mark Peloquin, file systems specialist in the IBM Linux Technology Center. The code is not fully operational on Linux; rather it is at what the team considers the minimum level to enable the community to build the code, evaluate it, and grow the effort.

"'We'll continue to drop code as we develop it,' said Steve Best, team leader for the project at IBM. 'Getting the community involved is the best way to get feedback on what we're doing.'

"The origins of the IBM technology

"The JFS open source code on developerWorks originates from that currently shipping with the OS/2 Warp Server for e-business. As a fairly mature IBM technology, JFS provides the high-performance capability needed for fast system restart and file system restore.

"The JFS technology used in OS/2 today can be restarted quickly, is transaction oriented, and highly scalable. It is tailored primarily for the high throughput and reliability requirements of servers, from single processor systems to advanced multi-processor and clustered systems, but can also be used in client configurations where performance and reliability needs are high.

"JFS was designed to have journaling fully integrated from the start, rather than adding it to an existing file system. When introduced in OS/2 in 1999, JFS expanded file system capacity limits, improved the recoverability of the system in case of server failure, supported larger partitions as well as dynamic expansion, and allowed more flexibility in data storage and management.

"The technology has been well-received in the OS/2 world, and IBM hopes to transfer the knowledge and techniques as a contribution to the Linux community.

"Bringing journaling file systems to Linux

"Several efforts are underway to bring journaling file system technology to Linux. One effort led by Stephen Tweedie, a leading Linux kernel developer, puts journaling into ext2. Called ext3, it is available in alpha form. Namesys has a journaling file system under development called ReiserFS. SGI has announced its intention to port its XFS file system to Linux."

Notice all the other journaling file systems being worked on independently from IBM? So is it true that without IBM's donated code, Linux would never have been able to have a journaling file system? The bottom line is that JFS didn't come to Linux from AIX, according to the historical record. If there are files that resemble each other, a simple explanation is it's because they came from the same source.


Exhibit B

AIX Files & lines in code drop for Linux 2.2.12

fs/jfs/ref/jfs_bufmgr.c 289-311, 364-441, 557-649, 682-917, 1270-1468, 1691-2016, 2102-2194
fs/jfs/ref/jfs_create.c 41-121, 127-135, 153-169, 193-223, 233-239, 241-264
fs/jfs/ref/jfs_defragfs.c 33-75, 84-89, 108-111, 119-264
fs/jfs/ref/jfs_dmap.c 43-4475
fs/jfs/ref/jfs_dnlc.c 55-89, 140-200, 212-224, 251-332, 325-338, 402-451, 485-573, 685-713
fs/jfs/ref/jfs_extendfs.c 43-153, 185-249, 293-579
fs/jfs/ref/jfs_fsync.c 32-84
fs/jfs/ref/jfs_ftruncate.c 37-129, 143, 156-170, 230-341
fs/jfs/ref/jfs_getattr.c 33-124
fs/jfs/ref/jfs_bold.c 33-63
fs/jfs/ref/jfs_imap.c 27-665, 680-2855, 2876-2893, 2904-2990
fs/jfs/ref/jfs_inodc.c 312-350, 390-463, 483-510, and more
fs/jfs/ref/jfs_link.c 33-152
fs/jfs/ref/jfs_logmgr.c 27-67, 113-132, 165-781, 1052-1607, 1623-3211
fs/jfs/ref/jfs_lookup.c 37-179
fs/jfs/ref/jfs_mkdir.c 37-111, 130-213, 222-264, 322-345
fs/jfs/ref/jfs_mount.c 31-188, 198-215, 229-380, 454-605, 363-785
fs/jfs/ref/jfs_open.c 37-98, 117-126, 218-277, 292-312
fs/jfs/ref/jfs_readdir.c 38-113, and more
fs/jfs/ref/jfs_readlink.c 26-110
fs/jfs/ref/jfs_relc.c 31-64
fs/jfs/ref/jfs_remove.c 36-145, 157-464
fs/jfs/ref/jfs_rename.c 36-222, 246-313, 390-526, 577-651, 760-791
fs/jfs/ref/jfs_rmdir.c 36-125, 137-156, 188-193
fs/jfs/ref/jfs_statfs.c 23-139
fs/jfs/ref/jfs_symlink.c 23-204
fs/jfs/ref/jfs_txnmgr.c 26-89, 122-132, 155-351, 380-414, 463-482, 531-661, 677-682, 710-767, 806-1153, 1162-1182, 1194-1246, 1293-1298, 1318-1539, 1577-1761, 1796-1856, 1883-1910, 1922-2097, 2115-2151, 2219-2321, 2350-2674, 2722-2845, 2983-3003
fs/jfs/ref/jfs_umount.c 45-182, 198-307, 318-322
fs/jfs/ref/jfs_util.c 49-120, 133-163, 175-230, 300-425
include/linux/jfs/ref/jfs_btree.h 19-113, 115-143
include/linux/jfs/ref/jfs_bufmgr.h 30-33, 37-49, 123-141, 274-279
include/linux/jfs/ref/jfs_cachemgr.h 71-108, 371-388
include/linux/jfs/ref/jfs_chbblks.h 24-48, 52-60
include/linux/jfs/ref/jfs_debug.h 28-30, 81-93, 96-106, 117-134, 137-142, 146-168
include/linux/jfs/ref/jfs_defragfs.h 20-56
include/linux/jfs/ref/jfs_dinode.h 35-49, 53-200

22-272, 276-324

include/linux/jfs/ref/jfs_dtree.h 25-79, 88-210, 233-287, 312-323
include/linux/jfs/ref/jfs_extendsfs.h 19-29, 32-39
include/linux/jfs/ref/jfs_filsys.h 76-103, 167-172, 230-256, 266-277, 279-321
include/linux/jfs/ref/jfs_imap.h 19-168
include/linux/jfs/ref/jfs_inode.h 192-233, 343-425
include/linux/jfs/ref/jfs_lock.h 72-119, 338-391, 395-406
include/linux/jfs/ref/jfs_logmgr.h 34-506, 540-577
include/linux/jfs/ref/jfs_proto.h 58-62, 117-128
include/linux/jfs/ref/jfs_superblock.h 19-105
include/linux/jfs/ref/jfs_txnmgr.h 25-251, 255-345
include/linux/jfs/ref/jfs_types.h 100-223, 299-582
include/linux/jfs/ref/jfs_util.h 38-62
include/linux/jfs/ref/jfs_xtree.h 24-131, 139-212