<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD><TITLE>Message</TITLE>
<META http-equiv=Content-Type content="text/html; charset=us-ascii">
<META content="MSHTML 6.00.2800.1498" name=GENERATOR></HEAD>
<BODY>
<DIV>
<DIV><FONT face=Arial size=2><SPAN
class=934533914-27062005></SPAN></FONT></DIV><FONT face=Arial size=2><SPAN
class=934533914-27062005>Dear DAT and OpenIB members,</SPAN></FONT></DIV>
<DIV><FONT face=Arial size=2><SPAN class=934533914-27062005>There is a
debate going on on OpenIB and DAT reflectors which is going around about kDAT
registry for Linux.</SPAN></FONT></DIV>
<DIV><FONT face=Arial size=2><SPAN
class=934533914-27062005></SPAN></FONT> </DIV>
<DIV><FONT face=Arial size=2><SPAN class=934533914-27062005>I would like to
review the requirements we <SPAN class=703341815-29062005>had
</SPAN>agreed <SPAN class=703341815-29062005>at</SPAN> DAT
collaborative <SPAN class=703341815-29062005>and captured in the
kDAT</SPAN></SPAN></FONT></DIV>
<DIV><FONT><SPAN class=934533914-27062005><SPAN
class=703341815-29062005></SPAN><FONT face=Arial><FONT size=2><SPAN
class=703341815-29062005>and uDAT specs </SPAN>and review<SPAN
class=703341815-29062005> </SPAN></FONT></FONT></SPAN></FONT><FONT face=Arial
size=2><SPAN class=934533914-27062005>DAT registry in OpenIB from that
prospective.</SPAN></FONT></DIV>
<DIV><FONT face=Arial size=2><SPAN
class=934533914-27062005></SPAN></FONT> </DIV>
<DIV><FONT face=Arial size=2><SPAN
class=934533914-27062005></SPAN></FONT> </DIV>
<DIV><FONT face=Arial size=2><SPAN class=934533914-27062005>I would like to make
it clear that I do NOT speak on behalf of DAT Collaborative
but</SPAN></FONT></DIV>
<DIV><FONT face=Arial size=2><SPAN class=934533914-27062005>as just one of its
members.</SPAN></FONT></DIV>
<DIV><FONT face=Arial size=2><SPAN
class=934533914-27062005></SPAN></FONT> </DIV>
<OL>
<LI><FONT face=Arial size=2><SPAN class=934533914-27062005><SPAN
class=934533914-27062005>Ability of Consumers to open IA based on its
name</SPAN><FONT face="Times New Roman" size=3> </FONT>
<UL>
<LI><FONT face=Arial size=2><SPAN class=934533914-27062005>OpenIB supports
it</SPAN></FONT></LI></UL></SPAN></FONT>
<LI><FONT face=Arial size=2><SPAN class=934533914-27062005><SPAN
class=934533914-27062005>Support for Consumers to get a list of available IAs
to open</SPAN><FONT face="Times New Roman" size=3> </FONT></LI>
<UL>
<LI><SPAN class=934533914-27062005>OpenIB kDAT and uDAT registry provide
this</SPAN>
<LI><SPAN class=934533914-27062005>OpenIB kDAT registry no longer provide
Provider attributes as stated above</SPAN></LI>
<LI><SPAN class=934533914-27062005><SPAN class=703341815-29062005>Preserves
dat_registry_list_providers</SPAN></SPAN></LI>
<LI><SPAN class=934533914-27062005><SPAN class=703341815-29062005>for kDAPL
OpenIB changed dat_provider_info format so binary compatibility not
preserved, but source compatibility is preserved.</SPAN></SPAN></LI>
<UL>
<LI><SPAN class=934533914-27062005><SPAN
class=703341815-29062005>dat_provider_info differs between uDAPL and kDAPL
in OpenIB</SPAN></SPAN></SPAN></FONT></LI></UL></UL><FONT><SPAN
class=934533914-27062005>
<LI><FONT face=Arial><FONT size=2><SPAN class=934533914-27062005><SPAN
class=703341815-29062005>A</SPAN>bility to enumerate available IAs and their
attributes</SPAN> </FONT></FONT></LI>
<UL>
<LI><FONT face=Arial><FONT size=2><SPAN class=934533914-27062005>OpenIB
supports that for uDAPL<SPAN class=703341815-29062005> </SPAN><SPAN
class=703341815-29062005>unchanged from DAPL SF RI</SPAN></SPAN>
</FONT></FONT>
<LI><FONT face=Arial size=2><SPAN class=934533914-27062005>for kDAPL openIB
supports a single type of thread-safety defined by the Linux kernel and the
version of Linux kernel defines the kDAPL APIs that kernel version
supports.</SPAN></FONT></LI>
<UL>
<LI><FONT face=Arial size=2><SPAN class=934533914-27062005><SPAN
class=703341815-29062005>for kDAPL query will not return DAT version and
thread safety Provider
attribute.</SPAN></SPAN></FONT></LI></UL></UL></SPAN></FONT>
<LI><FONT face=Arial size=2><SPAN class=934533914-27062005>Map IA_name to
Provider library (kDAPL or uDAPL)</SPAN></FONT>
<UL>
<LI><SPAN class=934533914-27062005><FONT face=Arial><FONT size=2>OpenIB
kDAPL and uDAPL support th<SPAN
class=703341815-29062005>is</SPAN></FONT></FONT></SPAN></LI></UL>
<LI><SPAN class=934533914-27062005><FONT face=Arial><FONT size=2>Ability for
DAT providers to dynamically register and deregister DAPL <SPAN
class=703341815-29062005>Provider</SPAN></FONT></FONT></SPAN> </LI>
<UL>
<LI><FONT face=Arial size=2><SPAN class=934533914-27062005>OpenIB supports
that for kDAPL and uDAPL</SPAN></FONT></LI>
<LI><FONT face=Arial size=2><SPAN class=934533914-27062005><SPAN
class=703341815-29062005>All existing registry APIs at DAPL SF RI are
preserved</SPAN></SPAN></FONT></LI></UL>
<LI><FONT face=Arial size=2><SPAN class=934533914-27062005>Single static DAT
registry - platform specific</SPAN></FONT>
<UL>
<LI><FONT face=Arial size=2><SPAN class=934533914-27062005>kDAT and uDAT
specs explicitly state that the DAT registry is defined by the platform and
</SPAN></FONT><FONT face=Arial size=2><SPAN class=934533914-27062005>DAT
collaborative provided an example of Registry for Linux and Windows and
agree that the DAT provided registry should be used by all providers. This
ensures that DAT Registry will support all Providers and DAT registry from
one vendor does not block other providers.</SPAN></FONT>
<LI><FONT face=Arial size=2><SPAN class=934533914-27062005>OpenIB kDAT
registry is the Linux platform DAT registry which achieves the goal of
supporting all kDAPL providers. It also provides additional benefit that it
is Linux core which maintain kDAT registry</SPAN></FONT> <SPAN
class=703341815-29062005><FONT face=Arial size=2> instead of DAT
Collaborative</FONT></SPAN>
<LI><FONT face=Arial size=2><SPAN class=934533914-27062005>OpenIB uDAT
registry remains the DAT collaborative one unchanged.</SPAN></FONT>
<LI><FONT face=Arial size=2><SPAN class=934533914-27062005>We can discuss
whether or not we want to get uDAT registry closer to the OpenIB kDAT
one</SPAN></FONT>
<LI><SPAN class=934533914-27062005><FONT face=Arial><FONT size=2>The DAT
registry for kDAPL and uDAPL <SPAN class=703341815-29062005>are
different at DAPL SF RI and OpenIB maintains
it.</SPAN></FONT></FONT></SPAN></LI>
<LI><SPAN class=934533914-27062005><FONT face=Arial><FONT size=2><SPAN
class=703341815-29062005>Some changes may be needed for kDAPL Registry hot
plug support for OpenIB. How it may impact uDAPL
registry.</SPAN></FONT></FONT></SPAN></LI></UL>
<LI><FONT face=Arial size=2><SPAN class=934533914-27062005>ia_name is under
system admin control</SPAN></FONT>
<UL>
<LI><SPAN class=934533914-27062005><FONT face=Arial><FONT size=2>remains the
same<SPAN class=703341815-29062005> following a platform
convention</SPAN></FONT></FONT></SPAN></LI></UL>
<LI><FONT face=Arial size=2><SPAN class=934533914-27062005>IA can
represent</SPAN></FONT>
<UL>
<OL>
<LI><FONT face=Arial size=2><SPAN class=934533914-27062005>single
port</SPAN></FONT>
<LI><FONT face=Arial size=2><SPAN class=934533914-27062005>several
ports</SPAN></FONT>
<LI><FONT face=Arial size=2><SPAN class=934533914-27062005>several HBAs or
RNICs</SPAN></FONT>
<LI><FONT face=Arial size=2><SPAN class=934533914-27062005>multiple IAs
represent the same port</SPAN></FONT></LI></OL>
<LI><FONT face=Arial size=2><SPAN class=934533914-27062005>OpenIB kDAPL
currently implements #1. Members can submit code patches to support other
choices </SPAN></FONT>
<LI><SPAN class=934533914-27062005><FONT face=Arial><FONT size=2>OpenIB
uDAPL remains the same with current implementation providing #1<SPAN
class=703341815-29062005> under Provider
control.</SPAN></FONT></FONT></SPAN></LI></UL>
<LI><FONT face=Arial size=2><SPAN class=934533914-27062005>Support for
Consumers to get a list of available IAs to open</SPAN></FONT>
<UL>
<LI><FONT face=Arial size=2><SPAN class=934533914-27062005>OpenIB kDAT and
uDAT registry provide this</SPAN></FONT>
<LI><FONT face=Arial size=2><SPAN class=934533914-27062005>OpenIB kDAT
registry no longer provide Provider attributes as stated
above</SPAN></FONT></LI></UL>
<LI><FONT face=Arial size=2><SPAN class=934533914-27062005>DAT registry
supports loading multiple DAPL <SPAN
class=703341815-29062005>Providers</SPAN> into <SPAN
class=703341815-29062005>the same </SPAN>address space.</SPAN></FONT>
<UL>
<OL>
<LI><FONT face=Arial size=2><SPAN class=934533914-27062005>A Provider
library loaded into an address space once</SPAN></FONT>
<LI><FONT face=Arial size=2><SPAN class=934533914-27062005>A Provider
library unloaded only when all open instances of its IAs are
closed</SPAN></FONT>
<LI><FONT face=Arial size=2><SPAN class=934533914-27062005>The same
Provider library can be loaded into multiple address
spaces</SPAN></FONT></LI></OL>
<LI><FONT face=Arial size=2><SPAN class=934533914-27062005>OpenIB uDAPL
continues to provide it</SPAN></FONT>
<LI><FONT face=Arial size=2><SPAN class=934533914-27062005>OpenIB kDAPL
supports it</SPAN></FONT></LI></UL>
<LI><FONT face=Arial size=2><SPAN class=934533914-27062005>DAT registry shall
support polymorphism (Provider independency)</SPAN></FONT> </LI>
<UL>
<OL>
<LI><FONT face=Arial size=2><SPAN class=934533914-27062005>Consumer call
DAT functions by the DAT handle independently from Provider is
used</SPAN></FONT>
<LI><FONT face=Arial size=2><SPAN class=934533914-27062005>DAT registry
provides redirection</SPAN></FONT>
<LI><FONT face=Arial size=2><SPAN class=934533914-27062005>dat_<SPAN
class=703341815-29062005>ia_</SPAN>open is Provider specific and sets up
redirection table per address space per Provider</SPAN></FONT></LI>
<UL>
<LI><FONT face=Arial size=2><SPAN class=934533914-27062005><SPAN
class=703341815-29062005>first time open ensures that table redirection
for a Provider is set up</SPAN></SPAN></FONT></LI></UL></OL>
<LI><FONT face=Arial size=2><SPAN class=934533914-27062005>OpenIB kDAT and
uDAT registry provide that</SPAN></FONT> </LI>
<UL>
<LI><FONT face=Arial size=2><SPAN class=934533914-27062005>OpenIB kDAT
registry preserves the DAT redirection table as defined by DAT
Collaborative</SPAN></FONT>
<LI><FONT face=Arial size=2><SPAN class=934533914-27062005>OpenIB kDAT
registry preserves DAT_provider structure </SPAN></FONT></LI>
<UL>
<LI><FONT face=Arial size=2><SPAN class=934533914-27062005><SPAN
class=703341815-29062005>need to file errata to DAT to move dat_ia_close
after dat_ia_query to match DAPL SF RI and OpenIB one for kDAPL and
uDAPL</SPAN></SPAN></FONT></LI></UL></UL></UL>
<LI><FONT face=Arial size=2><SPAN class=934533914-27062005>The DAT_handle
structure first field provides a pointer for redirection</SPAN></FONT> </LI>
<UL>
<LI><FONT face=Arial size=2><SPAN class=934533914-27062005>OpenIB kDAT and
uDAT reg<SPAN class=703341815-29062005>is</SPAN>try support
this</SPAN></FONT></LI>
<UL>
<LI><FONT face=Arial size=2><SPAN class=934533914-27062005><SPAN
class=703341815-29062005>DAT registry interpret the DAT_handle as a
pointer to redirection table</SPAN></SPAN></FONT></LI></UL></UL>
<LI><FONT face=Arial size=2><SPAN class=934533914-27062005>DAT registry
supports multiple dat_<SPAN class=703341815-29062005>ia_</SPAN>open for the
same library from the same and different address spaces</SPAN></FONT> </LI>
<UL>
<LI><FONT face=Arial size=2><SPAN class=934533914-27062005>OpenIB DAT
registry preserves that</SPAN></FONT>
<LI><FONT face=Arial size=2><SPAN class=934533914-27062005>OpenIB DAT
registry supports refcount so the library is not closed until the last
Consumer leaves and library is loaded into an address space
once.</SPAN></FONT></LI></UL></OL>
<DIV><FONT face=Arial size=2><SPAN class=934533914-27062005> So for
uDAT Consumer and uDAT Provider which are compliant with uDAT spec continue to
work as before<SPAN class=703341815-29062005> from DAPL SF
RI</SPAN>.</SPAN></FONT></DIV>
<DIV><FONT face=Arial size=2><SPAN
class=934533914-27062005></SPAN></FONT> </DIV>
<DIV><FONT face=Arial size=2><SPAN class=934533914-27062005>kDAT Consumer no
longer can choose Provider by DAT version # and thread safety. The Linux kernel
version defines which version of DAT and its thread safety. Since kernel ULP is
specific to the kernel <SPAN class=703341815-29062005>configuration</SPAN>
this is OK.</SPAN></FONT></DIV>
<DIV><FONT face=Arial size=2><SPAN class=934533914-27062005>If kernel <SPAN
class=703341815-29062005>module</SPAN> was choosing DAT Provider based on these
attributes it is no longer needed. The kernel <SPAN
class=703341815-29062005>module</SPAN> MUST match what kernel <SPAN
class=703341815-29062005>configuration, including version
number,</SPAN> provides. If kernel ULP behaves differently based on version
of DAT <SPAN class=703341815-29062005>API </SPAN>and <SPAN
class=703341815-29062005>Provider</SPAN> thread safety this switch will have to
be replaced by kernel <SPAN
class=703341815-29062005>configuration/version</SPAN> switch. This is "standard"
for kernel ULP<SPAN class=703341815-29062005>
modules</SPAN>.</SPAN></FONT></DIV>
<DIV><FONT face=Arial size=2><SPAN
class=934533914-27062005></SPAN></FONT> </DIV>
<DIV><FONT face=Arial size=2><SPAN class=934533914-27062005>kDAT Provider will
be effected. The <SPAN class=703341815-29062005>dat</SPAN>_info structure
is changed. It no longer has fields for DAT major and minor versions and no
field for thread safety. DAT Provider must match kernel <SPAN
class=703341815-29062005>configuration/</SPAN>version <SPAN
class=703341815-29062005>DAT API and </SPAN>thread-safety.</SPAN></FONT></DIV>
<DIV><FONT face=Arial size=2><SPAN
class=934533914-27062005></SPAN></FONT> </DIV>
<DIV><FONT face=Arial size=2><SPAN class=934533914-27062005>Others: kDAT
Providers will need to maintain a separate tree for Linux than for generic DAT
or DAT for other platforms with appropriate Linux kernel versioning<SPAN
class=703341815-29062005>/configuration</SPAN> support. For IB Providers it is
not needed since OpenIB kDAT provides that. For iWARP vendors if the<SPAN
class=703341815-29062005>y</SPAN> do not plug<SPAN
class=703341815-29062005>-</SPAN>in into gen2 as HW driver then <SPAN
class=703341815-29062005>they </SPAN>need to match the OpenIB/Linux kDAPL
version<SPAN class=703341815-29062005> DAT APIs and
threading</SPAN>.</SPAN></FONT></DIV>
<DIV><SPAN class=934533914-27062005><FONT face=Arial><FONT
size=2></FONT></FONT></SPAN> </DIV>
<DIV><SPAN class=934533914-27062005><FONT face=Arial><FONT size=2>DAT Provider
registration is different for uDAPL and kDAPL.<SPAN class=703341815-29062005>
This is true at DAPL SF RI. And it is still the case for
OpenIB.</SPAN></FONT></FONT></SPAN></DIV>
<DIV><SPAN class=934533914-27062005><FONT face=Arial><FONT size=2><SPAN
class=703341815-29062005></SPAN></FONT></FONT></SPAN> </DIV>
<DIV><SPAN class=934533914-27062005><FONT face=Arial><FONT size=2><SPAN
class=703341815-29062005>The biggest difference from DAT Spec Linux Registry
example and OpenIB kDAT registry is a uDAPL/KDAPL registry shared configuration
file that contains all available Providers information. But this is just an
example. How Registry keeps the Provider info is up to a platform. Consumer can
not rely on the back door access to the static DAT registry database. They
should use the dat_registry_list_providers to get that info. OpenIB kDAT
registry preserves that API with a format change for dat_info structure usable
by Consumers.</SPAN></FONT></FONT></SPAN></DIV>
<DIV><SPAN class=934533914-27062005><FONT face=Arial><FONT size=2><SPAN
class=703341815-29062005></SPAN></FONT></FONT></SPAN> </DIV>
<DIV><FONT face=Arial size=2><SPAN class=934533914-27062005>uDAT and
kDAT <SPAN class=703341815-29062005>Providers </SPAN>code sharing is
slightly diminished.</SPAN></FONT></DIV>
<DIV><FONT face=Arial size=2><SPAN
class=934533914-27062005></SPAN></FONT> </DIV>
<DIV><FONT face=Arial size=2><SPAN class=934533914-27062005><SPAN
class=703341815-29062005>In summary, kDAT registry in OpenIB fulfils all DAT
requirements.</SPAN></SPAN></FONT></DIV>
<DIV><FONT face=Arial size=2><SPAN class=934533914-27062005><SPAN
class=703341815-29062005>There is a small change in one of the structure which
impacts kDAPL Consumers but is consistent with the way Linux kernel ULP modules
operation. The biggest change for DAT Collaborative is that this body no longer
"the sole Provider of DAT Registry". I view that as good news since Linux
maintainers are much better source of kDAPL and uDAPL registry then DAT
Collaborative.</SPAN></SPAN></FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV><?xml:namespace prefix = o ns =
"urn:schemas-microsoft-com:office:office" /><o:SmartTagType
namespaceuri="urn:schemas-microsoft-com:office:smarttags"
name="Street"></o:SmartTagType><o:SmartTagType
namespaceuri="urn:schemas-microsoft-com:office:smarttags"
name="address"></o:SmartTagType>
<STYLE>st1\:* {
BEHAVIOR: url(#ieooui)
}
</STYLE>
<STYLE>@page Section1 {size: 8.5in 11.0in; margin: 1.0in 1.25in 1.0in 1.25in; mso-header-margin: .5in; mso-footer-margin: .5in; mso-paper-source: 0; }
P.MsoNormal {
FONT-SIZE: 12pt; MARGIN: 0in 0in 0pt; FONT-FAMILY: "Times New Roman"; mso-style-parent: ""; mso-pagination: widow-orphan; mso-fareast-font-family: "Times New Roman"
}
LI.MsoNormal {
FONT-SIZE: 12pt; MARGIN: 0in 0in 0pt; FONT-FAMILY: "Times New Roman"; mso-style-parent: ""; mso-pagination: widow-orphan; mso-fareast-font-family: "Times New Roman"
}
DIV.MsoNormal {
FONT-SIZE: 12pt; MARGIN: 0in 0in 0pt; FONT-FAMILY: "Times New Roman"; mso-style-parent: ""; mso-pagination: widow-orphan; mso-fareast-font-family: "Times New Roman"
}
A:link {
COLOR: blue; TEXT-DECORATION: underline; text-underline: single
}
SPAN.MsoHyperlink {
COLOR: blue; TEXT-DECORATION: underline; text-underline: single
}
A:visited {
COLOR: purple; TEXT-DECORATION: underline; text-underline: single
}
SPAN.MsoHyperlinkFollowed {
COLOR: purple; TEXT-DECORATION: underline; text-underline: single
}
SPAN.SpellE {
mso-style-name: ""; mso-spl-e: yes
}
DIV.Section1 {
page: Section1
}
</STYLE>
<DIV class=Section1>
<P class=MsoNormal align=left><SPAN
style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">Arkady <SPAN
class=SpellE>Kanevsky</SPAN><SPAN
style="mso-tab-count: 2">
</SPAN>email: <A
href="mailto:arkady@netapp.com">arkady@netapp.com</A><o:p></o:p></SPAN></P>
<P class=MsoNormal><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">Network
Appliance<SPAN
style="mso-tab-count: 2">
</SPAN>phone: 781-768-5395<o:p></o:p></SPAN></P>
<P class=MsoNormal><?xml:namespace prefix = st1 ns =
"urn:schemas-microsoft-com:office:smarttags" /><st1:Street><st1:address
style="BACKGROUND-POSITION: left bottom; BACKGROUND-IMAGE: url(res://ietag.dll/#34/#1001); BACKGROUND-REPEAT: repeat-x"><SPAN
style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">375 <SPAN class=SpellE>Totten</SPAN>
Pond Rd.</SPAN></st1:address></st1:Street><SPAN
style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"><SPAN
style="mso-tab-count: 2">
</SPAN>Fax: 781-895-1195<o:p></o:p></SPAN></P>
<P class=MsoNormal><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">Waltham, MA
02451-2010<SPAN
style="mso-tab-count: 1">
</SPAN>central phone: 781-768-5300<o:p></o:p></SPAN></P>
<P class=MsoNormal><o:p> </o:p></P></DIV>
<DIV> </DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV> </DIV><o:SmartTagType
namespaceuri="urn:schemas-microsoft-com:office:smarttags"
name="Street"></o:SmartTagType><o:SmartTagType
namespaceuri="urn:schemas-microsoft-com:office:smarttags"
name="address"></o:SmartTagType>
<OBJECT id=ieooui classid=clsid:38481807-CA0E-42D2-BF39-B33AF135CC4D></OBJECT>
<STYLE>st1\:* {
BEHAVIOR: url(#ieooui)
}
</STYLE>
<STYLE>@page Section1 {size: 8.5in 11.0in; margin: 1.0in 1.25in 1.0in 1.25in; mso-header-margin: .5in; mso-footer-margin: .5in; mso-paper-source: 0; }
P.MsoNormal {
FONT-SIZE: 12pt; MARGIN: 0in 0in 0pt; FONT-FAMILY: "Times New Roman"; mso-style-parent: ""; mso-pagination: widow-orphan; mso-fareast-font-family: "Times New Roman"
}
LI.MsoNormal {
FONT-SIZE: 12pt; MARGIN: 0in 0in 0pt; FONT-FAMILY: "Times New Roman"; mso-style-parent: ""; mso-pagination: widow-orphan; mso-fareast-font-family: "Times New Roman"
}
DIV.MsoNormal {
FONT-SIZE: 12pt; MARGIN: 0in 0in 0pt; FONT-FAMILY: "Times New Roman"; mso-style-parent: ""; mso-pagination: widow-orphan; mso-fareast-font-family: "Times New Roman"
}
A:link {
COLOR: blue; TEXT-DECORATION: underline; text-underline: single
}
SPAN.MsoHyperlink {
COLOR: blue; TEXT-DECORATION: underline; text-underline: single
}
A:visited {
COLOR: purple; TEXT-DECORATION: underline; text-underline: single
}
SPAN.MsoHyperlinkFollowed {
COLOR: purple; TEXT-DECORATION: underline; text-underline: single
}
SPAN.SpellE {
mso-style-name: ""; mso-spl-e: yes
}
DIV.Section1 {
page: Section1
}
</STYLE>
<DIV class=Section1>
<P class=MsoNormal align=left><SPAN
style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">Arkady <SPAN
class=SpellE>Kanevsky</SPAN><SPAN
style="mso-tab-count: 2">
</SPAN>email: <A
href="mailto:arkady@netapp.com">arkady@netapp.com</A><o:p></o:p></SPAN></P>
<P class=MsoNormal><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">Network
Appliance<SPAN
style="mso-tab-count: 2">
</SPAN>phone: 781-768-5395<o:p></o:p></SPAN></P>
<P class=MsoNormal><st1:Street><st1:address
style="BACKGROUND-POSITION: left bottom; BACKGROUND-IMAGE: url(res://ietag.dll/#34/#1001); BACKGROUND-REPEAT: repeat-x"><SPAN
style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">375 <SPAN class=SpellE>Totten</SPAN>
Pond Rd.</SPAN></st1:address></st1:Street><SPAN
style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"><SPAN
style="mso-tab-count: 2">
</SPAN>Fax: 781-895-1195<o:p></o:p></SPAN></P>
<P class=MsoNormal><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">Waltham, MA
02451-2010<SPAN
style="mso-tab-count: 1">
</SPAN>central phone: 781-768-5300<o:p></o:p></SPAN></P>
<P class=MsoNormal><o:p> </o:p></P></DIV>
<DIV> </DIV></BODY></HTML>