throbber
United States Patent 1:
`Bauer
`
`CARAA
`
`US005412808A
`[11] Patent Number:
`[45] Date of Patent:
`
`5,412,808
`May 2, 1995
`
`[54]
`
`[75]
`
`[73]
`
`[21]
`
`[22]
`
`[63]
`
`[51]
`[52]
`
`[53]
`
`[56]
`
`SYSTEM FOR PARSING EXTENDEDFILE
`NAMESIN AN OPERATING SYSTEM
`
`Inventor:
`
`Eric J. Bauer, Tinton Falls, N-J.
`
`Assignee:
`
`AT&T Corp., Murray Hill, NJ.
`
`Appl. No.:
`Filed:
`
`29,345
`
`Mar. 10, 1993
`
`5,218,696 6/1993 Baird et al. cecsssesssesesnus 395/600
`
`5,224,038
`6/1993 Bespalko ..
`5,333,317
`7/1994 Dart -.cscessseccessseeseeeescseree 395/600
`
`OTHER PUBLICATIONS
`
`Tichy, “RCS-A System for Version Control’, Soft-
`wave-Practice and Experience, vol. 15(7), 637-654 Jul.
`1985.
`
`Related U.S. Application Data
`Continuation of Ser. No. 735,394, Jul. 24, 1991, aban-
`doned.
`
`Tint, CUS ooosecesecsssccseccesessssscseeuteseseeceees GO6F 15/40
`US. Che cescsccscsssssssesscsaseanee 395/600; 364/DIG.1;
`364/222.81; 364/282.3; 395/700
`Field of Search o.oo. 395/600, 650, 700;
`364/419; 84/622
`
`References Cited
`U.S.PATENT DOCUMENTS
`
`4,413,318 11/1983 Herrington oe 395/650
`4,758,951
`7/1988 Sanyter et al. oe 364/200
`4,825,354 4/1989 Agrawal et al.
`......
`-
`4,914,586 4/1990 Swinehart etal.....
`4,993,030
`2/1991 Krakaueretal. .....
`4,999,766
`3/1991 Petersetal. .........
`wee 84/622
`5,119,711
`6/1992 Bell et al...
`5,202,982 4/1993 Gramlich et al. 02.0...vase 395/600
`
`
`
`
`Primary Examiner—Thomas G. Black
`Assistant Examiner—Wayne Amsbury
`Attorney, Agent, or Firm—John A. Caccuro
`
`[57]
`
`ABSTRACT
`
`A file system of a computer operating system includes
`files which may have one or more data streams associ-
`ated with them. The files are accessed using a base name
`and the associated data stream(s) are accessed using a
`prefix and/or a suffix of the base name. For example,
`the base name is used to select a data file while the
`prefix and/or suffix is used to access data streams
`which, illustratively, include information used by the
`file system in the processing of the data file. Using this
`file naming structure enables the file system to handie
`the base name file and its associated data streams to-
`gether as onefile using the standard file commands.
`
`20 Claims, 5 Drawing Sheets
`
`
`
`RETURN SUCCESS WITH
`REFERENCE TO FOUND
`FILE OBJECT
`
`
`
`
`
`
`RETURN SUCCESS ALONG WITH
`REFERENCE TO THE SELECTED
`DATA STREAM OF THE OBJECT
`“BASE NAME”
`
`Google Exhibit 1086
`Google v. VirtaMove
`
`Google Exhibit 1086
`Google v. VirtaMove
`
`

`

`U.S. Patent
`
`May 2, 1995
`
`Sheet 1 of 5
`
`5,412,808
`
`FIG.
`PRIOR ART
`
`1
`
`COMPUTER BASED FILE SYSTEM
`
`|
`
`USER LEVEL 120
`
`KERNEL LEVEL 130
`
`HARDWARE LEVEL 140
`
`HARDWARE DRIVER
`CHARACTER 1/0]
`[BLOCK 1/0]
`
`

