SCSI driver and SRB_INVALID_PATH_ID

Systems: 2 Dual CPUs, Win2k/Nt 4 Sp6, FibreChannel w/ISP2200

During system initialization, my SCSI miniport StartIo function is called
with a SCSI inquiry (CDB[0]=12). This is a fibrechannel card, and if the
remote adapter is in an indeterminate, or erroneous state, when I return
SRB_INVALID_PATH_ID from the DPC function, ScsiPort seems to hang.

Now, by indeterminate, I mean that the system was booted earlier and taken
all the way to login. The driver for the fibrechannel card (FC) loaded and
initialized the card successfully. The system was then re-booted to a system
that attempted to load the FC driver, but faulted on a bad parameter, and as
a consequence never initialized the FC. Since power was never dropped to the
system, the card never underwent a LIP (typical fibrechannel terminology (at
least here)).

When the SCSI initiator attempted to send an inquiry, the initiator’s FC
card reported an invalid port, or returned a SCSI error and sense data
indicating that the port was logged out, and the miniport returned
SRB_INVALID_PATH_ID to ScsiPort. The system either hung or was in the mother
of all timeouts.

The question is: What is the proper response to a logged out port?

Hi,

I don’t know for sure, you might want to try SRB_STATUS_SELECTION_TIMEOUT.
Almost every other error codes it seems are taken very seriously by the
SCSIPORT.

hope this helps

----- Original Message -----
From: “Gary Little”
To: “NT Developers Interest List”
Sent: Thursday, September 07, 2000 5:16 PM
Subject: [ntdev] SCSI driver and SRB_INVALID_PATH_ID

> Systems: 2 Dual CPUs, Win2k/Nt 4 Sp6, FibreChannel w/ISP2200
>
> During system initialization, my SCSI miniport StartIo function is called
> with a SCSI inquiry (CDB[0]=12). This is a fibrechannel card, and if the
> remote adapter is in an indeterminate, or erroneous state, when I return
> SRB_INVALID_PATH_ID from the DPC function, ScsiPort seems to hang.
>
> Now, by indeterminate, I mean that the system was booted earlier and taken
> all the way to login. The driver for the fibrechannel card (FC) loaded and
> initialized the card successfully. The system was then re-booted to a
system
> that attempted to load the FC driver, but faulted on a bad parameter, and
as
> a consequence never initialized the FC. Since power was never dropped to
the
> system, the card never underwent a LIP (typical fibrechannel terminology
(at
> least here)).
>
> When the SCSI initiator attempted to send an inquiry, the initiator’s FC
> card reported an invalid port, or returned a SCSI error and sense data
> indicating that the port was logged out, and the miniport returned
> SRB_INVALID_PATH_ID to ScsiPort. The system either hung or was in the
mother
> of all timeouts.
>
> The question is: What is the proper response to a logged out port?
>
>
>

I don’t know about returning an error code. You’ve got to complete the
SRB and tell SCSIPORT you’re ready to handle the next SRB for that HBA
and LUN. This takes several calls to ScsiPortNotification().

Who is sending the inquiry? Upon completion, the SRB status field
should be checked for the flag SRB_STATUS_QUEUE_FROZEN indicating the
LUN queue has been frozen by SCSIPORT. If it has, no subsequent SRBs
will be passed to the HBA (they will just pile up in the queue). In
that event, you’ve got to send down a SRB_FUNCTION_RELEASE_QUEUE
request.


Dave Cox
Hewlett-Packard Co.
HPSO/SSMO (Santa Barbara)
https://ecardfile.com/id/Dave+Cox

-----Original Message-----
From: Gary Little [mailto:xxxxx@delphieng.com]
Sent: Thursday, September 07, 2000 5:17 PM
To: NT Developers Interest List
Subject: SCSI driver and SRB_INVALID_PATH_ID

Systems: 2 Dual CPUs, Win2k/Nt 4 Sp6, FibreChannel w/ISP2200

