XFS and SysVfs

SGI's XFS and the old System V filesystem

Revised Supplemental Response 15 January 2004 (103-1)

Pages 61-66: XFS in Linux kernel 2.5.64

The files listed are from Linux 2.5.64 [download]. It was released on 5 March 2003. The next release was 2.5.65 on 17 March 2003.

In Exhibit C, SCO sets forth additional code in Linux in which SCO claims a right. Specifically, Exhibit C shows that Silicon Graphics, Inc. ("SGI") violated its UNIX Software Agreement with SCO by transferring direct lines of UNIX to Linux from its version of UNIX known as "IRIX." IRIX is a derivative work of, and modification based on, System V that contains substantial parts of System V code. In addition to SGI's transfer of direct lines of code from UNIX System V to Linux, as set forth in Exhibit A attached hereto, SGI has improperly transferred the UNIX filing system it developed as part of IRIX to Linux, thereby improperly giving the Linux open source developers access to an advanced journaling file system for streaming media for use in enterprise applications of Linux. On information and belief, most or all of the code contained in all of the files of the IRIX/XFS filing system have been improperly transferred to Linux. [...] These files are listed below, with the corresponding source code to each file attached hereto and incorporated herein by reference as Exhibit C. The IRIX/XFS files improperly contributed to Linux are identified in Linux 2.5.64 version as follows:

fs/xfs/
Makefile           xfs_da_btree.c    xfs_error.c         xfs_mount.c
xfs.h              xfs_da_btree.h    xfs_error.h         xfs_mount.h
xfs_acl.c          xfs_dfrag.c       xfs_extfree_item.c  xfs_qm.c
xfs_acl.h          xfs_dfrag.h       xfs_extfree_item.h  xfs_qm.h
xfs_ag.h           xfs_dinode.h      xfs_fs.h            xfs_qm_syscalls.c
xfs_alloc.c        xfs_dir.c         xfs_fsops.c         xfs_quota.h
xfs_alloc.h        xfs_dir.h         xfs_fsops.h         xfs_quota_priv.h
xfs_alloc_btree.c  xfs_dir2.c        xfs_ialloc.c        xfs_rename.c
xfs_alloc_btree.h  xfs_dir2.h        xfs_ialloc.h        xfs_rtalloc.c
xfs_arch.h         xfs_dir2_block.c  xfs_ialloc_btree.c  xfs_rtalloc.h
xfs_attr.c         xfs_dir2_block.h  xfs_ialloc_btree.h  xfs_rw.c
xfs_attr.h         xfs_dir2_data.c   xfs_iget.c          xfs_rw.h
xfs_attr_fetch.c   xfs_dir2_data.h   xfs_imap.h          xfs_sb.h
xfs_attr_leaf.c    xfs_dir2_leaf.c   xfs_inode.c         xfs_trans.c
xfs_attr_leaf.h    xfs_dir2_leaf.h   xfs_inode.h         xfs_trans.h
xfs_attr_sf.h      xfs_dir2_node.c   xfs_inode_item.c    xfs_trans_ail.c
xfs_bit.c          xfs_dir2_node.h   xfs_inode_item.h    xfs_trans_buf.c
xfs_bit.h          xfs_dir2_sf.c     xfs_inum.h          xfs_trans_dquot.c
xfs_bmap.c         xfs_dir2_sf.h     xfs_iocore.c        xfs_trans_extfree.c
xfs_bmap.h         xfs_dir2_trace.c  xfs_itable.c        xfs_trans_inode.c
xfs_bmap_btree.c   xfs_dir2_trace.h  xfs_itable.h        xfs_trans_item.c
xfs_bmap_btree.h   xfs_dir_leaf.c    xfs_log.c           xfs_trans_priv.h
xfs_btree.c        xfs_dir_leaf.h    xfs_log.h           xfs_trans_space.h
xfs_btree.h        xfs_dir_sf.h      xfs_log_priv.h      xfs_types.h
xfs_buf.h          xfs_dmapi.h       xfs_log_recover.c   xfs_utils.c
xfs_buf_item.c     xfs_dqblk.h       xfs_log_recover.h   xfs_utils.h
xfs_buf_item.h     xfs_dquot.c       xfs_mac.c           xfs_vfsops.c
xfs_cap.c          xfs_dquot.h       xfs_mac.h           xfs_vnodeops.c
xfs_cap.h          xfs_dquot_item.c  xfs_macros.c        xfsidbg.c
xfs_clnt.h         xfs_dquot_item.h  xfs_macros.h

