Under construction This page is (notionally) still under construction

JFS

IBM's Journaling File System

Supplemental Response 23 October 2003 (63-A)

Pages 7-19: Linux kernel 2.5.69

This document, dated the 23rd day of October 20003 (sic), listed 591 files, apparently a lightly filtered list of every file in the Linux 2.5.69 kernel [download] that mentioned SMP, RCU or NUMA or concerned JFS. The JFS part of the list simply named all the .c and .h files from the directory fs/jfs - 44 of them, as seen below.

fs/jfs/
acl.c           jfs_dinode.h  jfs_imap.h      jfs_mount.c       jfs_xattr.h
endian24.h      jfs_dmap.c    jfs_incore.h    jfs_superblock.h  jfs_xtree.c
file.c          jfs_dmap.h    jfs_inode.c     jfs_txnmgr.c      jfs_xtree.h
inode.c         jfs_dtree.c   jfs_inode.h     jfs_txnmgr.h      namei.c
jfs_acl.h       jfs_dtree.h   jfs_lock.h      jfs_types.h       resize.c
jfs_btree.h     jfs_extent.c  jfs_logmgr.c    jfs_umount.c      super.c
jfs_debug.c     jfs_extent.h  jfs_logmgr.h    jfs_unicode.c     symlink.c
jfs_debug.h     jfs_filsys.h  jfs_metapage.c  jfs_unicode.h     xattr.c
jfs_defragfs.h  jfs_imap.c    jfs_metapage.h  jfs_uniupr.c

Total 44 files

Of the 591 files, 115 contained IBM copyright notices, including all the JFS files except one. For these files, the document stated: "Source code files identified by SCO thus far which are responsive to Interrogatory No. 1 and part of which include information (including methods) that IBM was required to maintain as confidential or proprietary pursuant to contract with SCO and/or which constitute trade secrets misused by IBM are found within LINUX 2.4 and/or Linux 2.5 kernels under the following source file headings".

As just noted, one of the JFS files, fs/jfs/symlink.c, did not contain an IBM copyright notice. Instead, we see this:

 *   Copyright (c) Christoph Hellwig, 2001-2002
 *
 *   This program is free software;  you can redistribute it and/or modify
 *   it under the terms of the GNU General Public License as published by
 *   the Free Software Foundation; either version 2 of the License, or 
 *   (at your option) any later version.

Revised Supplemental Response 15 January 2004 (103-1)

Pages 18-24: IBM's first JFS kernel patch

Under construction

Although the document alludes to Linux 2.4, specific allegations about files refer to Linux 2.2.12. There was no JFS in the 2.2.12 kernel, so the allegations necessarily concern IBM's very first 'code drop' (release of code) of approx 9 February 2000, which was a patch against the 2.2.12 kernel. Many of the original URLs are now dead, but files from the original code drop can still be retrieved via the Sourceforge CVS repository.

Note that the two subdirectories in which these files are located imply that these file are a reference implementation of JFS, with OS/2 specific code IFDEF'ed. The Linux code proper resided in other subdirectories.

Hatch letter 19 April 2004 (157-28-B)

Exhibit B: IBM's first JFS kernel patch

Under construction

The allegation concerns IBM's first 'code drop' (release of code) for 2.2.12 (approx 9 February 2000), not the out of tree 1.0 release of 20 June 2001 nor the subsequently merged JFS of 2.5.6-pre2 (22 February 2002) or 2.4.20-pre4 (20 August 2002).

Apparent typos: The line ranges for jfs_mount.c overlap ("454-605, 363-785") and have been corrected as 454-505 563-785. Lines 274-279 of jfs_bufmgr.h are specified but the file only contains 143 lines.

