<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=us-ascii">
<META NAME="Generator" CONTENT="MS Exchange Server version 6.5.7653.38">
<TITLE>Rdac checker in device unmap/remove situation</TITLE>
</HEAD>
<BODY>
<!-- Converted from text/rtf format -->
<BR>
<P><FONT SIZE=2 FACE="Arial">In a test with device unmapping/deletion for rdac device handler, a problems comes up with rdac checker improperly marking all device path as active state after device is unmapped from the host.</FONT></P>
<P><FONT SIZE=2 FACE="Arial">If a device is unmapped from a storage array to a host, peripheral qualifier files in the standard inquiry indicates no connected logical unit, although command can go through with success status.</FONT></P>
<P><FONT SIZE=2 FACE="Arial">TUR command would fail with sense code 0x59100, sense key: illegal request, additional sense: logical unit not supported.<BR>
</FONT>
<BR><FONT SIZE=2 FACE="Arial">VPD inquiry such as volume access control inquiry can succeed also, but it has a peripheral qualifier field to indicate the device is not there. </FONT></P>
<P><FONT SIZE=2 FACE="Arial">RDAC checker uses VPD page 0xC9, however it only checks the return status, which is good even after device is unmapped. That results in RDAC checker restoring the paths to good state even after device is unmapped.</FONT></P>
<P><FONT SIZE=2 FACE="Arial">So, after a device is unmapped, >> mode select queue to fail over to the other controller >> mode select command failed with 0x59100 >> rdac checker restored the path>> mode select tried again.</FONT></P>
<P><FONT SIZE=2 FACE="Arial">All the paths for the unmapped device are shown as "active" instead of "failed".</FONT>
</P>
<P><FONT SIZE=2 FACE="Arial">We should add a simple check for peripheral qualifier in 0xC9 inquiry after inquiry result comes back, to determine is the logical unit is not connected anymore. If the device is either unmapped or deleted, we can trigger sysfs to remove the device. Or at least, we can mark all paths as failed or offlined. The changes would be like</FONT></P>
<P><FONT SIZE=2 FACE="Arial">If (peripheral qualifier != device not connected && inquiry succeeds)</FONT>
<BR><FONT SIZE=2 FACE="Arial"> report path up</FONT>
<BR><FONT SIZE=2 FACE="Arial">else</FONT>
<BR><FONT SIZE=2 FACE="Arial"> report path down</FONT>
<BR><FONT SIZE=2 FACE="Arial">end if</FONT>
</P>
<BR>
<P><FONT SIZE=2 FACE="Arial">Thanks,</FONT>
<BR><FONT SIZE=2 FACE="Arial">Yanqing</FONT>
</P>
</BODY>
</HTML>