`

`U.S. Patent
`
`May2, 1995
`
`Sheet 2 of 5
`
`5,412,808
`
`FIG. 2
`
`DATA
`212
`
`RESOURCE
`113
`
`
`
`EXT. ATTRIBUTES|2. [STREAM SHE |
`
`
`
`LOGICAL STRUCTURE OF FILE 200
`INODE
`
`
`
`FILE MODE
`|
`FILE OWNER
`
`
`FILE'S GENERATION NUMBER
`LAST ACCESS TIME
`
`OTHER FILE ATTRIBUTES
`
`
`STREAM SIZE
`
`
`TIME OF LAST STREAM MODIFICATION
`
`
`STREAM DIRECT DATA BLOCKS
`|
`
`
`
`——
`STREAM INDIRECT DATA BLOCKS
`
`
`
`
`
`
`
`214
`
`
`
`
`
`UMD ATIRBLTES|3. [STERN SE )
`
`
`
`
`sr
`
`
`DATA BLOCKS 224
`
`PHYSICAL STRUCTURE OF -FILE SYSTEM 220
`
`

`

`U.S. Patent
`
`May2, 1995
`
`Sheet 3 of 5
`
`5,412,808
`
`FIG. 3
`
`PATH DELIMITERS
`
`310~~PATHNAME-Ke
`
`FILE NAMES
`
`S1IS~FILE SYSTEM
`TREE
`
`”/~R0OT
`
`HOME
`aN
`JOP
`BIN
`
`PASSWORD
`
`MEMOIRS
`
`320 ~~ FILE NAMES — <PURPORTED-FILE NAME>
`MAY COMPRISE
`
`521 ~~ <PREFIX><BASE NAME><SUFFIX>
`<2.><MEMOIRS><.1>
`
` 330 ~~ BASE NAME TYPES
`
`31 ~ A CONVENTIONAL “PHYSICAL” FILE NAWE
`ie., USR OR "BIN
`332 —~ A PRESCRIBED SYNTAX
`SYNTAX 1 - ie, "ino =X, gen = 1"
`SYNTAX 2 - A MORE FLEXIBLE SYNTAX
`"FIND: USER = ROOT, MODE = 644°
`SYNTAX 3 - A DATABASE QUERY
`SYNTAX 4 - A NATURAL LANGUAGE SYNTAX SELECTION CRITERIA
`333 ~~ A NAME THAT IS MATCHED USING A NON-SUBSTRING-BASED
`CRITERIA,
`i.¢., PHONETIC MATCHING
`
`

`

`U.S. Patent
`
` —— May 2, 1995
`
`Sheet 4 of 5
`
`5,412,808
`
`
`
`403
`
`ves
`
`[ENTRY NOT
`
`RECEIVE FILE Nawe} 4°?
`WA_CREATE() JES"1sFREATSET
`NO
`Ml]
`ENwu FOUND, ERROR
`|
`
`ELIMINATE TRAILING DELiMiTerS|4/1
`~
`(SLASHES)
`IN PATH NAME
`
` STRIP LEADING NAME COMPONENT
`
`SET WORKING DIRECTORY TO
`ROOT OR CURRENT DIRECTORY
`
`OFF OF PATH NAME
`
`421
`
`(A) FIG. 5
`427
`
`REFERENCE THE CURRENT
`WORKING DIRECTORY
`REFERENCE PARENT OF
`425
`CURRENT WORKING a
`pet
`NO
`PERFORM FILE SYSTEM-
`SPECIFIC LOOKUP SEF FIG. 5
`429
`
`
` 435
`
`LOOKUP OK
`
`(B) FIG. 5
`NO
`RY
`NO
`FOUND, ERROR
`
`3f
`
`MORE
`FILE NAME COMPONENTS
`IN PATH
`NO.
`
`439
`
`RETURN SUCCESS, WITH A
`REFERENCE 70 THE CURRENT OBJECT
`
`

`

`U.S. Patent
`
`May2, 1995
`
`Sheet 5 of 5
`
`5,412,808
`
`FIG. 3
`
`302
`
`NO_T
`
`ACCESS ERROR
`
`YES
`
`503
`
`PREFIX
`D/OR SUFFIX USED
`
`NO
`
`
` 513
`Sti
`
`[STRIP PREFIX AND/OR SUFFIX
`FROM PURPORTED FILE NAME
`|
`TO PRODUCE "BASE NAME”
`[SEARCH DIRECTORY
`FOR ENTRY "BASE NAME"
`nC
`
`BASE NAME FOUND
`
`307
`
`YE
`
`5
`
`NO
`ENTRY NOT FOUND ERROR
`
`|
`
`K>*!
`
`(B)FIC. 4
`RETURN SUCCESS WITH
`REFERENCE 10 FOUND
`__FILE OBECT
`NO
`
`|
`
`
`
`
`RETURN SUCCESS ALONG WITH
`REFERENCE TO THE SELECTED
`DATA STREAM OF THE OBJECT
`"BASE NAME"
`
`
`
`
`
`S15”
`
`AIG. 4
`
`FIG. 6
`
`TABLE 600
`
`"16° - EXTENDED ATTRIBUTES
`
`CONFIGURED PREFIXES AND SUFFIXES
`
`
`
`"26" - MAC RESOURCE FONT
`
`
`"UNX@” - "UNIX EXTENDED ATTRIBUTES”
`
`"OLD@" - OLD VERSION OF FILE
`
`
`"Cl@" - COMPILED/INTERPRETED VERSION OF FILE
`
`

`

`1
`
`5,412,808
`
`SYSTEM FOR PARSING EXTENDED FILE NAMES
`IN AN OPERATING SYSTEM
`
`CROSS-REFERENCE TO RELATED
`APPLICATION
`
`This application is a continuation of application Ser.
`No. 07/735,394, filed on Jul. 24, 1991, and now aban-
`doned.
`Related subject matter is disclosed in my other appli-
`cation filed concurrently herewith and assigned to the
`same assignee hereof: U.S. patent application Ser. No.
`07/735,393, entitled “Method and Apparatus for Ac-
`cessing a Computer-Based File System”, now aban-
`doned.
`
`15
`
`TECHNICAL FIELD
`
`The present invention relates to a computer system
`and, more particularly, to the accessing of a file system
`thereof.
`
`20
`
`BACKGROUND OF THE INVENTION
`
`Operating systems exist today which havea file sys-
`tem which enables the user to access one or more data
`streams of a file (where a data stream is a sequence of
`data bytes). In one example, the APPLE ® MACIN-
`TOSH ® Hierarchical File System, two data streams
`are supportedperfile: one stream is called the data fork,
`and the other is called the resource fork APPLE and
`MACINTOSH are registered trademarks of Apple
`Computer, Inc.). A programmer selects a particular
`stream via a combination ofa file name and a bit param-
`eter to open a stream and then uses conventional file
`system calls (e.g., read 0, write 0, IseekO, etc.) to oper-
`ate on that data stream. Undesirably, if a new fork (data
`stream) is added to the file system, and consequently a
`new bit parameter required, existing programs must be
`rewritten to permit access to the new data streams.
`Such program rewrites are a costly overhead for the
`user.
`
`The OS/2 ® operating system available from IBM,is
`another hierarchical file system. (OS/2 is a registered
`trademark of International Business Machines Corpora-
`tion). The High Performance File System offered by
`OS/2 aiso supports two data streamsperfile: one stream
`contains the nodal file data, while the other stream
`contains extendedattribute information which has been
`associated with this file. In OS/2, different operating
`system calls are used to manipulate each of the two data
`streams. Such an arrangement requires a separate set of
`operating system calls when a new data stream is added.
`Undesirably, existing programs must be rewritten when
`new operating system calls are added to the OS/2 reper-
`toire.
`Whatis desired is a technique which enables an oper-
`ating system to access an ever-increasing number of
`data streamsof anyfile in a manner which is compatible
`with existing operating system calls and commands,
`thereby eliminating the need to rewrite existing pro-
`grams.
`
`SUMMARY OF THE INVENTION
`
`In accordance with the apparatus and method ofthe
`present
`invention, a file system accesses previously
`stored data files using a file name defined as including a
`base name and at least one appended segment. The
`appended segment(s) may be a prefix, a suffix, or both a
`prefix and suffix of the base name. Whena file access
`
`45
`
`55
`
`60
`
`65
`
`2
`request is received, the file name is parsed into a base
`name and a segment(s). The base nameis used to search
`the stored files to obtain a desired file. An appended
`segment is then used to select for access a data stream
`associated with the desired base namefile. The present
`invention thus enables a file system to access the data
`streamsof any file in a manner which is compatible with
`existing operating system calls and user level commands
`thereby eliminating the need to rewrite existing pro-
`grams.
`According to other features of the invention, an ap-
`pended segment may be used to access attributes of a
`stored file, or to designate an operating system to be
`used to process a particular data stream.
`BRIEF DESCRIPTION OF THE DRAWING
`
`in the drawing
`FIG.1 illustrates a block diagram of a computer and
`its operating system which is useful in describing the
`operation of the present invention;
`FIG. 2 showsthe logical and physical structure of a
`file and a file system;
`FIG. 3 defines various terms useful in describing the
`present invention;
`FIGS. 4 and 5 illustrate a flow chart describing vari-
`ous operating features of the present invention; and
`FIG.6 is a table illustrating examples of various pre-
`fixes and suffixes used by the present invention.
`HIGH LEVEL DESCRIPTION
`
`In the following description, each, item or block of
`each figure has a reference designation associated there-
`with, the first number of which refers to the figure in
`which that item is first located (e.g.; 110 is located in
`FIG. 1 and step 501 is located in FIG.5).
`FIG. 1 depicts a computer based file system 100
`which operates under control of a UNIX ® operating
`system 110, shown using a high-level architecture layer
`diagram. (UNIX is a registered trademark of UNIX
`System Laboratories, Inc. (hereinafter USL)). The layer
`diagram includes a user level 120, a kernel level 130, and
`a hardware level 140. The user level 120 interfaces to a
`user 101 enabling access to the file system 100 to obtain
`the desired file stored in memory (e.g., disk 180).
`Theuser level 120 includes the user programs 121 and
`libraries 122. The hardware level 140 provides the oper-
`ating system 110 with basic services needed by com-
`puter 100. The kernel level 130 interacts directly with
`the hardware level 140 providing commonservices to
`user level] 120 programsand insulating them from hard-
`ware idiosyncrasies. Viewing the system as a set of
`layers, the operating system is.commonly called the
`system kernel 130, or just the kernel, emphasizing its
`isolation from user programs. Because user programs
`are independentof the underlying hardware,it is easy to
`move them between UNIX systems running on differ-
`ent hardware. The general description of the well-
`known operation of a UNIX operating system is de-
`tived from Chapter 2 of the book entitled “The Design
`of the UNIX Operating System” by Maurice J. Bach.
`The system call interface 131 represents the border
`between user level 120 (user programs 121 and program
`libraries 122) and the kernel level 130. System call inter-
`face converts user program calls into UNIX system
`calls. System calls look like ordinary function calls in C
`programs, and libraries map these function calls to the
`primitives needed to enter the operating system in a
`
`

`

`3
`well-known manner. The set of system calls includes
`those that interact with the file system driver 132 and
`those that interact with the process control subsystems
`133. The file system driver 132 managesfiles, allocating
`file space, controlling access to files, and retrieving data
`for users. Processes interact with the file system driver
`132 via a specific set of system calls, such as open (to
`open a file for reading or writing), close, read, write,
`star (query the attributesof a file), chown (change the
`record of who ownsthefile) and chmod (change the
`access permissionsofa file). The file system driver 132
`accesses file data using a buffer 136 that regulates data
`flow between the kernel and secondary storage devices.
`The buffering mechanism interacts with block I/O de-
`vice drivers 137 to initiate data transfer to and from the
`kernel. Device drivers 134 are the kernel modules that
`control the operation of peripheral devices. Block I/O
`devices 141 are random access storage devices; alterna-
`tively, their device drivers 137 make them appear to be
`random access storage devices to the rest of the system.
`For example, a tape driver may allow the kernel to treat
`a tape unit as a random access storage device. The file
`system also interacts directly with “raw” or character
`J/O device drivers 138 without the intervention of a
`buffering mechanism. Raw devices, sometimes called
`character I/O devices 142, include all devices that are
`not block devices.
`The process control subsystem 133 is responsible for
`process synchronization, interprocess communication,
`memory management, and process scheduling. Thefile
`system driver 132 and the process control subsystem
`133 interact when loadinga file into memory for execu-
`tion. The process contro! subsystem 133 reads execut-
`able files into memory before executing them.
`Some of the system calls for controlling processes
`include the following: fork (create a new process), exec
`(overlay the image of a program onto the running pro-
`cess), exit (finish executing a process), wait (synchro-
`nize process execution with the exit of a previously
`forked process), brk (control the size of memory allo-
`cated to a process), and signal (control process response
`to extraordinary events).
`Aspreviously noted, file system 100 enables the user
`to access files stored on disk 180. A “file” is best viewed
`as a logical information object which may include one
`or more data streams and which has an owner and per-
`missions and other attributes, and one or more file
`names. A data stream is best viewed as an independent
`sequenceof data bytes that can grow orshrink indepen-
`dent of any other data streams on the machine. Hence,
`the following are file operations: rename, link, change
`ownership, change group ownership, and change mode.
`The following are data stream operations: read, write,
`and lock (a portion of a data stream).
`With joint reference to FIGS.1, 2 and 3 we describe
`an overview ofa file system. Every file is named by one
`or more path names, 310. A path name, as shownin 310,
`includes file names(e.g., home) separated by delimiters
`(/). The internal representation ofa file is given by an
`inode, which contains a description of the disk layout of 60
`the file data and other information such as the file
`Owner, access permissions, and access times. The term
`inode is a contraction of the term index node and is
`commonly used in literature on the UNIX system.
`Every file has one inode, but it may have several path
`names, all of which mapinto the inode. Each path name
`is called a link. When a process refers to a file by path
`name, the kernel parses the path name onefile name
`
`40
`
`45
`
`55
`
`65
`
`5,412,808
`
`20
`
`25
`
`35
`
`4
`componentat a time, checks that the process has per-
`mission to search the directories in the path, and eventu-
`ally retrieves the inode for the file. For example, if a
`process makes the call “open (/home/jqp)” the kernel
`retrieves the inode for “/home/jqp”. As shown by 315
`a “file system tree” for a full path namestarts with a
`slash character (’’/“) and specifies that the path nameis
`relative to the “root”ofthe file system tree. Following
`the branches that lead to successive component names
`of the path name “/home/jqp/2@memoirs” designates
`a full path name while “home/2@memoirs”does not. A
`path name does not haveto start from root but can be
`designated relative to the “current directory” of an
`executing process by omitting the initial slash in the
`path name. Thus, starting from current directory
`“/home”, the path name “Bin” designatesthe file whose
`full path nameis “/home/Bin”’.
`In accordance with the present invention, the file
`name 320 or purported file name may be considered to
`include a prefix, a base name anda suffix and the prefix
`and suffix can be used to select alternate data streams of
`the particular file (file system object) designated by base
`name. A base name 330, as shown in FIG. 3, may be a
`conventional “physical”file name 331, (typically stored
`in a directory) or a prescribed syntax 332 or a non-sub-
`string-based name 333 which are described in myprevi-
`ously referenced co-pending patent application whichis
`incorporated herein by reference.
`When a process creates a new file, the file system
`driver 132 assigns it an unused inode. Inodes are stored
`in a section 223 of the physical file system 220, as will be
`described shortly, but the file system driver 132 reads
`them into an in-core-memoryinode table when manipu-
`lating files. The UNIX system typically keeps regular
`files and directories on block devices such as disks. An
`installation may have several physical disk units each
`containing one or morefile systems. A file system 220is
`organized as a sequenceoflogical blocks, each contain-
`ing 512, 1024, 2048, or any convenient multiple of 512
`bytes, depending on the system implementation. Multi-
`ples of 512 are used by convention and thereis no intrin-
`sic reason to use 512 byte blocks.
`A physical file system may have the physical struc-
`ture illustrated by 220 of FIG. 2. The boot block 221
`(only on somefile systems) occupies the beginning of a
`file system, typically the first sector, and may contain
`the bootstrap code thatis read into the machineto boot,
`or initialize the operating system. Although only one
`boot block 221 is needed to boot the system, every file
`system may have a (possibly empty) boot block. The
`super block 222 describes the state of a file system—-
`how largeit is, how manyfiles it can store, where to
`find free space on thefile system, and other information.
`The inodelist 223 is a list of inodes that follows the
`super block in the file system. Administrators specify
`the size of the inode list 223 when configuring a file
`system. The file system driver 132 references inodes by
`index into the inode list 223. One inodeis the root inode
`of the file system: it is the inode by which the root
`directory structure of the file system is accessible after
`execution of the mount system call. The data blocks 224
`start at the end of the inodelist and hold the contents of
`data streams (i.e., file data). An allocated data block
`contains the actual data of a data stream ofa file and can
`belong to one and only onefile in the file system.
`The operation of the present invention will be de-
`scribed as utilized in an Enhanced File System (EFS)
`implemented on a UNIX system using a virtual file
`
`

`

`5,412,808
`
`6
`5
`The file system 132 keeps track of each of the
`system. Some UNIX systems use a Virtual File System
`streams, and assures that they are each independent in
`(VFS) concept to organize all file system operations.
`the way that they are accessed, and yet consistent for
`Althoughthe present invention does not require a VFS
`file operations (e.g., rename, change ownership.. . ).
`mechanism, VFS provides a convenient conceptual
`model to explain the invention. VFSis a merge of the
`DETAILED DESCRIPTION
`System V File System Switch (FSS) and the SUN OS
`VFS mechanism.It is important to note that user pro-
`grams will be unaffected by the SVR4.0 VFSarchitec-
`ture.
`VFS provides a file system type independentinter-
`face to programs and users while allowing each particu-
`lar file system to process file system operations in their
`own manner. File system type dependent kernel rou-
`tines do the work specific to the type.
`A keystrength of VFSis that it allows newfile sys-
`tem types to be defined and implemented by third-party
`software houses. The set of kernel interfaces that consti-
`tute VFS are available in a VFS file system type writ-
`ers’ guide available from USL.
`GENERAL DESCRIPTION
`
`20
`
`With reference to the layer diagram of FIG. 1 we
`now provide a more detailed operating description of
`the present invention.
`With joint reference to FIGS. 1 and 4 wedescribe the
`detailed operation of the present invention. The present
`invention is implemented to perform a file system-
`specific lookup feature as part of the standard lookup
`path name feature which occurs during a conversion of
`a path name to a vnode. The present invention permits
`a single inode to contain multiple data streams, so the
`term vnodeshall be usedto refer to the virtual node that
`is associated with a particular data stream. Hence, with
`four data streamsperfile, them will be four vnodes per
`inode. Unless otherwise stated, a vnoderefers to the Oth
`data stream of a file.
`Theinitial access to a file is by its path name, as in the
`open, chdir (change directory), or link system calls.
`Because the kernel 130 works internally with vnodes
`rather than with path names, it converts the path names
`to vnodes to access files. An algorithm of the UNIX
`system kernel parses the path name one file name com-
`ponent at a time, convening each component into a
`vnode based on its name and the directory being
`searched, and eventually returns the vnode of the input
`path name.
`The steps 401-425 and steps 429-439 illustrate the
`existing steps of the path name to vnode conversion
`which are briefly described so that the detailed opera-
`tion of the present invention (FIG.5) can be explained
`in a typical operating context.
`When a user program 121 makes a processcall, e.g.,
`open (path name, open vnodeflag), the operating sys-
`tem kernel (hereinafter kernel) 130 generates the com-
`mand vn_open(name, seg,file mode, create mode, vpp,
`crwhy) in step 401. The command vn—open performs
`permission checks and opensa file by name, returning a
`pointer to the resulting vnode. In the command vn_o-
`pen the parameter name contains the path name;seg is
`the address spacethe file nameis in, either user space or
`kernel space; file mode is the open mode; create mode
`contains the permission bits if the file is to be created;
`vpp is a pointer to a vnode pointer for the result; and
`crwhy is the reason whythis routineis called, it is de-
`fined if and only if file mode has the Fcreate bit set.
`_In step 402 a file nameis received from the user pro-
`gram 121. In step 403, the kernel 130 checksif the Fcre-
`ate bit is set. If so, then in step 405 a command vn_cre-
`ate( ) is generated in the conventional manner. The
`command of vn_—create indicates to the kernel 130 that
`the process cali wishes to create a new file, an operation
`which is well-known and not important to an under-
`standing of the present invention.
`If the Fcreate bit is not set then in step 407 the path
`nameis checked to determineif one exists. In our exam-
`ple, recall the path nameis “/home/jqp/2@memoirs”.
`If path name was a aull then in step 409 an “entry not
`found”error is returned to the system user.
`If path nameis not a null then in step 411 the trailing
`delimiters or slashes in the path name are eliminated.
`(Note our example has no trailing slashes after “mem-
`oirs’”’). In step 413,if the first character of ‘name’ is a “/”’
`character (indicating a path namestarting at root), then
`
`The present invention permits access to each of these
`data streams in a mannerthat is compatible with existing
`UNIX systems via special file names. This special file
`naming scheme uses a file name which includes a base
`name and a prefix, a suffix or both. Additionally, the
`present invention can be utilized with any operating
`system which accessesfiles by file name.
`An overview of the capabilities of the present inven-
`tion will, illustratively, be described with reference to a
`file name comprising only a prefix and a base name.
`Obviously, a file name which uses a base name and
`suffix combination or a prefix, base name and suffix
`combination could also be used to obtain the same capa-
`bilities.
`The present invention,as utilized in an Enhanced File
`System (EFS), uses a file name prefix string to permit
`access to non-default data streams. For example, the
`default EFS configuration may operate as follows: the
`file name “foo” accesses the default (Oth) stream of file
`“foo’’. That is, the absence ofa prefix in front of “foo”
`results in the access of the default or null (Oth) data
`stream, the file name “1@foo” accesses the Ist stream of
`file “foo”,
`the file name “2@foo” accesses the 2nd
`stream offile “foo,” the file name “3@foo” accesses the
`3rd stream of file “foo” and so on. This prefixing
`scheme permits all streams to be manipulated by exist-
`ing UNIX applications (e.g., vi(1), sh(i)) and services
`(e.g., Remote File System (RSF)).
`One use of these multiple data streams can be to sup-
`port multiple client operating systems. For example,
`both the MACINTOSH HFSand OS/2’s High-Perfor-
`mance File System (HPFS) support two data streams
`per file. In both the MACINTOSH HFS and OS/2
`HPFSthe resource fork and extended attribute data are
`used to hold data such as icons, fonts, history, subject
`information, application-specific configuration parame-
`ters, etc.
`Utilizing the present invention, a UNIX-based file
`system may support file servers for heterogeneouscli-
`ent machines (e.g, MACINTOSH and OS/2) as fol-
`lows: stream 0, e.g., 212, contains the shared (regular)
`data; stream 1, e.g., 213, contains the MACINTOSH
`Resource fork; stream 2, e.g., 214, may contain the
`OS/2 extended attribute data, and other streams; e.g.,
`215 may be used for secondary data or extendedattri-
`butes for other operating systems, such as the UNIX
`system.
`
`25
`
`35
`
`45
`
`55
`
`60
`
`65
`
`

`

`7
`to root, otherwise the
`the working directory is set
`working directory is set to the current directory. In step
`415, it is determined whether the working directory is a
`directory. If not, then in step 417 a “not in directory”
`error is returned to the user. If working directory is a
`directory, then in step 419 the leading file name compo-
`nent (i.e., “home” in our example) is stripped off the
`path name.
`the stripped off file name component
`In step 421,
`“home” is compared to “.” If equivalent, then in step
`423 the system will reference the current working direc-
`tory and then control returns to step 415. If file name
`componentis not “.” then in step 425 it is compared to
`“..”. If equivalent to “..” then in step 427 the parent of
`the current working directory is referenced and control
`returns to step 415. Otherwise, step 427, the file system-
`specific lookup feature of the present invention,as illus-
`trated in FIG.5, is performed on the stripped-off file
`name “home ”.
`Thefile system-specific lookup feature will be de-
`scribed in moredetail in a later paragraph,but suffice it
`to say that the stripped-off file name “home” includes
`no prefix or suffix (as shown by 321 ). Hence,after the
`steps of FIG. 5 are performed on the file name “home”
`it returns to step 429 with a vnode reference to access
`thefile object of thefile “home ”. If no vnode reference
`was found then an error is returned to the user in step
`431. Otherwise, in step 433, the system checks if the
`vnode reference refers to a data object which is a sym-
`bolic link. If so, then in step 435, the contents of the link
`are placed at the front of the remaining path name.
`Otherwise, in step 437 the system determines whether
`there are more file name componentsin the path name.
`If no more file name components then in step 439 con-
`trol is returned with a vnode reference to the data ob-
`ject. If more file name components exist then controlis
`returned to step 415 for further processing.
`With reference to FIG. 5 we now describe the pres-
`ent invention, as illustratively embodied, as a file sys-
`tem-specific lookup feature. We describe the processing
`of the file name “home” of our example path name
`“/home/jqp/2@memoirs”. In step 501 the requester’s
`execute permission in the current directory is checked
`in the standard way. If permission does not exist an
`access erroris returned to the user in step 502. If permis-
`sion exists, then in step 503, a check is made to deter-
`mine if a prefix or suffix exists. Recall from FIG.3 that
`file name 320 may include three segments, a prefix, a
`base name and a suffix. Some possible prefixes and suf-
`fixes are listed in Table 600 of FIG. 6 whichis stored as
`part of super block 222 of FIG. 2. If no prefix or suffix
`is found then processing continues to step 507. Recall in
`our example file name “home” no prefix or suffix is
`used. Since the file name “home” does not contain any
`of the possible prefixes listed in Table 600 of FIG. 6, in
`step 505, the base nameis equivalent to the file name
`“home” and the current directory is searched for the
`base name.
`If, however,a prefix or suffix match is found in Table
`600, a software flag is set indicating respectively that a
`prefix and/or suffix match exists. Basically, a prefix or
`suffix match is determined by comparing each prefix
`and suffix located in Table 600 with the file name. Pre-
`fixes and suffixes are typically stored in the super block
`ofthe file system.
`In step 505 any prefix or suffix is stripped from the
`purported file name to producethe “‘base name”. In step
`507, the directory is searched using the “base name”
`
`15
`
`20
`
`25
`
`30
`
`35
`
`40
`
`45
`
`35
`
`60
`
`65
`
`5,412,808
`
`8
`resulting when the file nameis stripped of any prefix or
`suffix. In step 509 if a “base name”is found in the direc-
`tory, then in step 511 the prefix or suffix flags are
`checked. If no prefix or suffix is found then in step 513
`control returns the vnode associated with the Oth data
`stream base name. Thus, for our example, for file name
`“home ”, the vnode for the Oth data stream of the
`“home” file object would be returned to step 429 of
`FIG. 4 for continued processing in the previously de-
`scribed manner.
`If a prefix or suffix was found in the file name, then
`the feature returns the success status along with the
`reference vnode of the selected data stream of the ob-
`ject base name.
`Thus,
`in our example, path name “/home/jqp/2-
`@memoirs”after the file name “home”is processed via
`steps 501, 503, 507, 509, 511, 513 and then by steps 429,
`433 and 437. Subsequenily, in step 415, 419, 421, 425 and
`427 the file name “‘jqp” is processed. Since “jqp” has no
`prefix or suffix, it is processed in the same manner as
`“home ”, i.e., by steps 501, 503, 507, 509, 511, 513 and
`then by steps 429, 433 and 437. After processing file
`names “home” and “jqp”’ the file name “2@memoirs”is
`processed in a similar manner. Thus, steps 415, 419, 421,
`425 and 427 are performed. However, since “2@me-
`moirs” has a prefix,i.e.,.““2@”step 505 is performed and
`a prefix flag is set. Thus, processing proceeds from step
`501,503, 505, 507, 509 511 to step 5 15. In step 5 15, the
`feature returns the success along with the reference
`vnode of the data stream specified by prefix “2@” for
`the file named “memoir”. For example, the data stream
`specified by prefix “2@” may specify fonts or icons that
`should be utilized with the text of the “memoirs”file.
`The various types and uses of prefixes and suffixes are
`described in a later paragraph.
`With reference to Table 600 of FIG. 6, we briefly
`describe examples of some of the various configured
`prefixes and suffixes that can be utilized by the present
`invention. If the base nameis referred to as the physical
`file name the combination of the <prefix> <base
`name> <suffix> can be referred to as a virtual file
`name where eachofthe virtual file names share the data
`with the base namefile. One example of an application
`of the virtual file name capability would be to simulate
`on a UNIX system the MACINTOSH (MAC)file name
`structure,
`ie., “file name, bit” where bit
`indicates
`whetherthe file is the data file or resourcefile. Accord-
`ing to the present invention, a prefix or suffix would
`identify the bit information, e.g., <bit> <file name>
`or <file name> <bit>, respectively, to the UNIX
`system. Another application would be to provide an
`OS/2 attribute capability to a UNIX system. In OS/2 a
`file name is followed by a prefix or suffix thereby per-
`mitting the extended attribute data to be accessed via
`standard file system primitives, e.g., open, read, write,
`close, lock.
`Note, the examples described below as a prefix may
`also be utilized as a suffix. The prefix types of Table 600
`may be represented by one or moredigits, characters or
`symbols. For example, the prefix “1@” may represent
`“extended attributes” of an OS/2 system while prefix
`“2@” may represent the resource file of a MACIN-
`TOSH system. The prefix “unx@” may represent a
`UNIX system extended attribute capability. Other ex-
`amples of prefixes may include “old@”to signify an
`older version of the base namefile, while “CI@” may
`represent the compiled or interpreted version of the
`base namefile.
`
`

`

`9
`While the present invention has been described as
`acce

This document is available on Docket Alarm but you must sign up to view it.


Or .

Accessing this document will incur an additional charge of $.

After purchase, you can access this document again without charge.

Accept $ Charge
throbber

Still Working On It

This document is taking longer than usual to download. This can happen if we need to contact the court directly to obtain the document and their servers are running slowly.

Give it another minute or two to complete, and then try the refresh button.

throbber

A few More Minutes ... Still Working

It can take up to 5 minutes for us to download a document if the court servers are running slowly.

Thank you for your continued patience.

This document could not be displayed.

We could not find this document within its docket. Please go back to the docket page and check the link. If that does not work, go back to the docket and refresh it to pull the newest information.

Your account does not support viewing this document.

You need a Paid Account to view this document. Click here to change your account type.

Your account does not support viewing this document.

Set your membership status to view this document.

With a Docket Alarm membership, you'll get a whole lot more, including:

  • Up-to-date information for this case.
  • Email alerts whenever there is an update.
  • Full text search for other cases.
  • Get email alerts whenever a new case matches your search.

Become a Member

One Moment Please

The filing “” is large (MB) and is being downloaded.

Please refresh this page in a few minutes to see if the filing has been downloaded. The filing will also be emailed to you when the download completes.

Your document is on its way!

If you do not receive the document in five minutes, contact support at support@docketalarm.com.

Sealed Document

We are unable to display this document, it may be under a court ordered seal.

If you have proper credentials to access the file, you may proceed directly to the court's system using your government issued username and password.


Access Government Site

We are redirecting you
to a mobile optimized page.





Document Unreadable or Corrupt

Refresh this Document
Go to the Docket

We are unable to display this document.

Refresh this Document
Go to the Docket