`See MPEP chapter 600 concernin utili patent application contents.
`r+J Fee Transmittal Form (e.g., PTO/SB/17)
`1. L:.J
`(Submzt an ongmal and a duplicate for fee proce:.!>rng}
`f"+7 Applicant claims small entity status.
`2· L±J See 37 CFR 1.27.
`[Total Pages ~
`Specification
`3. G]
`(preferred arrangement set forth below)
`- Descriptive title of the invention
`- Cross Reference to Related Applications
`- Statement Regarding Fed sponsored R & D
`- Reference to sequence listing, a table,
`or a computer program listing appendix
`- Background of the Invention
`- Brief Summary of the Invention
`- Brief Description of the Drawings (jf filecf)
`- Detailed Description
`- Claim(s)
`- Abstract of the Disclosure
`4. [!] Drawing(s) (35 U.S.C. 113)
`5. Oath or Declaration
`(cid:143)
`a. EJ Newly executed (original or copy)
`Copy from a prior application (37 CFR 1.63 (d))
`(for continuation/divisional with Box 18 completed)
`i. 0 DELETION OF INVENTOR(S)
`
`[ Total Sheets
`
`[ Total Pages
`
`00
`D
`
`b.
`
`Signed statement attached deleting inventor(s)
`named in the pnor appltcatIon, see 37 CFR
`1 63(d)(2) and 1 33(b)
`
`Application Data Sheet. See 37 CFR 1.76
`
`(when there is an assignee)
`
`Attorney
`
`b. Specification Sequence Listing on:
`i. D CD-ROM or CD-R (2 copies); or
`ii. D paper
`c. D Statements verifying identity of above copies
`ACCOMPANYING APPLICATION PARTS
`9. D Assignment Papers (cover sheet & document(s))
`(cid:143) 37 CFR 3.73(b) Statement D Power of
`10•
`11. D English Translation Document (if applicable)
`(cid:143) Information Disclosure D Copies of IDS
`13.(cid:143)
`12·
`14.EB
`15.(cid:143)
`16.(cid:143)
`17.(cid:143)
`
`Citations
`
`Statement (IDS)/PTO-1449
`Preliminary Amendment
`Return Receipt Postcard (MPEP 503)
`(Should be specifically itemized)
`Certified Copy of Priority Document(s)
`(if foreign priority is claimed)
`Nonpublication Request under 35 U.S.C. 122
`(b)(2)(B)(i). Applicant must attach form PTO/SB/35
`or its equivalent.
`.............................................. ..
`Other:
`
`(o -ti-- 0
`
`\
`
`Approved for use through 10/31/2002 0MB 0651-00321-<
`U.S. Patent and Trademark Office; U S DEPARTMENT OF COMMERCEll,c-,;Ji
`
`_
`
`;;-
`M
`
`On/ for new nonprovisional applications under 37 CFR 1.53 b
`
`PTO/SB/05 {03-01) 0 =
`Please type a plus sign{+) ms1de this box - - . 0
`Under the Paperwork Reduction Act of 1995, no persons are required to respond to a collection of information unless it displays a valid 0MB control number .• ~ =~
`-~ =~
`1203
`UTILITY
`Attome Docket No.
`PATENT APPLICATION
`a-.:....:.Fi=-=-rs;:...:.t1:,;_,;nv=-'en;.:..:.toi'-'-r~_....____,__,H_an_.,-_gy--.-o-,-o-.K=-i_m.;-.,-----,-,--......-~
`=---'--'-D-=is=k=S=y_s=-t-=em::.....:_pA=da=pte,_,__1d_to_Be_Di_re_c_t1y_,,,c:::::,
`TRANSMITTAL
`Title Attached to NetworK
`l-
`Ex ress Mail Label No. ~-rg43 7 'if 'i O 8 f L\
`Assistant Commissioner for Patents
`Box Patent Application
`Washin ton, DC 20231
`
`ADDRESS TO:
`7. D CD-ROM or CD-R in duplicate, large table or
`Computer Program (Appendix)
`8. Nucleotide and/or Amino Acid Sequence Submission
`(if applicable, all necessary)
`
`a. D Computer Readable Form (CRF)
`
`6. D
`18. If a CONTINUING APPLICATION, check appropriate box, and supply the requisite information below and in a preliminary amendment,
`or in an Application Data Sheet under 37 CFR 1. 76:
`D1v1s1onal D
`D Continuation D
`Contmuat1on-m-part (CIP}
`
`of pnor appl1cat1on No ..
`
`Group ArtUntt
`Exammer________
`Priorapplrcat10nmformat10n·
`For CONTINUATION OR DIVISIONAL APPS only; The entire disclosure of the prior application, from which an oath or declaration is supplied under
`Box Sb, is considered a part of the disclosure of the accompanying continuation or divisional application and is hereby incorporated by reference.
`The incorporation can only be relied upon when a portion has been inadvertently omitted from the submitted application parts.
`
`D
`
`Customer Number or Bar Code Label
`
`or ~ Co"espondence address below
`
`Name
`
`Address
`
`City
`
`Country
`
`Chung K. Ko
`1263 Lakeside Dr. #2190
`
`Sunnyvale
`U.S.A.
`
`CA
`State
`Telephone 408-655-4678
`
`Zip Code 94085
`08-7 49-078
`
`Fax
`
`Name (Print/Type)
`
`Registration No. (Attorney/Agent)
`
`Date
`Signature
`0 '
`Burden Hour Statement This form Is estimated to take 0.2 hours to complete Time will vary depending upon the needs of the individual ase Any omments on
`the amount of time you are required to complete this form should be sent to the Chief Information Officer, U.S Patent and Trademark Office, Washington. DC
`20231. DO NOT SEND FEES OR COMPLETED FORMS TO THIS ADDRESS SEND TO Assistant Commissioner for Patents, Box Patent Application.
`Washington, DC 20231
`
`Petitioners Microsoft Corporation and HP Inc. - Ex. 1009, p. 1
`
`
`
`PTO/SB/17 (10-01)
`Approved for use through 10/31/2002. 0MB 0651-0032
`U.S. Patent and Trademark Office; U.S. DEPARTMENT OF COMMERCE
`Under the Paoerwork Reduction Act of 1995 no oersons are reauired to resoond to a collection of information unless it disolavs a valid 0MB control number.
`~
`Complete if Known
`
`r
`
`FEE TRANSMITTAL
`for FY 2002
`
`Patent fees are subJect to annual revision.
`
`\.... TOTAL AMOUNT OF PAYMENT
`
`I ($) 1333.oo
`
`METHOD OF PAYMENT
`The Commissioner is hereby authorized to charge
`indicated fees and credit any overpayments to:
`
`1 ·
`
`Account
`
`Number~:::::::::::::::::::::::::::::::~
`
`Account
`Name
`
`._ _______________ ___.
`
`I
`I
`
`Application Number
`
`Filing Date
`
`First Named Inventor
`
`Examiner Name
`
`Group Art Unit
`
`October 9 2001
`Han-avoo Kim
`
`Attorney Docket No.
`
`1LU.5
`
`FEE CALCULATION (continued)
`3. ADDITIONAL FEES
`Small
`Large
`Entity
`Entity
`Fee
`Fee Fee Fee
`Code ($) Code
`($)
`65 Surcharge - late filing fee or oath
`105 130 205
`
`Fee Description
`
`127
`
`50 227
`
`25 Surcharge - late provisional filing fee or
`cover sheet
`
`139 130 139 130 Non-English specification
`
`Fee Paid
`
`147 2,520 147 2,520 For filing a request for ex parte reexaminatIon1-----1
`112 920* 112 920* Requesting publication of SIR prior to
`Examiner action
`113 1,840* 113 1,840* Requesting publication of SIR after
`Examiner action
`Extension for reply within first month
`Extension for reply within second month
`
`115 110 215
`116 400 216 200
`
`55
`
`106 330
`
`107 510
`
`108 740
`114 160
`
`214
`
`Fee Description
`
`Fee Paid
`
`117 920 217 460
`
`Extension for reply within third month
`
`118 1,440 218 720
`
`Extension for reply within fourth month
`
`128 1,960 228 980
`
`Extension for reply within fifth month
`
`119 320 219 160
`120 320 220 160
`121 280 221 140
`138 1,510 138 1,510
`
`Notice of Appeal
`Filing a brief in support of an appeal
`Request for oral hearing
`Petition to institute a public use proceeding
`
`Petition to revive - unavoidable
`
`(cid:143)
`Deposit I
`Deposit I
`(cid:143) Charge Any Additional Fee Required
`(cid:143)
`2. (cid:143)
`
`Under 37 CFR 1.16 and 1.17
`Applicant claims small enbty status
`See 37 CFR 1 27
`Payment Enclosed:
`
`(cid:143) Credit card D Money
`
`Ii]
`
`Check
`
`Order
`FEE CALCULATION
`1. BASIC FILING FEE
`Large Entity Small Entity
`Fee Fee Fee Fee
`Code ($) Code ($)
`201 ~ Utility filing fee
`101 740
`206 165 Design filing fee
`207 255 Plant filing fee
`208 370 Reissue filing fee
`80 Provisional filing fee
`
`D Other
`
`SUBTOTAL (1) ! ($) 370.00 I
`
`140 110 240
`
`55
`
`2. EXTRA CLAIM FEES
`
`Fee from
`Ext~ims ~ Fee Paid
`x~~ 5851
`[]:fil
`-20··=
`Total Claims
`x[AD~ 3Z8 I
`Independent
`r-;r;'il
`L.....1..."-.1 -3**=
`Claims
`c=:t~
`I
`Multiple Dependent
`
`141 1,280 241 640
`
`PetIt1on to revive - unintentional
`
`142 1,280 242 640
`143 460 243 230
`144 620 244 310
`122 130 122 130
`
`Utility issue fee ( or reissue)
`Design issue fee
`Plant issue fee
`
`Petitions to the Commissioner
`
`Large Entity Small Entity
`Fee Fee Fee Fee
`Code ($) Code~
`203 kx.
`18
`103
`84
`102
`104 280
`
`Fee Description
`
`Claims in excess of 20
`
`Independent claims in excess of 3
`202 ~
`204 140
`Multiple dependent claim, if not paid
`
`109
`
`84
`
`209 42
`
`110
`
`18
`
`210
`
`9
`
`** Reissue independent claims
`over original patent
`
`** Reissue claims in excess of 20
`and over original patent
`
`SUBTOTAL (2)
`
`I($)963.oo 1
`
`.. or number previously paid, if greater; For Reissues, see above
`
`123
`
`50 123
`
`50
`
`126 180 126 180
`
`Processing fee under 37 CFR 1.17(q)
`Submission of Information Disclosure Stmt
`
`581
`
`40 581
`
`40
`
`Recording each patent assignment per
`property (times number of properties)
`
`146 740 246 370
`
`149 740 249 370
`
`Filing a submission after final re1ectIon
`(37 CFR § 1.129(a))
`For each add1t1onal invention to be
`examined (37 CFR § 1.129(b))
`
`179 740 279 370
`
`Request for Continued Examination (RCE)
`
`169 900 169 900
`
`Request for expedited examination
`of a design application
`
`Other fee (specify) _____________ -;;a=---====~
`I
`!{$) 0.00
`SUBTOTAL (3)
`
`*Reduced by Basic Filing Fee Paid
`
`SUBMITTED BY
`Name (Printffype)
`
`Signature
`
`Chung K. Ko
`
`42,753
`
`Complete (if appflcable)
`Telephone 408-655-678
`Date
`
`, t)
`
`0
`
`m may become public. Credit card information should not
`be included on this form. Provide credit card information and authorization on PTO-2038.
`Burden Hour Statement: This form is estimated to take 0.2 hours to complete. Time will vary depending upon the needs of the individual case. Any comments on
`the amount of time you are required to complete this form should be sent to the Chief Information Officer, U.S. Patent and Trademark Office, Washington, DC
`20231. DO NOT SEND FEES OR COMPLETED FORMS TO THIS ADDRESS. SEND TO: Assistant Commissioner for Patents, Washington, DC 20231.
`
`Petitioners Microsoft Corporation and HP Inc. - Ex. 1009, p. 2
`
`
`
`Express Mailing No. T=Ti43 71gi O ~'8 US
`ChungK. Ko
`
`1263 Lakeside Drive #2190
`Sunnyvale, California 94085
`Reg.# 42,753
`Tel: 408-655-4678
`
`Fax:408-749-0782
`
`Date:
`
`October 9, 2001
`
`To:
`
`Re:
`
`Assistant Commissioner for Patents
`Box Patent Application
`Washington, DC 20231
`Tel: 800-786-9199
`
`Utility Patent Application
`Title: Disk System Adapted to Be Directly Attached to Network
`Docket No. 1203
`Inventor.-: Han-gyoo Kim
`
`Dear Sir or Madam:
`
`Enclosed please find
`(1) utility patent application
`(2) executed inventor declaration
`(3) cover sheet for utility patent application
`(4) fee transmittal sheet
`(5) a self-stamped post card to be returned
`(6) a check of $..l.i}J_ (small entity)
`
`Thank you very much for your attention.
`
`Sincerely,
`
`Petitioners Microsoft Corporation and HP Inc. - Ex. 1009, p. 3
`
`
`
`DISK SYSTEM ADAPTED TO BE DIRECTLY ATTACHED
`
`TO NETWORK
`
`Inventor: Han-gyoo Kim
`
`REIATED APPLICATION
`
`This application claims the benefit of co-pending U.S. Provisional Application
`
`Ser. No. 60/240,344, filed October 13, 2000, entitled "Disk System Adapted to Be
`
`Directly Attached to Network."
`
`BACKGROUND OF THE INVENTION
`
`Technical Field
`
`This invention in general relates to computer systems. More specifically, this
`
`invention relates to a disk system or interface that can be directly attached to a network.
`
`Description of the Related Art
`
`As the Internet becomes popular, the amount of data that needs to be stored has
`
`drastically increased. Especially, there is a high demand for a high-capacity disk drive
`
`to store multimedia data.
`
`For example, a demand for a disk system having a disk
`
`capacity of terabytes per server is not unusual.
`
`A tape drive or a CD drive may be used to store such amount of data, but its
`
`performance and user convenience are not matched to those of a hard disk drive.
`
`However, increasing the capacity of a hard disk in a conventional server system presents
`
`some problems.
`
`There are NAS (Network Attached Storage) products that can be connected to
`
`Petitioners Microsoft Corporation and HP Inc. - Ex. 1009, p. 4
`
`
`
`a network, usually Ethernet, to provide a pre-configured disk capacity along with
`
`integrated system/storage management using the NFS (Network File System) protocol,
`
`the CIFS (Common Internet File System) protocol, or both on top of the IP protocol
`
`used on the Internet. The primary purpose of these protocols is to exchange files
`
`between independently operating computers. Therefore, the client using the NAS for
`
`file access experiences the difference between its local storage and the storage in the
`
`NAS systems.
`
`The NAS is basically a stripped-down version of a file server having mainly
`
`the functions of storing and retrieving files. Accordingly, increasing a disk capacity
`
`using a NAS product amounts to adding a separate file server in practice, which
`
`presents many shortcomings. Since an NAS disk is not seen as a local disk to the
`
`client, the installation, movement, and administration of an NAS disk should be done
`
`only through the operating system and software offered as part of the NAS system. An
`
`NAS disk is installed in the inside bus of the NAS system, leading to a limitation to the
`
`number of disks that can be installed. Since the NAS system has a hard disk under its
`
`own operating system, the client cannot use an arbitrary file system to access the hard
`
`disk. Further, the NAS system requires an IP address. Overall, not only the
`
`installation and administration costs per disk are more expensive than those of a local
`
`disk, but also user convenience is severely restricted.
`
`There is SAN (Storage Area Network) that uses the Fibre Channel technology.
`
`To use the devices connected to a SAN, a special-type of switch is needed. For
`
`example, Fiber Channel uses a Fibre Channel hub or a Fibre Channel switch. The
`
`SAN has some shortcomings. Typically, a separate file server is used.
`
`In general, the
`
`SAN equipment is expensive, and so is the administration cost of the SAN system
`
`2
`
`Petitioners Microsoft Corporation and HP Inc. - Ex. 1009, p. 5
`
`
`
`because, for example, it often requires an administrator with a specialized knowledge on
`
`the system.
`
`Therefore, there is a need for an interface that allows a disk system to be
`
`directly attached to a network, while still being accessed like a local disk without the
`
`need of adding an additional file server or special equipment.
`
`SUMMARY OF THE INVENTION
`
`It is an object of the present invention to provide a disk system that can be
`
`directly attached to a network connecting to a host without going through a network file
`
`system.
`
`Another object is to provide a disk system that can be recognized and used as a
`
`local disk to a host without requiring additional facility such as an additional file server,
`
`a special switch, or even an IP address, if appropriate.
`
`Still another object of the present invention is to provide a disk system that can
`
`be conveniently connected to a server without much intervention of network/server
`
`administration.
`
`Yet another object is to provide a low-cost disk system, many of which can be
`
`plugged into existing network ports to readily satisfy a disk capacity demand.
`
`Further object is to provide an interface that allows a device attachable to a bus
`
`to be plugged into a network port.
`
`The foregoing and other objects are accomplished by providing a network(cid:173)
`
`attached disk (NAD) system that includes an NAD device for receiving a disk access
`
`command from a host through a network, a device driver at the host for controlling the
`
`NAD device through the network, where the device driver recognizes the NAD device
`
`3
`
`Petitioners Microsoft Corporation and HP Inc. - Ex. 1009, p. 6
`
`
`
`as a local device. The host may run the UNIX or Windows family of operating
`
`systems. The NAD device includes a disk for storing data, a disk controller for
`
`controlling the disk, and a network adapter for receiving a disk access command from
`
`the host through a network port.
`
`BRIEF DESCRIPTION OF THE DRAWINGS
`
`FIG. 1 is a block diagram of an environment where a network-attached disk
`
`(NAD) system of the present invention is used.
`
`FIG. 2 is an illustration of how multiple NAD devices may be accessed by
`
`multiple hosts through a network.
`
`FIG. 3 is an example of how multiple NAD devices are accessed by multiple
`
`hosts.
`
`FIG. 4 is another example of how each disk inside an NAD may be treated as a
`
`separate disk.
`
`FIG. 5 is an illustration of how a block device driver, specifically an NAD
`
`device driver, is registered and unregistered under the UNIX operating system.
`
`FIG. 6 is an illustration of the relation among the directory, device file, device
`
`driver, and device.
`
`FIG. 7 is an illustration of how a request function directly issues a command to
`
`a device.
`
`FIG. 8 is an illustration of how a request function activates a device accessing
`
`thread.
`
`FIG. 9 is a block diagram of a local disk system and that of an NAD device
`
`running under UNIX.
`
`4
`
`Petitioners Microsoft Corporation and HP Inc. - Ex. 1009, p. 7
`
`
`
`FIG. 10 is an illustration of a device searching thread for identifying the
`
`attached NAD devices and for providing the NAD information to the NAD device
`
`management program.
`
`FIGS. llA and llB are examples of network connections made between an
`
`NAD device driver and its corresponding NAD device using a connection setting thread.
`
`FIG. 12 is an illustration of a method of implementing an NAD device driver,
`
`using a device accessing thread.
`
`FIG. 13 is an illustration of a method of implementing an NAD device driver,
`
`without using a device accessing thread.
`
`FIG. 14 is an example of an NAD device construction.
`
`FIG. 15 is a functional block diagram of an NAD controller.
`
`FIG. 16 is a simplified state transition diagram of a state machine used by the
`
`main controller of an NAD controller.
`
`FIG. 17 is an illustration of how a disk inside an NAD device may be divided
`
`into disk partitions to which a device driver is assigned.
`
`FIG. 18 is an illustration of how separate NAD device drivers may be
`
`generated so that a physically single disk can be assessed by different file systems.
`
`FIG. 19 is an illustration of how the NAD system can recognize physically
`
`separate, several NAD disks as a logically single disk.
`
`FIGS. 20A and 20B are illustrations of the hierarchies of the disk driver layers
`
`in the conventional disk system and the NAD system under the Windows 2000
`
`operating system.
`
`FIG. 21 is an illustration of a network environment where the NAD system of
`
`the present invention is used in the Windows 2000 operating system.
`
`5
`
`Petitioners Microsoft Corporation and HP Inc. - Ex. 1009, p. 8
`
`
`
`FIG. 22 is an example of a device stack created in the Windows 2000 operating
`
`system.
`
`FIG. 23A is an illustration of the flow of IRP, SRB, and CDB in a conventional
`
`disk system in the Windows 2000 operating system.
`
`FIG. 23B is an illustration of the flow of IRP, SRB and COB in an NAO
`
`system in the Windows 2000 operating system.
`
`FIG. 24 is an illustration of NDIS (Network Device Interface Specification) in
`
`the Windows 2000 operating system.
`
`DETAILED DESCRIPTION OF THE INVENTION
`
`FIG. 1 shows an environment where the present invention is used. A host 100
`
`has a file system 101, which may contain a local disk device driver 102 that controls a
`
`local disk 104 connected to an internal system bus 103. A local device is defined as a
`
`device inside a standard-alone system as opposed to a network device connected to a
`
`network. Local devices are directly connected to a system bus often through an
`
`adapter called a host bus adapter allowing the host to communicate with the devices
`
`without going through any network, whereas network devices are not directly connected
`
`to a system bus, rather connected through an interface called a network interface card
`
`(NIC) installed on system bus. The local disk 104 may be a conventional IDE
`
`(Integrated Drive Electronics) disk or SCSI (Small Computer System Interface) disk.
`
`The file system 101 also contains a network-attached disk (NAD) device driver
`
`105 of the present invention that controls an NAO device 108 connected through a
`
`network adapter device driver 106 and a network 107 such as Ethernet. The NAO
`
`device 108 of the present invention contains one or more disks 109. The network 107
`
`6
`
`Petitioners Microsoft Corporation and HP Inc. - Ex. 1009, p. 9
`
`
`
`is an existing general-purpose network for carrying storage traffic as well as other
`
`application traffic. This so called "front-end" network for carrying general-purpose
`
`network traffic is distinguished from a "back-end" network dedicated to storage such as
`
`that used in the conventional Storage Area Network (SAN) scheme.
`
`The present invention features two main components: one is the NAD device
`
`driver 105 at the host and the other is the NAD device 108 attached to the network.
`
`FIG. 2 shows an example of how multiple NAD devices are accessed by
`
`multiple hosts through a network. NAD device #1 123 with disk(l,1) 126 and NAD
`
`device #2 124 with disk(2,l) 127 and disk(2,2) 128 are accessed by Host #1 120
`
`through a network 122, while NAD device #3 125 with disk(3,l) 129, disk(3,2) 130,
`
`disk(3,3) 131 is accessed by Host #2 121 through the same network 122.
`
`Each disk appears to the host as if it is a local disk to connected to the system
`
`bus of the host so that each disk can be dynamically installed or removed. The present
`
`invention achieves this by creating a virtual host bus adapter in purely software means
`
`that recognizes an NAD device as if it is connected to the system bus although there is
`
`no physical host bus adapter connected the NAD.
`
`This is distinguished from the
`
`conventional Network Area Storage (NAS) scheme where a NAS device connected
`
`through the NIC is still recognized as an independent file server connected to a network.
`
`The Open Systems Interface (OSI) model defines 7 layers of protocols: a
`
`physical layer for electrical interface definitions, a data link layer for communication
`
`using data frames, a network layer for routing packets from one end to another, a
`
`transport layer for dividing messages into packets, a session layer for establishing
`
`communication session, a presentation layer for data presentation format, and an
`
`application layer for application programs. The present invention uses a data link
`
`7
`
`Petitioners Microsoft Corporation and HP Inc. - Ex. 1009, p. 10
`
`
`
`layer protocol to contain storage commands into data link frames. Because the NAD
`
`device is not acting as an independent devices to the host, there is no need to use a
`
`network address such as IP address.
`
`Since the specific configuration of the hosts and the disk systems can be
`
`dynamically changed, user convenience and portability is preserved as in the case of
`
`using a local disk. There is virtually no restriction to the number of disk systems that
`
`can be attached to the network, thus providing an unlimited disk storage capacity for a
`
`host.
`
`FIG. 3 shows another example of how multiple NAD devices are accessed by
`
`multiple hosts through a network. NAD device #1143, NAD device #2 145, and NAD
`
`device #5 147 are accessed by Host #1 140 through a network 142, while NAD device
`
`#2 144 and NAD device #4 146 are accessed by Host #2 141 through the same network
`
`142.
`
`The disks contained in an NAD may be treated as separate disks so that each of
`
`them can be independently accessed by a host. FIG. 4 shows an example of treating
`
`each disk inside an NAD device as separate disks. Disk(l,l) 166 inside NAD device
`
`#1 163, disk(2,2) 168 inside NAD device #2, and disk(3,2) 170 inside NAD device #2
`
`are accessed by Host #1 160 through a network 122 while disk(2,1) 167 inside NAD
`
`device #2 164 and disk (3,1) 169 and disk (3,3) 171 inside NAD device #3 165 are
`
`accessed by Host #2 161 through the same network 162. Note that disk (2,1) 167 and
`
`disk (2,2) 168, inside NAD device #2 164, are independently accessed by Host #1 160
`
`and Host #2 161 respectively.
`
`Block Device Driver
`
`8
`
`Petitioners Microsoft Corporation and HP Inc. - Ex. 1009, p. 11
`
`
`
`An embodiment of the NAD system will be explained with an example running
`
`the UNIX family of operating systems although other operating systems such as
`
`Windows may also be used.
`
`Each block device for block data storage, such as a disk device, is assigned a
`
`major device number to distinguish among different kinds of block devices, and a minor
`
`device number to distinguish among same kinds of block devices.
`
`In UNIX, each
`
`device is accessed through a device file, which provides an interface for accessing the
`
`real device. Device files are usually generated in advance, each with a major device
`
`number and a minor device number as well as information on a block device driver.
`
`The purpose of the device driver is to handle the requests made by the kernel
`
`with respect to a device. The device driver isolates device-specific codes to provide a
`
`consistent interface for the kernel.
`
`In order to activate the operation of a device driver,
`
`a device file and device driver routines must be prepared, after which the functions of
`
`the driver routines must be registered so that the operating system such as UNIX can
`
`understand their availability. This is usually done by passing the major number
`
`assigned to the device and the functions of the driver routines as parameters.
`
`Registration and Unregistration of Block Device Driver
`
`Once a block device driver is registered by passing the device's major device
`
`number and the driver functions as parameters, it may be unregistered by passing the
`
`major number.
`
`Table 1 lists the functions used to either register or deregister a device driver.
`
`9
`
`Petitioners Microsoft Corporation and HP Inc. - Ex. 1009, p. 12
`
`
`
`Functions
`
`Register_ blkdevO
`
`Unregister_ blkdev()
`
`[Table 1]
`
`Description
`
`-
`
`register a driver by taking a major
`
`number and driver functions as parameters
`
`- unregister a driver by taking a major
`
`number
`
`Table 2 lists the general functions used by the local driver and the NDA driver.
`Description
`
`Driver Function
`
`Read()
`
`write()
`
`ioctl()
`
`openO
`
`release()
`
`fsync()
`
`- used to read data in the device
`
`- used to write data in the device
`
`- used to change a particular value of a
`to control
`for a driver or
`structure
`input/output with respect to a device
`- used to initialize a driver
`
`- used to eliminate a driver
`
`- used to reflect the content of buffer cache
`
`to the real device driver
`
`check_ media_ change()
`
`- used to sense a change in the device
`
`condition
`
`revalidate()
`
`- used to update device managed by the
`
`deriver and device driver itself
`
`[Table 2)
`
`Table 3 lists examples of the driver functions specific to the IDE local disk
`
`driver and the NAD driver.
`
`Driver Function
`
`IDE Local Driver Function NAD Driver Function
`
`10
`
`Petitioners Microsoft Corporation and HP Inc. - Ex. 1009, p. 13
`
`
`
`read()
`
`write()
`
`ioctl()
`
`open()
`
`Release()
`
`fsync()
`
`ide_read()
`
`ide_write()
`
`ide _ioctl()
`
`ide_open()
`
`ide _release()
`
`ide _ fsync()
`
`netdisk _read()
`
`netdisk _ write()
`
`netdisk _ioctl()
`
`netdisk _ open()
`
`netdisk _release()
`
`netdisk _ fsync()
`
`check_ media_ change()
`
`ide _check_ media_ change() netdisk _check_ media_ change()
`
`revalidate()
`
`ide _revalidate()
`
`netdisk _ide _revalidate()
`
`[Table 3]
`
`FIG. 5 shows an example where a block device driver, specifically an NAD
`
`device driver, is registered and unregistered.
`
`Initially, an IDE device driver 181 with
`
`major device #3 is created as well as some null device drivers such as major device #0
`
`180 and major device #n 182. Major device #60, 183, the NAD device driver that is
`
`assigned a major device number of 60, is registered by using a device registration
`
`function of register_blkdev(60, fops) 185. Later the NAD device driver is de(cid:173)
`
`registered into major device #60 184, a null device driver, by using a device de(cid:173)
`
`registration function of unregister_blkdev(60) 186. The figure shows that NAD device
`
`driver of the present invention is installed in the same way as the existing block device
`
`drivers.
`
`Use of Block Device
`
`Once a block device driver is registered and its device file is generated,
`
`read/write is done to the device file to access the real device. The device file, however,
`
`is not directly called by the user, rather called after being mounted to the file system.
`
`Before being mounted, each block device file must be formatted according to a
`
`11
`
`Petitioners Microsoft Corporation and HP Inc. - Ex. 1009, p. 14
`
`
`
`particular file system. Since the NAD device driver of the present invention is
`
`prepared in the same way as a conventional local disk driver, the set of I/O commands
`
`used to format a conventional local disk can also be used to format a disk in the NAD
`
`device.
`
`In addition, since NAD devices are controlled in the device driver level, they
`
`can be formatted in a required format independent of the file system used.
`
`FIG. 6 shows the relation among the directory, device file, device driver, and
`
`device. The left side shows attachment of a conventional local disk system where a
`
`device file 201 mounted on a directory 200 is used by a local disk device driver 202 to
`
`control a local disk 203. The right side shows an NAD system of the present invention
`
`where a device file 204 mounted on the directory 200 is used by an NAD device driver
`
`205 to control a NAD device 207 through a local area network (LAN) 206 such as
`
`Ethernet. The two relations are similar except that the NAD device is accessed
`
`through the network.
`
`Structure of Block Device Driver
`
`Each block device driver has an I/O request queue to store the 1/0 requests to
`
`the device. The stored requests may be re-scheduled for the purpose of improving the
`
`performance. Besides the 1/0 request queue, each block device driver needs a request
`
`function to process the I/O requests in the queue.
`
`FIG. 7 shows a situation where the request function directly issues a command
`
`to a block device. An NAD device driver 220, using a device 222 and a file system
`
`223, has a queue 224 that stores 1/0 requests 225 through 228. The NAD device
`
`driver 220 has a request function 229 that issues a command to the NAD device 221 by
`
`12
`
`Petitioners Microsoft Corporation and HP Inc. - Ex. 1009, p. 15
`
`
`
`taking a currently processed request 225.
`
`FIG. 8 shows a situation where the request function 229, instead of directly
`
`issuing a command, activates a device accessing thread 230 so that the device accessing
`
`thread 230 can issue a command based on the information in the request queue. A
`
`thread refers to a single use of a program that can handle multiple users.
`
`Constitution of Local Disk System and NAD System
`
`FIG. 9 shows the constitution of a conventional local disk system and that of
`
`the NAD system operating under UNIX. Under a file system 260, a conventional local
`
`disk 264 attached to a local bus 263 is accessed by a conventional local disk device
`
`driver 261 through a bus interface 262. Under the same file system 260, an NAD
`
`device 272 with a disk 273, attached to a network 271, is accessed by an NAD device
`
`driver 265 through a network interface including a network protocol stack 266, a
`
`network adapter device driver 267, a bus interface 268, and a network adapter 270.
`
`Since an NAD device is to be used like a local disk, the conventional local disk
`
`system and an NAD system of the present invention share a basic structure. The
`
`difference is that since an NAD system must communicate with an NAD device through
`
`a network, a protocol stack is added for network communication.
`
`The NAD driver
`
`delivers an 1/0 command to an NAD device through a network adapter and receives a
`
`response from the NAD device.
`
`When an NAD device is accessed, either DMA (Direct Memory Access) or
`
`PIO (Programmed Input/Output) may be used. A conventional disk device driver
`
`operates in a DMA mode by issuing a DMA 1/0 command to a local disk with a starting
`
`buffer address and a byte transfer count. The local disk then takes over the data
`
`13
`
`Petitioners Microsoft Corporation and HP Inc. - Ex. 1009, p. 16
`
`
`
`transfer, after which it interrupts the CPU. Similarly, the NAD device driver may be
`
`implemented to operate in a DMA mode by having the NAD device driver deliver an
`
`I/O command to an NAD device, which then completes the data transfer, after which it
`
`interrupts the CPU.
`
`The conventional disk driver operates in a PIO mode by the CPU transferring
`
`data directly through data registers of the disk device until a particular data block is
`
`processed. Similarly, the NAD driver may be implemented to operate in a PIO mode
`
`by having the NAD device driver deliver a command to an NAD device and continue to
`
`transm