During system initialization, my SCSI miniport StartIo function is called
with a SCSI inquiry (CDB[0]=12). This is a fibrechannel card, and if the
remote adapter is in an indeterminate, or erroneous state, when I return
SRB_INVALID_PATH_ID from the DPC function, ScsiPort seems to hang.

Now, by indeterminate, I mean that the system was booted earlier and taken
all the way to login. The driver for the fibrechannel card (FC) loaded and
initialized the card successfully. The system was then re-booted to a
system that attempted to load the FC driver, but faulted on a bad
parameter, and as a consequence never initialized the FC. Since power was
never dropped to the system, the card never underwent a LIP (typical
fibrechannel terminology (at least here)).

When the SCSI initiator attempted to send an inquiry, the initiator’s FC
card reported an invalid port, or returned a SCSI error and sense data
indicating that the port was logged out, and the miniport returned
SRB_INVALID_PATH_ID to ScsiPort. The system either hung or was in the
mother of all timeouts.

The question is: What is the proper response to a logged out port?

The target is the FC with the erroneous initialization, and obviously the
inquiry is coming from the initiator FC with a good initialization. Most
likely, through several resets and reboots of the system, though not power
cycled, the “bad system” is in a “the lights are on but no one’s home”
state.

Thanks Dave, that’s some good information.

Gary

-----Original Message-----
From: COX,DAVID (HP-Roseville,ex1)
[mailto:david_cox2@hp.com]
Sent: Thursday, September 07, 2000 5:38 PM
To: NT Developers Interest List
Subject: [ntdev] RE: SCSI driver and
SRB_INVALID_PATH_ID

I don’t know about returning an error code. You’ve got to
complete the
SRB and tell SCSIPORT you’re ready to handle the next SRB
for that HBA
and LUN. This takes several calls to
ScsiPortNotification().

Who is sending the inquiry? Upon completion, the SRB status
field
should be checked for the flag SRB_STATUS_QUEUE_FROZEN
indicating the
LUN queue has been frozen by SCSIPORT. If it has, no
subsequent SRBs
will be passed to the HBA (they will just pile up in the
queue). In
that event, you’ve got to send down a
SRB_FUNCTION_RELEASE_QUEUE
request.


Dave Cox
Hewlett-Packard Co.
HPSO/SSMO (Santa Barbara)
https://ecardfile.com/id/Dave+Cox

-----Original Message-----
> From: Gary Little [mailto:xxxxx@delphieng.com]
> Sent: Thursday, September 07, 2000 5:17 PM
> To: NT Developers Interest List
> Subject: SCSI driver and SRB_INVALID_PATH_ID
>
> Systems: 2 Dual CPUs, Win2k/Nt 4 Sp6, FibreChannel
w/ISP2200
>
> During system initialization, my SCSI miniport StartIo
function is called
> with a SCSI inquiry (CDB[0]=12). This is a fibrechannel
card, and if the
> remote adapter is in an indeterminate, or erroneous state,
when I return
> SRB_INVALID_PATH_ID from the DPC function, ScsiPort seems
to hang.
>
> Now, by indeterminate, I mean that the system was booted
earlier and taken
> all the way to login. The driver for the fibrechannel card
(FC) loaded and
> initialized the card successfully. The system was then
re-booted to a
> system that attempted to load the FC driver, but faulted
on a bad
> parameter, and as a consequence never initialized the FC.
Since power was
> never dropped to the system, the card never underwent a
LIP (typical
> fibrechannel terminology (at least here)).
>
> When the SCSI initiator attempted to send an inquiry, the
initiator’s FC
> card reported an invalid port, or returned a SCSI error
and sense data
> indicating that the port was logged out, and the miniport
returned
> SRB_INVALID_PATH_ID to ScsiPort. The system either hung or
was in the
> mother of all timeouts.
>
> The question is: What is the proper response to a logged
out port?
>
>


