Hi Experts,
I am looking in to an iscsi lun discovery issue on windows server 2008 R2.
I am using micosoft MPIO framework and MSDSM software. One of micosoft MPIO API DsmGetAssociatedDevice() is failing to return me the PDO’s associated with port FDO. I generated a memory dump and tried to analyse the device tree and found following.
When i execute drvobj on iscsi port driver i get following
STEP 1
0: kd> !drvobj iScsiPrt
Driver object (fffffa806e295be0) is for:
\Driver\iScsiPrt
Driver Extension List: (id , addr)
(fffff88000d4c090 fffffa806e2d7810)
Device Object list:
fffffa808d59f8c0 fffffa808d5909c0 fffffa805928d9c0 fffffa808d0bb8b0 fffffa806e2e5060
fffffa806e2e5060 is a port PDO which is returned by MS MPIO framework during device discovery and is input to the MS MPIO API DsmGetAssociatedDevice() .
STEP 2
0: kd> !devobj fffffa806e2e5060
Device object (fffffa806e2e5060) is for:
RaidPort5 \Driver\iScsiPrt DriverObject fffffa806e295be0
Current Irp 00000000 RefCount 0 Type 00000004 Flags 00000050
Dacl fffff9a1000cac71 DevExt fffffa806e2e51b0 DevObjExt fffffa806e2e5b40
ExtensionFlags (0000000000)
AttachedTo (Lower) fffffa80310a54d0 \Driver\PnpManager
Device queue is not busy.
This does not give me DevNode object and i want to know how to enumerate the children associated with device object fffffa806e2e5060
However if i run same command on other device objects from step 1,we get devNode
STEP 3
0: kd> !devobj fffffa808d59f8c0
Device object (fffffa808d59f8c0) is for:
00000199 \Driver\iScsiPrt DriverObject fffffa806e295be0
Current Irp 00000000 RefCount 0 Type 00000007 Flags 00001050
Dacl fffff9a1004db700 DevExt fffffa808d59fa10 DevObjExt fffffa808d59fe90 DevNode fffffa808d6519e0
ExtensionFlags (0x00000800)
Unknown flags 0x00000800
AttachedDevice (Upper) fffffa808d5ad9d0 \Driver\Disk
Device queue is not busy.
However devNode is listed for this device.
I have following queries
- How i can list the childrens associated with port PDO fffffa806e2e5060
- When i ran !devnode 0 1 i got following output , Please note fffffa806e2e5060 PDO is not listed in below output . However it was listed by WinDBG in step 1. Why it is not listed when we executed !devNode 0 1
DevNode 0xfffffa80310a5200 for PDO 0xfffffa80310a54d0
InstancePath is “Root\ISCSIPRT\0000”
ServiceName is “iScsiPrt”
State = DeviceNodeStarted (0x308)
Previous State = DeviceNodeEnumerateCompletion (0x30d)
DevNode 0xfffffa808d581d90 for PDO 0xfffffa808d0bb8b0
InstancePath is “SCSI\Disk&Ven_HP&Prod_HSV360\1&1c121344&0&000827”
ServiceName is “disk”
State = DeviceNodeQueryRemoved (0x310)
Previous State = DeviceNodeStarted (0x308)
DevNode 0xfffffa808d582d90 for PDO 0xfffffa805928d9c0
InstancePath is “SCSI\Disk&Ven_HP&Prod_HSV360\1&1c121344&0&000927”
ServiceName is “disk”
State = DeviceNodeStarted (0x308)
Previous State = DeviceNodeEnumerateCompletion (0x30d)
DevNode 0xfffffa808d6578a0 for PDO 0xfffffa808d5909c0
InstancePath is “SCSI\Disk&Ven_HP&Prod_HSV360\1&1c121344&0&000027”
ServiceName is “disk”
State = DeviceNodeStarted (0x308)
Previous State = DeviceNodeEnumerateCompletion (0x30d)
DevNode 0xfffffa808d6519e0 for PDO 0xfffffa808d59f8c0
InstancePath is “SCSI\Disk&Ven_HP&Prod_HSV360\1&1c121344&0&000127”
ServiceName is “disk”
State = DeviceNodeStarted (0x308)
Previous State = DeviceNodeEnumerateCompletion (0x30d)
thanks for your time and consideration.
Thanks,
Rajesh