X-MimeOLE: Produced By Microsoft Exchange V6.5
Received: by onstor-exch02.onstor.net 
	id <01C88024.E6F9CD8A@onstor-exch02.onstor.net>; Fri, 7 Mar 2008 00:28:56 -0700
MIME-Version: 1.0
Content-Type: multipart/alternative;
	boundary="----_=_NextPart_001_01C88024.E6F9CD8A"
Content-class: urn:content-classes:message
Subject: LUN label problem identified
Date: Fri, 7 Mar 2008 00:29:00 -0700
Message-ID: <BB375AF679D4A34E9CA8DFA650E2B04E08C0EFC4@onstor-exch02.onstor.net>
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
Thread-Topic: LUN label problem identified
Thread-Index: AciAJOnLDZ0mK19wStmb5caj6FcgLg==
From: "Jonathan Goldick" <jonathan.goldick@onstor.com>
To: "dl-Cougar" <dl-Cougar@onstor.com>

This is a multi-part message in MIME format.

------_=_NextPart_001_01C88024.E6F9CD8A
Content-Type: text/plain;
	charset="us-ascii"
Content-Transfer-Encoding: quoted-printable

I have a fix but it depends on my new, and as yet not checked in, work
to support I/O chains for disk devices.  Here's the problem:

1.	evm_cfgd uses a larger size when writing labels than it did
previously.  This is no doubt from the label 5 work, even when the label
type is 4.  Specifically, the size is now 2KB.
2.	evm_cfgd sends a request to write the label to sdm_cfgd, say in
response to 'lun label LUN_NAME -r raid-5 -c g65r -f'   this payload is
2KB.
3.	sdm_cfgd tries to split the write into chunks of size
MAX_PACKET_DATA (1KB)
a.	The first bug here is that the sdm_i_msg->blkOffset and
scsi_o_msg->blkCnt fields need to be set inside the loop but are set to
the total 2KB size, instead of the 1KB fragment size.
4.	Even if bug 3a were fixed, the sm-scsi code in
scsi_procWriteReqLL() does not have support for reassembling chains for
anything other than TAPE devices.  This support is what I have been
implementing for the last month and have working in the fb-jong-perf2
branch.

Given the above, the most expedient solution is to ensure that evm_cfgd
does not try to write a payload larger than 1KB until we are ready to
integrate fb-jong-perf2 into dev.



------_=_NextPart_001_01C88024.E6F9CD8A
Content-Type: text/html;
	charset="us-ascii"
Content-Transfer-Encoding: quoted-printable

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<META HTTP-EQUIV=3D"Content-Type" CONTENT=3D"text/html; =
charset=3Dus-ascii">
<META NAME=3D"Generator" CONTENT=3D"MS Exchange Server version =
6.5.7653.38">
<TITLE>LUN label problem identified</TITLE>
</HEAD>
<BODY>
<!-- Converted from text/rtf format -->