You are currently subscribed to ntdev as:
xxxxx@delphieng.com
To unsubscribe send a blank email to
$subst(‘Email.Unsub’)

Hmmmm, as I understand the driver stack/SCSI/SCSI miniport, I already am
“down”. Sending SRB_FUNCTION_RELEASE_QUEUE
“down” hangs it on our hardware API, which is meaningless. From a quick
perusal, this not something I would expect to see from ScsiPort in my
miniport.

Hmm. Is the initiator host the one that’s hanging? I assumed it was,
and I meant: which software in that host sent the inquiry SRB to your
miniport driver?


Dave Cox
Hewlett-Packard Co.
HPSO/SSMO (Santa Barbara)
https://ecardfile.com/id/Dave+Cox

-----Original Message-----
From: Gary Little [mailto:xxxxx@delphieng.com]
Sent: Thursday, September 07, 2000 5:53 PM
To: NT Developers Interest List
Subject: [ntdev] RE: SCSI driver and SRB_INVALID_PATH_ID

The target is the FC with the erroneous initialization, and obviously the
inquiry is coming from the initiator FC with a good initialization. Most
likely, through several resets and reboots of the system, though not power
cycled, the “bad system” is in a “the lights are on but no one’s home”
state.

Thanks Dave, that’s some good information.

Gary

-----Original Message-----
From: COX,DAVID (HP-Roseville,ex1)
[mailto:david_cox2@hp.com]
Sent: Thursday, September 07, 2000 5:38 PM
To: NT Developers Interest List
Subject: [ntdev] RE: SCSI driver and
SRB_INVALID_PATH_ID

I don’t know about returning an error code. You’ve got to
complete the
SRB and tell SCSIPORT you’re ready to handle the next SRB
for that HBA
and LUN. This takes several calls to
ScsiPortNotification().

Who is sending the inquiry? Upon completion, the SRB status
field
should be checked for the flag SRB_STATUS_QUEUE_FROZEN
indicating the
LUN queue has been frozen by SCSIPORT. If it has, no
subsequent SRBs
will be passed to the HBA (they will just pile up in the
queue). In
that event, you’ve got to send down a
SRB_FUNCTION_RELEASE_QUEUE
request.


Dave Cox
Hewlett-Packard Co.
HPSO/SSMO (Santa Barbara)
https://ecardfile.com/id/Dave+Cox

-----Original Message-----
> From: Gary Little [mailto:xxxxx@delphieng.com]
> Sent: Thursday, September 07, 2000 5:17 PM
> To: NT Developers Interest List
> Subject: SCSI driver and SRB_INVALID_PATH_ID
>
> Systems: 2 Dual CPUs, Win2k/Nt 4 Sp6, FibreChannel
w/ISP2200
>
> During system initialization, my SCSI miniport StartIo
function is called
> with a SCSI inquiry (CDB[0]=12). This is a fibrechannel
card, and if the
> remote adapter is in an indeterminate, or erroneous state,
when I return
> SRB_INVALID_PATH_ID from the DPC function, ScsiPort seems
to hang.
>
> Now, by indeterminate, I mean that the system was booted
earlier and taken
> all the way to login. The driver for the fibrechannel card
(FC) loaded and
> initialized the card successfully. The system was then
re-booted to a
> system that attempted to load the FC driver, but faulted
on a bad
> parameter, and as a consequence never initialized the FC.
Since power was
> never dropped to the system, the card never underwent a
LIP (typical
> fibrechannel terminology (at least here)).
>
> When the SCSI initiator attempted to send an inquiry, the
initiator’s FC
> card reported an invalid port, or returned a SCSI error
and sense data
> indicating that the port was logged out, and the miniport
returned
> SRB_INVALID_PATH_ID to ScsiPort. The system either hung or
was in the
> mother of all timeouts.
>
> The question is: What is the proper response to a logged
out port?
>
>


