System and method for increased virtual driver throughput

System and method for increased virtual driver throughput
US007509436B1
(12) Ulllted States Patent
(10) Patent N0.:
Rissmeyer
(54)
(75)
(45) Date of Patent:
SYSTEM AND METHOD FOR INCREASED
6,163,855 A
6,185,620 B1 *
2/2001
6,195,760 B1
2/2001 Chung et a1.
6,209,023 B1
6,219,771 B1
3/2001 Dlmitreff et al'
4/2001 Krkuchr et a1.
Inventor:
Charles Steven Rissmeyer, Coon
Rapids’ MN (Us)
6,269,396 B1
6,314,526 B1
6,327,622 B1
(Us)
Notice:
7/2001 Shah 6161.
11/2001 Arendt 61 a1.
12/2001 11116616161.
1/2002 116116111161 6161.
3/2002
Zhu 6161.
................. .. 370/360
(Continued)
OTHER PUBLICATIONS
App1.N0.1 10/143,503
VMware ESX Server.‘ User’s Manual, Version 1.0, obtained from
http://Web.archive.0rg/Web/200100608201203/WWW.vmWare.c0m/
supp0rt,(Jun. 6, 2001),122-124.
May 9, 2002
(51) Int CL
(52)
Weber et a1. .............. .. 709/230
6,353,612 B1*
Subject to any disclaimer, the term of this
patent is extended or adjusted under 35
(22) Filed:
12/2000 Shrivastava et a1.
6,343,320 B1
U.S.C. 154(b) by 795 days.
(21)
Mar. 24, 2009
VIRTUAL DRIVER THROUGHPUT
(73) Assignee: Cisco Technology, Inc., San Jose, CA
(*)
US 7,509,436 B1
(Continued)
G06F 15/16
(200601)
G06F 9/00
(200601)
Primary Examinerilude J Jean Gilles
(74) Attorney, Agent, or FirmiSchWegman, Lundberg &
US. Cl. ..................... .. 709/249; 709/250; 709/321;
Woessner, P_A_
709/326; 709/251; 709/253; 710/10; 710/11;
710/105
(58)
(56)
(57)
ABSTRACT
Field of Classi?cation Search ............... .. 709/230,
709/238’ 250, 217, 249, 236; 711/163; 710/2’
A computerized system and method for provide increased
710/325’ 33’ 48; 713/1; 370/230’ 351; 703/23;
34 5/5 20
See application ?le for complete search history.
data throughput for a virtual driver. The system includes a
SCSI (Small Computer System Interconnect) port manager; a
miniport driver operatively Coupled to the SCSI POrt man‘
ager; and a network interface operatively coupled to the
miniport driver. Upon receiving indication that a SCSI com
mand has been completed, the miniport driver issues a request
References Cited
U~S~ PATENT DOCUMENTS
to the SCSI port manager causing the SCSI port manager to
5,390,326 A
2/ 1995 Shah
issue a function call into the miniport driver. As a result, the
5,812,821 A *
9/1998 Sugi et a1. ................... .. 703/25
function can to Complete the request is in the SCSI port
5,996,024 A
5’996’027 A
1 H1999 Blumenau
11/ 1999 Volk et al'
6,018,765 A *
1/2000
6,041,381 A
30000 Hoese
manager’s context. The method includes calling a ?rst routine
in a ?rst module to deliver a data packet; sending a function
Durana et a1. ............. .. 709/217
request to a second'module that causes the second module to
6,108,699 A
6,131,119 A
6,134,673 A
8/2000 Moiin
10/2000 Fukui
10/2000 ChrabasZcZ
call a second routine in the ?rst module. As a result, the
second routine is called in the proper context.
6,145,019 A
11/2000 FirooZ et a1.
25 Claims, 4 Drawing Sheets
127
COMPUTER
o u u
/\ 12s
COMPUTER
129
IP NETWORK
105
SCSI
ROUTER
106
STORAGE
NETWORK
US 7,509,436 B1
Page 2
U.S. PATENT DOCUMENTS
_
6,363,416 B1
_
3/2002 Naelml et 81
2002/0188657 A1
12/2002 Traversat et al.
2002/0188711 A1
12/2002
2003/0018813 A1
Meyer et al.
1/2003 Antes et al.
6,393,583 B1
5/2002 Meth et 91
2003/0018927 A1
1/2003 Gadir et al.
6,400,730 B1
6/2002 Latlf et 91
2003/0182455 A1
9/2003 HetZler et al.
23333;; E 13588; alumna; er a1~
6,470,397 B1 * 10/2002 Shahget al. ................ .. 709/250
2003/0210686 A1
5883832233 ii
11/2003 Terrell et al.
145588: ??ibjfil,
2,223.28? E * $588; 359211 et a; ---------------- -~ 709/238
2005/0055418 A1
3/2005 Blanc et al.
,
,
,
an
,
e
6,484,245 B1
et
.
er et
.
.
11/2002 Sanada et al.
OTHER PUBLICATIONS
*
#31210;
’
"""""""""" " 710/3
’
'
i
24/ipialiasing.b<t,(1999),3 p.
églglritsll'
6’678’72 l B 1
H2004 Bell
6’683’883 Bl
V2004 CZeiger et a1‘
Bakker, G. ,IPAliasing, obtained from http://www.Zone-h.org/?les/
Gusella, R. , et al., “An Electron Algorithm for a Distributed Clock
'
Synchronization Program”, CS Technical Report #2 75, University of
California, Berkeley,(Dec. 1985),pp. 1-14.
6’69l’244 B1
2/2004 Kam e et a1
6’697’924 B2 *
6,718,361 B1
2/2004 swafk
'
4/2004 Basani etal.
6 721 907 B2
4/2004 Earl
Knight, S., et al., I/lrtual Router Redundancy Protocol, Network
6’724’757 Bl
6,748,550 B2
4/2004 Zadikian et a1
6/2004 McBreaIty et al.
Working Group, RFC 2338, obtained from http://www.search.ieft.
“gm/@2338"Xt’(1998)’26 P'
6’757’29l B 1
6’763’195 B1
60004 Hu
7/2004 Willebmnd et a1
Lewis, P. , “A High-Availability Cluster for Linux”, Linux Journal,
64, obtained from http://www2.linuxjournalcom/lj-issues/issue64/
6,763,419 B2
7/2004 Hoese et al.
8/2004 Jha
L1, T. , et al., Cisco Hot Standby Router Protocol (HSRP), Network
6’77l’673 Bl
8/2004 Baum et a1
Working Group, RFC 2281, obtained from http://www.search.ieft.
6’77l’663 Bl
Gusella, R. , et al., “The Berkeley UNIX Time Synchronization
711/163
Protocol”, UNIXProgrammers Manual 4.3, vol. 2C, Berkeley Soft
Wale D‘Smb"’(1986)’ 101"
3?47'htm1’(APr' 1994),“ P‘
6,807,581 B1 *
10/2004 Starr et al. ................ .. 709/250
6 877 044 B2 *
4/2005 Lo et a1. ...................... .. 710/2
Meth’ K'Z" et 31" Deslgn Ofthelscslpmmcol lpmceedmgs 01%‘?
5/2005 Thompson
20th IEEE Conference on Mass Storage Systems and Technologies,
6’89 5’ 4 61 B1
6,959,439 B1 *
10/2005
Boike ....................... .. 719/326
Org/rfc/rf°2281b<&<199.8% 16 P‘.
,,
.
(APr' 7'10’ 2003)’ 116'122'
.
2002/0042693 A1
4/2002 Kampe et a1‘
2002/0049845 A1
4/2002 Sreenivasan et all
Group, RFC 3205, obtained from http://www.search.ieft.org/rfc/
2002/0059392 A1
5/2002
rfcnos'b‘t’aoozhl‘l P‘
2002/0065872 A1
20020103943 Al
5/2002 Genske et a1
8/2002 LO et a1‘
'
Ellis
Moore, K. , On the Use ofHTTP as a Substrate, Network Working
.
.
.
Satran, J. , et al., iSCSI, IPS Internet Draft, draft-1eft-1ps-1SCSI-12.
lXt, Category: standardsitrack,(Apr. 17, 2002),260 p.
200201 16460 Al
8/2002 T . t
t l
Simitci, H. , et al., “Evaluation of SCSP over TCP/IP and SCSI over
2002/0l26680 Al
9/2002 11:51; St :1'
?bre channel connections”, HotInterconnects, 9, (Aug. 2001),87-91.
2002/0156612 A1
10/2002 Schulter et a1.
* cited by examiner
US. Patent
Mar. 24, 2009
Sheet 1 0f 4
US 7,509,436 B1
f\ 12?
f\ 128
COMPUTER
' Q 0
COMPUTER
L
J
129
/\ 110
f“ iSCSl HP
104
105
FIG. 1
_/\ 106
SCSI HP
130
100
140
US. Patent
Mar. 24, 2009
Sheet 2 of4
Application
l/O Class
US 7,509,436 B1
/\ 202
r, 204
A
SCSI Port Manager
SRBs
Miniport Driver
Network Stack
Device Driver
FIG. 2
/\/240
US. Patent
Mar. 24, 2009
Sheet 3 of4
Receive Data Packet
US 7,509,436 B1
“D302
I
Deliver Data Packet to First
Module
/\v3 04
i
Send Function Request to
k 306
Second Module
\/
i
Second Module Calls Routine I“ 308
in First Module
FIG. 3
V
US 7,509,436 B1
1
2
SYSTEM AND METHOD FOR INCREASED
VIRTUAL DRIVER THROUGHPUT
ADAPTER INA STORAGE-AREA NETWORK”; all of the
FIELD
COPYRIGHT NOTICE/ PERMISSION
The present invention relates generally to virtual drivers in
computer systems, and more particularly to increasing
throughput of virtual drivers.
tains material that is subject to copyright protection. The
RELATED FILES
records, but otherWise reserves all copyright rights Whatso
above of Which are hereby incorporated by reference.
A portion of the disclosure of this patent document con
copyright oWner has no objection to the facsimile reproduc
tion by anyone of the patent document or the patent disclosure
as it appears in the Patent and Trademark Of?ce patent ?le or
ever. The folloWing notice applies to the softWare and data as
described beloW and in the draWings hereto: Copy
right©2002, Cisco Systems, Inc. All Rights Reserved.
This invention is related to application Ser. No. 10/ 122,
401, ?ledApr. 1 1, 2002, entitled “METHOD AND APPARA
TUS
FOR
SUPPORTING
COMMUNICATIONS
BETWEEN NODES OPERATING IN A MASTER-SLAVE
BACKGROUND
CONFIGURATION”, Which is a continuation of application
The use of computer netWorks, including the Internet, con
tinues to groW at a rapid pace. This groWth includes groWth in
the number of devices on netWorks, the types of devices on
networks, and the protocols used on netWorks. One aspect of
this groWth is the encapsulation of a ?rst protocol in a second
Ser. No. 09/949,182, ?led Sep. 7, 2001, entitled “METHOD
AND APPARATUS FOR SUPPORTING COMMUNICA
TIONS BETWEEN NODES OPERATING INA MASTER
20
SLAVE CONFIGURATION”; application Ser. No. 10/094,
552, ?led Mar. 7, 2002, entitled “METHOD AND
APPARATUS FOR EXCHANGING HEARTBEAT MES
SAGES AND CONFIGURATION INFORMATION
BETWEEN NODES OPERATING IN A MASTER-SLAVE
protocol. An example of this is the iSCSI protocol (Internet
SCSI). iSCSI is an Internet Protocol (IP)-based storage net
25
carrying SCSI commands over IP netWorks, iSCSI is used to
facilitate data transfers over intranets and to manage storage
over long distances. Because of the ubiquity of IP netWorks,
CONFIGURATION”; application Ser. No. 10/131,275, ?led
Apr. 22, 2002, entitled “METHOD AND APPARATUS FOR
CONFIGURING NODES AS MASTERS OR SLAVES”;
application Ser. No. 10/131,274, ?led Apr. 22, 2002, entitled
30
WORK”, application Ser. No. 10/128,656, ?led Apr. 22,
35
enable location-independent data storage and retrieval.
While iSCSI has many advantages, previous systems
implementing the iSCSI protocol have suffered from prob
lems with U0 (input/output) throughput. A potential cause of
this problem results from the fact that iSCSI is typically
implemented using a virtual device driver. Conventional
SCSI interfaces required a hardWare adapter to interface With
BETWEEN SCSI AND IP NETWORKS”; application Ser.
No. 10/131,793, ?led Apr. 22, 2002, entitled “VIRTUAL
SCSI BUS FOR SCSI-BASED STORAGE AREA NET
iSCSI can be used to transmit data over local area netWorks
(LANs), Wide area netWorks (WANs), or the Internet and can
“METHOD AND APPARATUS FOR TERMINATING
APPLICATIONS IN A HIGH-AVAILABILITY NET
2002, now US. Pat. No. 7,165,258, issued on Jan. 16, 2007,
entitled “SCSI-BASED STORAGE AREA NETWORK
HAVING A SCSI ROUTER THAT ROUTES TRAFFIC
Working standard for linking data storage facilities, devel
oped by the Internet Engineering Task Force (IETF). By
a SCSI device. In such conventional SCSI implementations,
40
WORK”; application Ser. No. 10/131,782, ?led Apr. 22,
2002, entitled “VIRTUAL MAC ADDRESS SYSTEM AND
the SCSI host bus adapter (HBA) can signal I/O using a
hardWare interrupt to a physical device driver (physical
because a physical HBA is present). As a result, softWare that
METHOD”; application Ser. No. 10/128,655, ?led Apr. 22,
uses SCSI can be noti?ed almost immediately that data has
2002, entitled “SYSTEM AND METHOD FOR CONFIG
been sent or is available.
URING FIBRE-CHANNEL DEVICES”; application Ser.
No. 10/131,789, ?led Apr. 22, 2002, entitled “METHOD
45
AND APPARATUS FOR ASSOCIATING AN IP ADDRESS
AND INTERFACE TO A SCSI ROUTING INSTANCE”;
application Ser. No. 10/ 128,657, ?led Apr. 22, 2002, entitled
“METHOD AND APPARATUS FOR EXCHANGING
CONFIGURATION INFORMATION BETWEEN NODES
OPERATING IN A MASTER-SLAVE CONFIGURA
50
55
and iSCSI targets, such polling is acceptable. HoWever, When
there are relatively feW connections, the latency in processing
WARE FOR TARGET ID BUILDING IN A STORAGE
serial commands for a connection caused by the polling can
60
even date hereWith, entitled “SYSTEM AND METHOD
“LATENCY REDUCTION IN NETWORK DATA TRANS
AND SOFTWARE FOR A VIRTUAL HOST BUS
be unacceptably large.
As a result, there is a need in the art for the present inven
tion.
FOR DELAYED ERROR HANDLING”; application Ser.
No. 10/143,493, ?led even date hereWith, entitled
FER OPERATIONS”; and application Ser. No. 10/143,456,
?led even date hereWith, entitled “SYSTEM, METHOD,
is ten milliseconds, resulting in relatively large polling inter
vals. When there are many connections betWeen iSCSI hosts
METHOD”; application Ser. No. 10/143,561, ?led even date
hereWith, entitled “SYSTEM, METHOD, AND SOFT
AREA NETWORK”; application Ser. No. 10/143,560, ?led
With a netWork stack in order to communicate With SCSI
devices that reside on an IP netWork. Because no physical
SCSI device is present, there are no interrupts to indicate that
data has been sent, or is available. As a result, iSCSI imple
mentations in previous systems have typically relied on a
timer expiration to cause a virtual device (virtual because
there is no physical SCSI device) driver to be polled to see if
data is available. In some instances, the resolution of the timer
TION”; application Ser. No. 10/128,993, ?led Apr. 22, 2002,
entitled “SESSION-BASED TARGET/LUN MAPPING
FORA STORAGE AREA NETWORK AND ASSOCIATED
Unlike conventional SCSI, iSCSI implementations do not
interface With a physical SCSI HBA, rather they interface
SUMMARY
65
The above-mentioned shortcomings, disadvantages and
problems are addressed by the present invention, Which Will
US 7,509,436 B1
3
4
be understood by reading and studying the following speci
skilled in the art. An algorithm is here, and generally, con
?cation. One aspect of the present invention is computerized
system for providing data input and output. In one embodi
ment the system includes a SCSI (Small Computer System
Interconnect) port manager; a miniport driver operatively
ceived to be a self-consistent sequence of steps leading to a
desired result. The steps are those requiring physical manipu
lations of physical quantities. Usually, though not necessarily,
these quantities take the form of electrical or magnetic signals
coupled to the SCSI port manager; and a netWork interface
capable of being stored, transferred, combined, compared,
operatively coupled to the miniport driver. Upon receiving
and otherWise manipulated. It has proven convenient at times,
indication that a SCSI command has been completed, the
miniport driver issues a request to the SCSI port manager
causing the SCSI port manager to issue a function call into the
miniport driver. As a result, the function call to complete the
request is in the SCSI port manager’s context.
In one embodiment of the invention, the miniport driver
schedules a Worker thread to issue the request to the SCSI port
manager.
A further aspect of the present invention is a method for
principally for reasons of common usage, to refer to these
processing a request in a virtual driver. In one embodiment the
method includes calling a ?rst routine in a ?rst module to
deliver a data packet; sending a function request to a second
module that causes the second module to call a second routine
in the ?rst module. As a result, the second routine is called in
the proper context.
As can be seen from the above, the systems and methods of
signals as bits, values, elements, symbols, characters, terms,
numbers, or the like. It should be borne in mind, hoWever, that
all of these and similar terms are to be associated With the
appropriate physical quantities and are merely convenient
labels applied to these quantities. Unless speci?cally stated
otherWise as apparent from the folloWing discussions, terms
such as “processing” or “computing” or “calculating” or
“determining” or “displaying” or the like, refer to the action
and processes of a computer system, or similar computing
device, that manipulates and transforms data represented as
physical (e.g., electronic) quantities Within the computer sys
20
memories or registers or other such information storage,
transmission or display devices.
In the Figures, the same reference number is used through
the present invention have the advantage that they can elimi
nate, or at least reduce the use of timers and the associated
latency that comes With the use of timers.
25
out to refer to an identical component Which appears in mul
tiple Figures. Signals and connections may be referred to by
The present invention describes systems, clients, servers,
methods, and computer-readable media of varying scope. In
addition to the aspects and advantages of the present inven
tion described in this summary, further aspects and advan
tages of the invention Will become apparent by reference to
tem’s registers and memories into other data similarly repre
sented as physical quantities Within the computer system
the same reference number or label, and the actual meaning
Will be clear from its use in the context of the description.
The folloWing detailed description is, therefore, not to be
30
taken in a limiting sense, and the scope of the present inven
tion is de?ned only by the appended claims.
the drawings and by reading the detailed description that
Operating Environment
folloWs.
BRIEF DESCRIPTION OF THE DRAWINGS
35
FIG. 1 is a block diagram of a storage router hardWare and
operating environment in Which different embodiments of the
invention can be practiced;
FIG. 2 is a diagram providing further details of a host
computer environment according to an embodiment of the
40
Some embodiments of the invention operate in an environ
ment of systems and methods that provide a means for ?bre
channel bases SANs to be accessed from TCP/IP netWork
hosts. FIG. 1 is a block diagram describing the major com
ponents of such a system. Storage router system 100 includes
computers (127, 128) connected through an IP netWork 129 to
storage router 110. Storage router 110 is connected in turn
invention;
through storage netWork 130 to one or more SCSI devices
FIG. 3 is a ?owchart illustrating a method for providing
increased virtual driver throughput according to an embodi
ment of the invention; and
FIG. 4 is a diagram illustrating the major hardWare com
ponents of a computer incorporating embodiments of the
invention.
140. In the embodiment shoWn in FIG. 3, storage router 110
includes an iSCSI (Internet SCSI) interface 104, a SCSI
DETAILED DESCRIPTION
45
extracts the SCSI packet and send the SCSI packet to SCSI
router 105. SCSI interface 106 modi?es the SCSI packet to
50
In the folloWing detailed description of exemplary embodi
ments of the invention, reference is made to the accompany
ing draWings Which form a part hereof, and in Which is shoWn
by Way of illustration speci?c exemplary embodiments in
55
Which the invention may be practiced. These embodiments
are described in su?icient detail to enable those skilled in the
art to practice the invention, and it is to be understood that
other embodiments may be utiliZed and that logical, mechani
cal, electrical and other changes may be made Without depart
ing from the scope of the present invention.
Some portions of the detailed descriptions Which folloW
are presented in terms of algorithms and symbolic represen
60
These algorithmic descriptions and representations are the
conform With its netWork protocol (e.g., Fibre Channel, par
allel SCSI, or iSCSI) and places the modi?ed SCSI packet
onto storage netWork 130. The SCSI packet is then delivered
to its designated SCSI device 140.
In one embodiment, storage router 110 provides IPv4
router functionality betWeen a single Gigabit Ethernet and a
Fibre Channel interface. In one such embodiment, static
routes are supported. In addition, storage router 110 supports
a con?gurable MTU siZe for each interface, and has the abil
ity to reassemble and refragment IP packets based on the
MTU of the destination interface.
In one embodiment, storage router 110 acts as a gateWay,
converting SCSI protocol betWeen Fibre Channel and TCP/
tations of operations on data bits Within a computer memory.
Ways used by those skilled in the data processing arts to most
effectively convey the substance of their Work to others
router 105 and a SCSI interface 106. iSCSI interface 104
receives encapsulated SCSI packets from IP netWork 129,
65
IP. Storage router 110 is con?gured in such an embodiment to
present Fibre Channel devices as iSCSI targets, providing the
ability for clients on the IP netWork to directly access storage
devices.
In one embodiment, SCSI routing occurs in the Storage
Router 110 through the mapping of physical storage devices
US 7,509,436 B1
5
6
to iSCSI targets. An iSCSI target (also called logical target) is
202 desires to read and write data to a disk. Further assume
an arbitrary name for a group of physical storage devices.You
can map an iSCSI target to multiple physical devices. An
that the desired disk is attached to a device implementing the
iSCSI target always contains at least one Logical Unit Num
or write request to I/O class 204, the request is passed to the
SCSI port manage 210, which formats the request into a data
iSCSI protocol (e. g. a storage router). Upon initiating a read
ber (LUN). Each LUN on an iSCSI target is mapped to a
packet conforming to the SCSI protocol. This includes encap
sulating the request in a SCSI request block (SRB). SCSI port
manager 210 then calls into the appropriate miniport driver
passing the SRB, in this example, the miniport driver that
single LUN on a physical storage target.
Further details on the operation of the above can be found
in US. patent application Ser. No. 10/131,793 entitled
““VIRTUAL SCSI BUS FOR SCSI-BASED STORAGE
AREA NETWORK” which has been previously incorporated
communicates over a network to an iSCSI device. The
by reference.
miniport driver is then responsible for the SRB for each
request received. The miniport driver then calls the network
FIG. 2 provides further details of a software environment
for host computers such as computer 127 and 128 in which
embodiments of the invention operate. In some embodiments,
stack to transport the packets over the network to a target.
Per the iSCSI protocol, as requests are completed by a
the software environment includes application 202, I/O (In
put/Output) class 204, SCSI port manager 210, miniport
target, an acknowledgement is provided to the initiator indi
cating the request is complete. The network stack 230 delivers
driver 220, network stack 230, and device driver 240. Appli
cation 202 represents any type of software application that
the acknowledgement to the miniport driver 220, which
requires I/O services from an operating system. In some
embodiments of the invention, the operating system is a vari
ant of the Microsoft Windows operating system from
20
worker thread 226. In these embodiments, worker thread 226
Microsoft Corporation.
sends a request 214 to the SCSI port manager 210 to issue a
In some embodiments, I/O class 204 comprises one or
more modules that provide input and output services to appli
cations 202. In some embodiments, these modules include
25
?le system management modules, volume management mod
ules, and ?le system drivers. Typically, such modules provide
block I/O services to applications 202.
In some embodiments, SCSI port manager 210 supplies the
interface to one or more miniport drivers 220. SCSI port
places the SRB on a list of SRBs 222 that can be completed.
In some embodiments, upon receiving an indication that an
SRB can be completed, miniport driver 220 schedules a
30
function call to the miniport driver 220. The function call 214
into the SCSI port manager causes the port manager to issue
its own function call 216 into the miniport driver 220. In some
embodiments, the function call is an “ioctl” function call. In
essence, the miniport driver is causing a ioctl to be sent to
itself. However, because the SCSI port manager issues the
function call, the context of the function is the SCSI port
manager context 210. This provides the correct context for the
further processing of the completed SRBs to upper layers
such as the I/O class 204 and application 202. This is desirable
manager 210 may orchestrate the loading and initialiZation of
miniport drivers 220, export a number of services available to
miniport device drivers, and coordinate input and output
in order to cause the processing of the completed SRBS to be
between modules in I/ O class 204 and the miniport driver 220.
Typically, SCSI port manager provides services in a device
done at the right IRQL (Interrupt Request Level). In these
35
independent manner, while miniport driver 220 implements
functions that are device speci?c. For example, prior art
miniport drivers 220 typically interfaced with a particular
SCSI hardware interface, or interfaced with a device driver
module that was speci?c to a particular SCSI hardware inter
IRQL, rather than at the miniport driver’s higher IRQL.
40
face.
In some embodiments of the invention, miniport driver 220
communicates with a network stack 230. In these embodi
ments, the miniport driver can also be referred to as a virtual
driver because it does not directly interface with a physical
device such as a SCSI adapter. In one embodiment, miniport
45
50
trated using the following example. Assume that application
may be necessary to further process completed requests
which are processed by the worker thread. This further pro
cessing may include moving the request to a completed
queue.
55
In some embodiments, either upon receiving the function
call (i.e. the ioctl call), or upon being called due to timer 212
expiration, the miniport driver will cause the SRBs 222 that
can be completed to be processed. In some embodiments, this
processing includes calling a function “ScsiPortNoti?cation”
with a “RequestComplete” ?ag set for each SRB in com
pleted SRBs 222.
60
Thus, when the network stack interfaces with the miniport
driver, the calls into the miniport driver are made in the
network stack’s context 232. Similarly, when the SCSI port
manager issues interface calls into the miniport driver, the
calls are made in the SCSI port manager’s context 218.
The operation of the above-described system can be illus
can be useful for two reasons. First, the timer may cause an
(request to send ioctl, and the ioctl). Second, the timer routine
router. The network stack operates to encapsulate iSCSI data
As can be seen from the foregoing description, the miniport
driver exposes interfaces to both the SCSI port manager 210
and the network stack 230. In some embodiments of the
invention, modules such as drivers, processes and threads
have a context associated with them. A context typically
de?nes aspects of the module, such as priority level, access
rights, security rights, memory access etc. Thus, in some
embodiments, network stack 230 has an associated context
232, and SCSI port manager 210 has a associated context 218.
Timer 212 is a timer routine that goes off at predetermined
intervals. In some embodiments of the invention, timer 212
goes off at 10 millisecond intervals. In prior art systems, timer
212 is used to cause the SCSI port manager 210 to call into
miniport driver 220 to cause completed SCSI request blocks
222 to be processed. In some embodiments, timer 212 is used
in addition to the function calls described above. The timer
SRB that can be completed to be processed and complete the
queued requests sooner then using the two function calls
driver 220 uses network stack 230 to send data that conforms
to the iSCSI protocol over a TCP/IP network to a storage
with the appropriate TCP/IP headers, and physical network
headers (e.g. Ethernet headers).
embodiments, worker thread 226 causes the speci?ed func
tion to be called within a system thread at the lowest (passive)
FIG. 3 is a ?owchart illustrating a method for providing
increased virtual driver throughput according to an embodi
ment of the invention. The method to be performed by the
operating environment constitute computer programs made
up of computer-executable instructions. Describing the meth
65
ods by reference to a ?owchart enables one skilled in the art to
develop such programs including such instructions to carry
out the methods on suitable computers (the processor of the
US 7,509,436 B1
7
8
computer executing the instructions from computer-readable
microprocessors from the HeWlett-Packard Company, the
SPARC® family of microprocessors from the Sun Microsys
tems Corporation, or the ALPHA® family of microproces
sors from the Compaq Computer Corporation. Computing
system 400 represents any personal computer, laptop, server,
media). The method illustrated in FIG. 3 is inclusive of the
acts required to be taken by an operating environment execut
ing an exemplary embodiment of the invention.
The method begins by receiving a data packet (block 302).
In some embodiments of the invention, the data packet is an
iSCSI packet comprising an indication that an request has
or even a battery-poWered, pocket-siZed, mobile computer
knoWn as a hand-held PC.
been completed.
The computing system 400 includes system memory 413
(including read-only memory (ROM) 414 and random access
memory (RAM) 415), Which is connected to the processor
412 by a system data/address bus 416. ROM 414 represents
Next, a system executing the method calls a function in a
?rst module to deliver the packet (block 304). In some
embodiments of the invention, the ?rst module is a miniport
miniport driver to deliver the packet. In further embodiments,
any device that is primarily read-only including electrically
erasable programmable read-only memory (EEPROM), ?ash
the call takes place in the context of the netWork stack.
Upon receiving the data packet, a function request is sent to
a second module (block 306). In some embodiments of the
invention, the second module is a SCSI port manager. Further,
memory such as Synchronous Dynamic Random Access
in some embodiments the function request is a request sent to
the SCSI port manager to cause the SCSI port manager to
issue an “ioctl” function to the miniport driver. In alternative
connected to the data/address bus 416 via bus controller 419.
In one embodiment, input/output bus 418 is implemented as
driver and a netWork stack module calls a routine Within the
memory, etc. RAM 415 represents any random access
Memory.
Within the computing system 400, input/ output bus 418 is
20
embodiments of the invention, the miniport driver schedules
a Worker thread that sends the function request to the SCSI
sor 412 to route the signals to the appropriate bus. Signals
betWeen the processor 412 and the system memory 413 are
port manager.
Finally, the second module calls a second routine in the ?rst
module (block 308). In some embodiments, the second mod
merely passed through the bus controller 419. HoWever, sig
25
ule issues an “ioctl” call to the ?rst module. In alternative
embodiments of the invention, the ?rst module is a miniport
driver and the second module is a SCSI port manager.
Upon receiving the ioctl call, the ?rst module, in some
embodiments of the invention, the ?rst module causes further
processing to take place on a request associated With the data
30
packet. In some embodiments, the further processing
includes processing associated With completing a request.
The further processing takes place in the context of the second
module.
FIG. 4 is a diagram of the hardWare and operating environ
ment in conjunction With Which embodiments of the inven
tion may be practiced. The description of FIG. 3 is intended to
nals from the processor 412 intended for devices other than
system memory 413 are routed onto the input/output bus 418.
Various devices are connected to the input/output bus 418
including hard disk drive 420, ?oppy drive 421 that is used to
read ?oppy disk 451, and optical drive 422, such as a CD
ROM drive that is used to read an optical disk 452. The video
display 424 or other kind of display device is connected to the
input/output bus 418 via a video adapter 425.
A user enters commands and information into the comput
35
ing system 400 by using a keyboard 40 and/or pointing
device, such as a mouse 42, Which are connected to bus 418
via input/output ports 428. Other types of pointing devices
(not shoWn in FIG. 4) include track pads, track balls, joy
sticks, data gloves, head trackers, and other devices suitable
provide a brief, general description of suitable computer
hardWare and a suitable computing environment in conjunc
tion With Which the invention may be implemented. Although
not required, the invention is described in the general context
of computer-executable instructions, such as program mod
ules, being executed by a computer, such as a personal com
40
puter or a server computer. Generally, program modules
45
include routines, programs, objects, components, data struc
tures, etc., that perform particular tasks or implement particu
lar abstract data types.
Moreover, those skilled in the art Will appreciate that the
invention may be practiced With other computer system con
a standard Peripheral Component Interconnect (PCI) bus.
The bus controller 419 examines all signals from the proces
for positioning a cursor on the video display 424.
As shoWn in FIG. 4, the computing system 400 also
includes a modem 429. Although illustrated in FIG. 4 as
external to the computing system 400, those of ordinary skill
in the art Will quickly recogniZe that the modem 429 may also
be internal to the computing system 400. The modem 429 is
typically used to communicate over Wide area netWorks (not
shoWn), such as the global Internet. The computing system
may also contain a netWork interface card 53, as is knoWn in
the art, for communication over a netWork.
?gurations, including hand-held devices, multiprocessor sys
SoftWare applications 436 and data are typically stored via
one of the memory storage devices, Which may include the
tems, microprocessor-based or programmable consumer
hard disk 420, ?oppy disk 451, CD-ROM 452 and are copied
electronics, netWork PCs, minicomputers, mainframe com
puters, and the like. The invention may also be practiced in
to RAM 415 for execution. In one embodiment, hoWever,
softWare applications 436 are stored in ROM 414 and are
copied to RAM 415 for execution or are executed directly
from ROM 414.
distributed computing environments Where tasks are per
50
55
formed by remote processing devices that are linked through
In general, the operating system 435 executes softWare
applications 436 and carries out instructions issued by the
a communications netWork. In a distributed computing envi
ronment, program modules may be located in both local and
remote memory storage devices.
As shoWn in FIG. 4, the computing system 400 includes a
processor. The invention can be implemented on computers
based upon microprocessors such as the PENTIUM® family
user. For example, When the user Wants to load a softWare
60
instruction and causes the processor 412 to load softWare
of microprocessors manufactured by the Intel Corporation,
the MIPS® family of microprocessors from the Silicon
Graphics Corporation, the POWERPC® family of micropro
cessors from both the Motorola Corporation and the IBM
Corporation, the PRECISIONARCHITECTURE® family of
application 436, the operating system 435 interprets the
65
application 436 into RAM 415 from either the hard disk 420
or the optical disk 452. Once softWare application 436 is
loaded into the RAM 415, it can be used by the processor 412.
In case of large softWare applications 436, processor 412
loads various portions of program modules into RAM 415 as
needed.
US 7,509,436 B1
10
4. A data-processing system, comprising:
The Basic Input/Output System (BIOS) 417 for the com
puting system 400 is stored in ROM 414 and is loaded into
a processor;
a memory;
RAM 415 upon booting. Those skilled in the art Will recog
niZe that the BIOS 417 is a set of basic executable routines
a Worker thread executable by the processor; and
that have conventionally helped to transfer information
betWeen the computing resources Within the computing sys
data-processing softWare that is operable on the data-pro
cessing system to:
tem 400. These loW-level service routines are used by oper
call a ?rst routine in a ?rst module to deliver a data
packet; and
ating system 435 or other software applications 436.
In one embodiment computing system 400 includes a reg
causing the Worker thread to send a function request to a
istry (not shoWn) Which is a system database that holds con
SCSI port manager, Wherein the function request
?guration information for computing system 400. For
example, [email protected] 95, WindoWs 98®, [email protected] NT,
causes the SCSI port manager to call a second routine
in the ?rst module;
WindoWs 2000® and WindoWs XP® by Microsoft maintain
the registry in tWo hidden ?les, called USERDAT and SYS
Wherein calling the ?rst routine occurs in a netWork
stack context and calling the second routine occurs in
a SCSI port manager context and Wherein the SCSI
port manager context is a loWer priority context than
the netWork stack context.
TEM.DAT, located on a permanent storage device such as an
internal disk.
CONCLUSION
5. The data processing system of claim 4, Wherein the ?rst
module is a miniport driver.
Systems and methods for improving I/ O throughput using
20
6. The data processing system of claim 4, Wherein the
ioctl function calls are disclosed. The systems and methods
function request is a request for an “ioctl” function.
described provide advantages over previous systems. For
example, the I/ O throughput of systems incorporating
second routine is an “ioctl” function.
embodiments of the invention can be improved because data
is processed as it is received, rather than Waiting for a timer
With a ten-millisecond granularity to expire. In one particular
embodiment, I/ O throughput Was increased by a factor of 3-4
times over using the timer alone.
Although speci?c embodiments have been illustrated and
described herein, it Will be appreciated by those of ordinary
skill in the art that any arrangement Which is calculated to
achieve the same purpose may be substituted for the speci?c
embodiments shoWn. This application is intended to cover
any adaptations or variations of the present invention.
The terminology used in this application is meant to
include all of these environments. It is to be understood that
the above description is intended to be illustrative, and not
restrictive. Many other embodiments Will be apparent to those
of skill in the art upon revieWing the above description. There
fore, it is manifestly intended that this invention be limited
7. The data processing system of claim 4, Wherein the
25
9. A method for processing a request in a miniport driver,
the method comprising:
calling a ?rst routine in a ?rst module to deliver a data
packet; and
30
causing a Worker thread to send a function request to a
SCSI module, Wherein the function request causes the
SCSI module to call a second routine in the ?rst module;
Wherein calling the ?rst routine occurs in a netWork stack
35
context and calling the second routine occurs in a SCSI
module context and Wherein the SCSI module context is
a loWer priority context than the netWork stack context.
10. The method of claim 9, Wherein the ?rst module is a
miniport driver.
40
only by the folloWing claims and equivalents thereof.
11. The method of claim 9, Wherein the SCSI module is a
SCSI port manager module.
12. The method of claim 9, Wherein the function request is
a request for an “ioctl” function.
I claim:
1. A computerized system for providing data input and
output, the system comprising:
8. The data processing system of claim 4, Wherein the data
packet is an iSCSI (Internet SCSI) data packet.
45
13. The method of claim 9, Wherein the second routine is an
“ioctl” function.
14. The method of claim 9, Wherein the SCSI module
a processor and a memory;
context is a SCSI port manager context.
a SCSI (Small Computer System Interconnect) port man
ager, the SCSI port manager executable by the processor
iSCSI (Internet SCSI) data packet.
15. The method of claim 9, Wherein the data packet is an
from the memory and having a module context;
a miniport driver operatively coupled to the SCSI port
manager; the miniport driver having a miniport driver
context; and
a netWork interface operatively coupled to the miniport
16. A computer-readable storage medium having stored
50
method comprising:
calling a ?rst routine in a ?rst module to deliver a data
driver;
Wherein the miniport driver is operable to cause a Worker
thread to issue a request to the SCSI port manager, the
request causing the SCSI port manager to issue a func
packet; and
55
60
than the miniport driver context, and further Wherein the
miniport driver is operable to complete a SCSI request
block in response to receiving the function call.
2. The system of claim 1, Wherein the netWork interface is
an Ethernet interface.
3. The system of claim 2, Wherein the Ethernet interface is
a Gigabit Ethernet interface.
causing a Worker thread to send a function request to a
SCSI module, Wherein the function request causes the
SCSI module to call a second routine in the ?rst module;
Wherein calling the ?rst routine occurs in a netWork stack
tion call back into the miniport driver, said function call
having the module context of the SCSI port manager and
Wherein the module context is a loWer priority context
thereon computer executable instructions for performing a
method for processing a request in a miniport driver, the
context and calling the second routine occurs in a SCSI
module context and Wherein the SCSI module context is
a loWer priority context than the netWork stack context.
17. The computer-readable medium of claim 16, Wherein
the ?rst module is a miniport driver.
18. The computer-readable medium of claim 16, Wherein
65
the SCSI module is a SCSI port manager module.
19. The computer-readable medium of claim 16, Wherein
the function request is a request for an “ioctl” function.
US 7,509,436 B1
11
12
20. The computer-readable medium of claim 16, wherein
the second routine is an “ioctl” function.
means for causing a Worker thread to send a function
request to a SCSI module, Wherein the function request
causes the SCSI module to call a second routine in the
21. The computer-readable medium of claim 16, Wherein
the SCSI module context is a SCSI port manager context.
22. The computer-readable medium of claim 16, Wherein
the data packet is an iSCSI (Internet SCSI) data packet.
23. A system for providing SCSI data input and output
comprising:
a processor and a memory
-
5
Wherein calling the ?rst routine occurs in a netWork stack
context and calling the second routine occurs in a SCSI
module context and Wherein the SCSI module context is
a loWer priority context than the netWork stack context.
24. The system of claim 23, Wherein the ?rst module is a
10 miniPOrt driver
-
-
means for calling a ?rst rout1ne 1n a ?rst module executable
by the process from the memory and operable to deliver
a data packet; and
?rst module;
25. The system of claim 23, Wherein the SCSI module is a
SCSI port manager module.
*
*
*
*
*
UNITED STATES PATENT AND TRADEMARK OFFICE
CERTIFICATE OF CORRECTION
PATENT NO.
: 7,509,436 B1
Page 1 of 1
APPLICATION NO. : 10/143503
DATED
: March 24, 2009
INVENTOR(S)
: Rissrneyer
It is certified that error appears in the above-identi?ed patent and that said Letters Patent is
hereby corrected as shown below:
On the Title Page
On Page 2, under “Other Publications”, Item (56), line 3, delete “Electron” and
insert -- Election --, therefor.
Signed and Sealed this
Second Day of June, 2009
View
JOHN DOLL
Acting Director ofthe United States Patent and Trademark O?ice
Was this manual useful for you? yes no
Thank you for your participation!

* Your assessment is very important for improving the work of artificial intelligence, which forms the content of this project

Download PDF

advertisement