<P DIR=3DLTR><SPAN LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"><FONT =
SIZE=3D2 FACE=3D"Arial">I have</FONT><FONT SIZE=3D2 FACE=3D"Arial"> a =
fix but it depends on my new, and as yet not checked in, work to support =
I/O chains for disk devices.&nbsp;</FONT> <FONT SIZE=3D2 =
FACE=3D"Arial">H</FONT><FONT SIZE=3D2 =
FACE=3D"Arial">ere</FONT></SPAN><SPAN LANG=3D"en-us"></SPAN><SPAN =
LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Arial">&#8217;</FONT></SPAN><SPAN =
LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">s the problem:</FONT></SPAN><SPAN =
LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"></SPAN><SPAN =
LANG=3D"en-us"></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">1.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT></SPAN><SPAN =
LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"> =
<FONT SIZE=3D2 FACE=3D"Arial">evm_cfgd uses a larger size when writing =
labels than it did previously.&nbsp; This is no doubt from the label 5 =
work, even when the label type is 4.&nbsp; Specifically, the size is now =
2KB.</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">2.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT> <FONT SIZE=3D2 =
FACE=3D"Arial">evm_cfgd sends a request to write the =
label</FONT></SPAN><SPAN LANG=3D"en-us"></SPAN><SPAN =
LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Arial"> to =
sdm_cfgd</FONT></SPAN><SPAN LANG=3D"en-us"></SPAN><SPAN =
LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Arial">, say in response =
to</FONT></SPAN><SPAN LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"> <FONT =
SIZE=3D2 FACE=3D"Arial">&#8216;</FONT></SPAN><SPAN =
LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">lun label LUN</FONT><FONT SIZE=3D2 =
FACE=3D"Arial">_</FONT><FONT SIZE=3D2 FACE=3D"Arial">NAME</FONT><FONT =
SIZE=3D2 FACE=3D"Arial"></FONT></SPAN><SPAN LANG=3D"en-us"></SPAN><SPAN =
LANG=3D"en-us"> <FONT SIZE=3D2 FACE=3D"Arial">&#8211;</FONT></SPAN><SPAN =
LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">r</FONT> <FONT SIZE=3D2 =
FACE=3D"Arial">raid-5</FONT></SPAN><SPAN LANG=3D"en-us"></SPAN><SPAN =
LANG=3D"en-us"> <FONT SIZE=3D2 FACE=3D"Arial">&#8211;</FONT></SPAN><SPAN =
LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">c</FONT> <FONT SIZE=3D2 =
FACE=3D"Arial">g65r</FONT></SPAN><SPAN LANG=3D"en-us"></SPAN><SPAN =
LANG=3D"en-us"> <FONT SIZE=3D2 FACE=3D"Arial">&#8211;</FONT></SPAN><SPAN =
LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">f</FONT></SPAN><SPAN LANG=3D"en-us"></SPAN><SPAN =
LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Arial">&#8217;</FONT></SPAN><SPAN =
LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">&nbsp;&nbsp; this payload is 2KB.</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">3.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT></SPAN><SPAN =
LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"> <FONT SIZE=3D2 =
FACE=3D"Arial">sdm_cfgd</FONT></SPAN><SPAN LANG=3D"en-us"></SPAN><SPAN =
LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Arial"> tries to split the write =
into chunks of size</FONT></SPAN><SPAN LANG=3D"en-us"></SPAN><SPAN =
LANG=3D"en-us"> <FONT SIZE=3D2 FACE=3D"Arial">MAX</FONT><FONT SIZE=3D2 =
FACE=3D"Arial">_</FONT><FONT SIZE=3D2 FACE=3D"Arial">PACKET</FONT><FONT =
SIZE=3D2 FACE=3D"Arial">_</FONT><FONT SIZE=3D2 =
FACE=3D"Arial">DATA</FONT></SPAN><SPAN LANG=3D"en-us"></SPAN><SPAN =
LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Arial"> (1KB)</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">a.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT></SPAN><SPAN =
LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"> <FONT SIZE=3D2 =
FACE=3D"Arial">The first bug here is that the</FONT></SPAN><SPAN =
LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"> <FONT SIZE=3D2 =
FACE=3D"Arial">sdm</FONT><FONT SIZE=3D2 FACE=3D"Arial">_</FONT><FONT =
SIZE=3D2 FACE=3D"Arial">i</FONT><FONT SIZE=3D2 =
FACE=3D"Arial">_</FONT><FONT SIZE=3D2 FACE=3D"Arial">msg</FONT><FONT =
SIZE=3D2 FACE=3D"Arial">-</FONT><FONT SIZE=3D2 =
FACE=3D"Arial">&gt;</FONT><FONT SIZE=3D2 =
FACE=3D"Arial">blkOffset</FONT></SPAN><SPAN LANG=3D"en-us"></SPAN><SPAN =
LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Arial"> and</FONT></SPAN><SPAN =
LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"> <FONT SIZE=3D2 =
FACE=3D"Arial">scsi</FONT><FONT SIZE=3D2 FACE=3D"Arial">_</FONT><FONT =
SIZE=3D2 FACE=3D"Arial">o</FONT><FONT SIZE=3D2 =
FACE=3D"Arial">_</FONT><FONT SIZE=3D2 FACE=3D"Arial">msg</FONT><FONT =
SIZE=3D2 FACE=3D"Arial">-</FONT><FONT SIZE=3D2 =
FACE=3D"Arial">&gt;</FONT><FONT SIZE=3D2 =
FACE=3D"Arial">blkCnt</FONT></SPAN><SPAN LANG=3D"en-us"></SPAN><SPAN =
LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Arial"> fields need to be set =
inside the loop but are set to the total 2KB size, instead of the 1KB =
fragment size.</FONT></SPAN><SPAN LANG=3D"en-us"></SPAN><SPAN =
LANG=3D"en-us"></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">4.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT></SPAN><SPAN =
LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"> <FONT SIZE=3D2 =
FACE=3D"Arial">Even if bug 3a were fixed, the sm-scsi code =
in</FONT></SPAN><SPAN LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"> <FONT =
SIZE=3D2 FACE=3D"Arial">scsi</FONT><FONT SIZE=3D2 =
FACE=3D"Arial">_</FONT><FONT SIZE=3D2 =
FACE=3D"Arial">procWriteReqLL</FONT></SPAN><SPAN =
LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">() does not have support for reassembling chains for =
anything other than TAPE devices</FONT><FONT SIZE=3D2 =
FACE=3D"Arial">.&nbsp; This suppor</FONT><FONT SIZE=3D2 FACE=3D"Arial">t =
is what I have been implementing for the last month and have working in =
the fb-jong-perf2 branch.</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"></SPAN><SPAN =
LANG=3D"en-us"></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Arial">Given =
the above, the most expedient solution is to ensure that evm_cfgd does =
not try to write a payload larger than 1KB until</FONT> <FONT SIZE=3D2 =
FACE=3D"Arial">we are ready to integrate fb-jong-perf2 into =
dev.</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"></SPAN><SPAN =
LANG=3D"en-us"></SPAN></P>

</BODY>
</HTML>
------_=_NextPart_001_01C88024.E6F9CD8A--