You are currently subscribed to ntdev as:
xxxxx@delphieng.com
To unsubscribe send a blank email to
$subst(‘Email.Unsub’)


You are currently subscribed to ntdev as: david_cox2@hp.com
To unsubscribe send a blank email to $subst(‘Email.Unsub’)

David,

Sorry about the tardiness of this message. I normally work at home on
Fridays and for some reason OSR ListServ will not accept messages from me at
home, even though I have signed up from that address. Oh well.

Yes, it is the initiator that stalls. As to who is originating the SRB, that
I can only assume. Since the system is in the process of initializing I can
only guess that it is the part of the file/disk management system that is
finding partitions, etc. etc. etc. At least this is what I see in the screen
information being dumped by the checked build Hal that I am using.

The proper solution was to apply a proper setup and initialization to the
target fiber channel card, or to fail installation if that cannot be done…
However, I need to be able to close this whole, since Murphy says more
customers than I want to count are going to fall into it. It may be that
completing the SRB with SRB_STATUS_SELECTION_TIMEOUT may be proper.

-----Original Message-----
From: COX,DAVID (HP-Roseville,ex1)
[mailto:david_cox2@hp.com]
Sent: Thursday, September 07, 2000 6:10 PM
To: NT Developers Interest List
Subject: [ntdev] RE: SCSI driver and
SRB_INVALID_PATH_ID

Hmm. Is the initiator host the one that’s hanging? I
assumed it was,
and I meant: which software in that host sent the inquiry
SRB to your
miniport driver?


Dave Cox
Hewlett-Packard Co.
HPSO/SSMO (Santa Barbara)
https://ecardfile.com/id/Dave+Cox

-----Original Message-----
From: Gary Little [mailto:xxxxx@delphieng.com]
Sent: Thursday, September 07, 2000 5:53 PM
To: NT Developers Interest List
Subject: [ntdev] RE: SCSI driver and SRB_INVALID_PATH_ID

The target is the FC with the erroneous initialization, and
obviously the
inquiry is coming from the initiator FC with a good
initialization. Most
likely, through several resets and reboots of the system,
though not power
cycled, the “bad system” is in a “the lights are on but no
one’s home”
state.

Thanks Dave, that’s some good information.

Gary

-----Original Message-----
From: COX,DAVID (HP-Roseville,ex1)
[mailto:david_cox2@hp.com]
Sent: Thursday, September 07, 2000 5:38 PM
To: NT Developers Interest List
Subject: [ntdev] RE: SCSI driver and
SRB_INVALID_PATH_ID

I don’t know about returning an error code.
You’ve got to
complete the
SRB and tell SCSIPORT you’re ready to handle
the next SRB
for that HBA
and LUN. This takes several calls to
ScsiPortNotification().

Who is sending the inquiry? Upon
completion, the SRB status
field
should be checked for the flag
SRB_STATUS_QUEUE_FROZEN
indicating the
LUN queue has been frozen by SCSIPORT. If
it has, no
subsequent SRBs
will be passed to the HBA (they will just
pile up in the
queue). In
that event, you’ve got to send down a
SRB_FUNCTION_RELEASE_QUEUE
request.


Dave Cox
Hewlett-Packard Co.
HPSO/SSMO (Santa Barbara)
https://ecardfile.com/id/Dave+Cox