fs/xfs/linux/
xfs_aops.c      xfs_fs_subr.c  xfs_iomap.c  xfs_lrw.h    xfs_sysctl.c   xfs_vnode.h
xfs_behavior.c  xfs_fs_subr.h  xfs_iops.c   xfs_stats.c  xfs_sysctl.h
xfs_behavior.h  xfs_globals.c  xfs_iops.h   xfs_stats.h  xfs_version.h
xfs_cred.h      xfs_globals.h  xfs_linux.h  xfs_super.c  xfs_vfs.h
xfs_file.c      xfs_ioctl.c    xfs_lrw.c    xfs_super.h  xfs_vnode.c

fs/xfs/pagebuf/
page_buf.c  page_buf.h  page_buf_internal.h  page_buf_locking.c  page_buf_trace.h

fs/xfs/support/
atomic.h  debug.h  kmem.h    ktrace.h  move.h    mrlock.h           sema.h  sv.h    uuid.c
debug.c   kmem.c   ktrace.c  move.c    mrlock.c  mutex.h   qsort.h  spin.h  time.h  uuid.h

include/linux/
dqblk_xfs.h

Total 170 files

The only file excluded is fs/xfs/support/qsort.c, which has an FSF copyright notice (whereas qsort.h has an SGI copyright notice).

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

Exhibit G Pages 10 & 13: SysV filesystem in Linux kernel 2.4.21

The files listed are from Linux 2.4.21 [download] [copying]. It was released on 13 June 2003. The next release was 2.4.22 on 25 August 2003.

SCO/Caldera itself had redistributed these files. The document contains this statement: "At the time it redistributed Linux, SCO was not aware that its intellectual property had been copied or misappropriated and placed into Linux without SCO's authorization or consent." However, during the time SCO/Caldera was distributing Linux, the official maintainer of the Linux sysvfs implementation was none other than Caldera's Christoph Hellwig. See the Groklaw article Caldera Employee Was Key Linux Kernel Contributor and the ChangeLog.

The list specifies the entirety of all the C source files in the directory fs/sysv/ and the header file sysv_fs.h. Two other header files, sysv_fs_i.h and sysv_fs_sb.h, are not listed. The file fs/sysv/INTRO states:

This is the implementation of the SystemV/Coherent filesystem for Linux.
It grew out of separate filesystem implementations

    Xenix FS      Doug Evans <dje@cygnus.com>  June 1992
    SystemV FS    Paul B. Monday <pmonday@eecs.wsu.edu> March-June 1993
    Coherent FS   B. Haible <haible@ma2s2.mathematik.uni-karlsruhe.de> June 1993

and was merged together in July 1993.

Mr Monday's author biography at Apress states: "During graduate school at Washington State University, he created the System V File system implementation for the early Linux operating system (prior to the 1.0 kernel)." Other historical information is given at Krzysztof Baranowski's page.

fs/sysv/balloc.c1-235100%
fs/sysv/dir.c1-386100%
fs/sysv/file.c1-49100%
fs/sysv/ialloc.c1-232100%
fs/sysv/inode.c1-271100%
fs/sysv/itree.c1-439100%
fs/sysv/namei.c1-323100%
fs/sysv/super.c1-508100%
fs/sysv/symlink.c1-25100%
include/linux/sysv_fs.h1-402100%

Total 10 files, 2870 lines