fs/jfs/ref/jfs_bufmgr.c289-311 364-441 557-649 682-917
1270-1468 1691-2016 2102-2194
42%
fs/jfs/ref/jfs_create.c41-121 127-135 153-169 193-223
233-239 241-264
37%
fs/jfs/ref/jfs_defragfs.c33-75 84-89 108-111 119-26475%
fs/jfs/ref/jfs_dmap.c43-447599%
fs/jfs/ref/jfs_dnlc.c55-89 140-200 212-224 251-322
325-338 402-451 485-573 685-713
51%
fs/jfs/ref/jfs_extendfs.c43-153 185-249 293-57962%
fs/jfs/ref/jfs_fsync.c32-8463%
fs/jfs/ref/jfs_ftruncate.c37-127 143 156-170 230-34164%
fs/jfs/ref/jfs_getattr.c33-12474%
fs/jfs/ref/jfs_hold.c33-6349%
fs/jfs/ref/jfs_imap.c27-665 680-2855 2876-2893
2904-2990
98%
fs/jfs/ref/jfs_inode.c312-350 390-463 483-510 and more6%
fs/jfs/ref/jfs_link.c33-15279%
fs/jfs/ref/jfs_logmgr.c27-67 113-132 165-781 1052-1607
1623-3211
88%
fs/jfs/ref/jfs_lookup.c37-17927%
fs/jfs/ref/jfs_mkdir.c37-111 130-213 222-264 322-34566%
fs/jfs/ref/jfs_mount.c31-188 198-215 229-380 454-505 563-78577%
fs/jfs/ref/jfs_open.c37-98 117-126 218-277 292-31244%
fs/jfs/ref/jfs_readdir.c38-113 and more13%
fs/jfs/ref/jfs_readlink.c26-11077%
fs/jfs/ref/jfs_rele.c31-6453%
fs/jfs/ref/jfs_remove.c36-145 157-46490%
fs/jfs/ref/jfs_rename.c36-222 246-313 390-526
577-651 760-791
63%
fs/jfs/ref/jfs_rmdir.c36-125 137-156 188-19342%
fs/jfs/ref/jfs_statfs.c23-13984%
fs/jfs/ref/jfs_symlink.c23-20489%
fs/jfs/ref/jfs_txnmgr.c26-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
73%
fs/jfs/ref/jfs_umount.c45-182 198-307 318-32279%
fs/jfs/ref/jfs_util.c49-120 133-163 175-230 300-42550%
include/linux/jfs/ref/jfs_btree.h19-113 115-14387%
include/linux/jfs/ref/jfs_bufmgr.h30-33 37-49 123-141 274-27928%
include/linux/jfs/ref/jfs_cachemgr.h.h71-108 371-38810%
include/linux/jfs/ref/jfs_chkdsk.h[none listed]0%
include/linux/jfs/ref/jfs_clrbblks.h24-48 52-6053%
include/linux/jfs/ref/jfs_debug.h28-30 81-93 96-106 117-134
137-142 146-168
44%
include/linux/jfs/ref/jfs_defragfs.h20-5660%
include/linux/jfs/ref/jfs_dinode.h35-49 53-20078%
include/linux/jfs/ref/jfs_dmap.h22-272 276-32493%
include/linux/jfs/ref/jfs_dtree.h25-79 88-210 233-287 312-32376%
include/linux/jfs/ref/jfs_extendfs.h19-29 32-3941%
include/linux/jfs/ref/jfs_filsys.h76-103 167-172 230-256
266-277 279-321
36%
include/linux/jfs/ref/jfs_imap.h19-16889%
include/linux/jfs/ref/jfs_inode.h192-233 343-42529%
include/linux/jfs/ref/jfs_io.h[none listed]0%
include/linux/jfs/ref/jfs_lock.h72-119 338-391 395-40628%
include/linux/jfs/ref/jfs_logmgr.h34-506 540-57788%
include/linux/jfs/ref/jfs_os2.h[none listed]0%
include/linux/jfs/ref/jfs_proto.h58-62 117-12812%
include/linux/jfs/ref/jfs_superblock.h19-10562%
include/linux/jfs/ref/jfs_txnmgr.h25-251 255-34592%
include/linux/jfs/ref/jfs_types.h100-223 299-58270%
include/linux/jfs/ref/jfs_util.h38-6226%
include/linux/jfs/ref/jfs_xtree.h24-131 139-21286%

Total 53 files, 21643 lines

Final Disclosure 22 December 2005

Item 1 (ongoing): The Final Disclosures alleged IBM "literally copied code from Unix System V Release 2.1" and identified one System V file and one AIX file [IBM 696 p.9]. The "AIX JFS Journaling File System" [SCO 707 p.6]. Literally copied code from Unix System V Release 2.1 is present in PFS [SCO 707 p.7].