-----Original Message-----
> From: Gary Little
[mailto:xxxxx@delphieng.com]
> Sent: Thursday, September 07, 2000 5:17 PM
> To: NT Developers Interest List
> Subject: SCSI driver and
SRB_INVALID_PATH_ID
>
> Systems: 2 Dual CPUs, Win2k/Nt 4 Sp6,
FibreChannel
w/ISP2200
>
> During system initialization, my SCSI
miniport StartIo
function is called
> with a SCSI inquiry (CDB[0]=12). This is a
fibrechannel
card, and if the
> remote adapter is in an indeterminate, or
erroneous state,
when I return
> SRB_INVALID_PATH_ID from the DPC function,
ScsiPort seems
to hang.
>
> Now, by indeterminate, I mean that the
system was booted
earlier and taken
> all the way to login. The driver for the
fibrechannel card
(FC) loaded and
> initialized the card successfully. The
system was then
re-booted to a
> system that attempted to load the FC
driver, but faulted
on a bad
> parameter, and as a consequence never
initialized the FC.
Since power was
> never dropped to the system, the card
never underwent a
LIP (typical
> fibrechannel terminology (at least here)).
>
> When the SCSI initiator attempted to send
an inquiry, the
initiator’s FC
> card reported an invalid port, or returned
a SCSI error
and sense data
> indicating that the port was logged out,
and the miniport
returned
> SRB_INVALID_PATH_ID to ScsiPort. The
system either hung or
was in the
> mother of all timeouts.
>
> The question is: What is the proper
response to a logged
out port?
>
>


You are currently subscribed to ntdev as:
xxxxx@delphieng.com
To unsubscribe send a blank email to
$subst(‘Email.Unsub’)


You are currently subscribed to ntdev as: david_cox2@hp.com
To unsubscribe send a blank email to
$subst(‘Email.Unsub’)


You are currently subscribed to ntdev as:
xxxxx@delphieng.com
To unsubscribe send a blank email to
$subst(‘Email.Unsub’)

> It may be that completing the SRB with SRB_STATUS_SELECTION_TIMEOUT

may be proper.

Couldn’t hurt to try. We have a driver for the ISP2x00, and it
completes SRBs with SELECTION_TIMEOUT when a device has gone ‘missing’
(we have lost our login to it). This is what SCSIPORT seems to expect
when inquiring non-existent targets during its initial scan for devices.

I guess it would be misleading to return INVALID_PATH_ID when you’ve
told SCSIPORT you have a number of busses and its inquiry SRB has a
PathId within that range.


Dave Cox
Hewlett-Packard Co.
HPSO/SSMO (Santa Barbara)
https://ecardfile.com/id/Dave+Cox

-----Original Message-----
From: Gary Little [mailto:xxxxx@delphieng.com]
Sent: Monday, September 11, 2000 8:56 AM
To: NT Developers Interest List
Subject: [ntdev] RE: SCSI driver and SRB_INVALID_PATH_ID

David,

Sorry about the tardiness of this message. I normally work at home on
Fridays and for some reason OSR ListServ will not accept messages from me at
home, even though I have signed up from that address. Oh well.

Yes, it is the initiator that stalls. As to who is originating the SRB, that
I can only assume. Since the system is in the process of initializing I can
only guess that it is the part of the file/disk management system that is
finding partitions, etc. etc. etc. At least this is what I see in the screen
information being dumped by the checked build Hal that I am using.

The proper solution was to apply a proper setup and initialization to the
target fiber channel card, or to fail installation if that cannot be done…
However, I need to be able to close this whole, since Murphy says more
customers than I want to count are going to fall into it. It may be that
completing the SRB with SRB_STATUS_SELECTION_TIMEOUT may be proper.

-----Original Message-----
From: COX,DAVID (HP-Roseville,ex1)
[mailto:david_cox2@hp.com]
Sent: Thursday, September 07, 2000 6:10 PM
To: NT Developers Interest List
Subject: [ntdev] RE: SCSI driver and
SRB_INVALID_PATH_ID

Hmm. Is the initiator host the one that’s hanging? I
assumed it was,
and I meant: which software in that host sent the inquiry
SRB to your
miniport driver?


Dave Cox
Hewlett-Packard Co.
HPSO/SSMO (Santa Barbara)
https://ecardfile.com/id/Dave+Cox

-----Original Message-----
From: Gary Little [mailto:xxxxx@delphieng.com]
Sent: Thursday, September 07, 2000 5:53 PM
To: NT Developers Interest List
Subject: [ntdev] RE: SCSI driver and SRB_INVALID_PATH_ID

The target is the FC with the erroneous initialization, and
obviously the
inquiry is coming from the initiator FC with a good
initialization. Most
likely, through several resets and reboots of the system,
though not power
cycled, the “bad system” is in a “the lights are on but no
one’s home”
state.

Thanks Dave, that’s some good information.

Gary

-----Original Message-----
From: COX,DAVID (HP-Roseville,ex1)
[mailto:david_cox2@hp.com]
Sent: Thursday, September 07, 2000 5:38 PM
To: NT Developers Interest List
Subject: [ntdev] RE: SCSI driver and
SRB_INVALID_PATH_ID

I don’t know about returning an error code.
You’ve got to
complete the
SRB and tell SCSIPORT you’re ready to handle
the next SRB
for that HBA
and LUN. This takes several calls to
ScsiPortNotification().

Who is sending the inquiry? Upon
completion, the SRB status
field
should be checked for the flag
SRB_STATUS_QUEUE_FROZEN
indicating the
LUN queue has been frozen by SCSIPORT. If
it has, no
subsequent SRBs
will be passed to the HBA (they will just
pile up in the
queue). In
that event, you’ve got to send down a
SRB_FUNCTION_RELEASE_QUEUE
request.


Dave Cox
Hewlett-Packard Co.
HPSO/SSMO (Santa Barbara)
https://ecardfile.com/id/Dave+Cox

-----Original Message-----
> From: Gary Little
[mailto:xxxxx@delphieng.com]
> Sent: Thursday, September 07, 2000 5:17 PM
> To: NT Developers Interest List
> Subject: SCSI driver and
SRB_INVALID_PATH_ID
>
> Systems: 2 Dual CPUs, Win2k/Nt 4 Sp6,
FibreChannel
w/ISP2200
>
> During system initialization, my SCSI
miniport StartIo
function is called
> with a SCSI inquiry (CDB[0]=12). This is a
fibrechannel
card, and if the
> remote adapter is in an indeterminate, or
erroneous state,
when I return
> SRB_INVALID_PATH_ID from the DPC function,
ScsiPort seems
to hang.
>
> Now, by indeterminate, I mean that the
system was booted
earlier and taken
> all the way to login. The driver for the
fibrechannel card
(FC) loaded and
> initialized the card successfully. The
system was then
re-booted to a
> system that attempted to load the FC
driver, but faulted
on a bad
> parameter, and as a consequence never
initialized the FC.
Since power was
> never dropped to the system, the card
never underwent a
LIP (typical
> fibrechannel terminology (at least here)).
>
> When the SCSI initiator attempted to send
an inquiry, the
initiator’s FC
> card reported an invalid port, or returned
a SCSI error
and sense data
> indicating that the port was logged out,
and the miniport
returned
> SRB_INVALID_PATH_ID to ScsiPort. The
system either hung or
was in the
> mother of all timeouts.
>
> The question is: What is the proper
response to a logged
out port?
>
>


You are currently subscribed to ntdev as:
xxxxx@delphieng.com
To unsubscribe send a blank email to
$subst(‘Email.Unsub’)


You are currently subscribed to ntdev as: david_cox2@hp.com
To unsubscribe send a blank email to
$subst(‘Email.Unsub’)


You are currently subscribed to ntdev as:
xxxxx@delphieng.com
To unsubscribe send a blank email to
$subst(‘Email.Unsub’)


You are currently subscribed to ntdev as: david_cox2@hp.com
To unsubscribe send a blank email to $subst(‘Email.Unsub’)

It appears so. I’ve made the code changes to allow completing the SRB for a
“The Lights are on but no one’s home” scenario. Now I gotta go “break” the
target’s fibrechannel installation to see if that will solve the problem.

However, I still wonder why the system stalled. Maybe it was in the mother
of all timeout loops.

Thanks for the assist.

Gary