Read_Capacity16 in Scsi Miniport Driver.

Hi Everyone,
I am running in a problem where the windows
does not recognize disk arrays of more than 2.4 TB. I
Isolated the problem to a command that was not
supported in my miniport driver. I think that for this
size array the miniport needs to support
READ_CAPACITY16 command.

My Question is:

  1. How does PORT driver know that it has to fire
    read_capacity_16 command ?
  2. For this size array do we need to fail the
    Read_capacity command and then PORT driver will then
    fire READ_CAPACITY16 command?

Any help is appriciated.

  • Thanks,
    Ajitabh.

Do You Yahoo!?
Tired of spam? Yahoo! Mail has the best spam protection around
http://mail.yahoo.com

Don’t fail the request. You’ll have to return LBA 0xffffffff in
READ_CAPACITY10. Then READ_CAPACITY16 is going to arrive. :wink:

best regards,
Lu Lin
TTC senior engineer
http://ttcone.com
Inside Programming
http://lu0.126.com
----- Original Message -----
From: “Driver Coder”
To: “Windows System Software Devs Interest List”
Sent: Thursday, December 15, 2005 2:08 AM
Subject: [ntdev] Read_Capacity16 in Scsi Miniport Driver.

> Hi Everyone,
> I am running in a problem where the windows
> does not recognize disk arrays of more than 2.4 TB. I
> Isolated the problem to a command that was not
> supported in my miniport driver. I think that for this
> size array the miniport needs to support
> READ_CAPACITY16 command.
>
> My Question is:
> 1. How does PORT driver know that it has to fire
> read_capacity_16 command ?
> 2. For this size array do we need to fail the
> Read_capacity command and then PORT driver will then
> fire READ_CAPACITY16 command?
>
> Any help is appriciated.
> - Thanks,
> Ajitabh.
>
>
>
> __________________________________________________
> Do You Yahoo!?
> Tired of spam? Yahoo! Mail has the best spam protection around
> http://mail.yahoo.com
>
>
> —
> Questions? First check the Kernel Driver FAQ at
> http://www.osronline.com/article.cfm?id=256
>
> You are currently subscribed to ntdev as: lulinsha@163.com
> To unsubscribe send a blank email to xxxxx@lists.osr.com
>

There is a more fundamental issue: Windows XP earlier OS versions only
supports SRBs with a 32-bit LBA, so you inherently get limited to 2TB
for a 512 byte sector size.

-----Original Message-----
From: xxxxx@lists.osr.com
[mailto:xxxxx@lists.osr.com] On Behalf Of Driver Coder
Sent: Wednesday, December 14, 2005 10:09 AM
To: Windows System Software Devs Interest List
Subject: [ntdev] Read_Capacity16 in Scsi Miniport Driver.

Hi Everyone,
I am running in a problem where the windows
does not recognize disk arrays of more than 2.4 TB. I
Isolated the problem to a command that was not
supported in my miniport driver. I think that for this
size array the miniport needs to support
READ_CAPACITY16 command.

My Question is:

  1. How does PORT driver know that it has to fire
    read_capacity_16 command ?
  2. For this size array do we need to fail the
    Read_capacity command and then PORT driver will then
    fire READ_CAPACITY16 command?

Any help is appriciated.

  • Thanks,
    Ajitabh.

Do You Yahoo!?
Tired of spam? Yahoo! Mail has the best spam protection around
http://mail.yahoo.com


Questions? First check the Kernel Driver FAQ at
http://www.osronline.com/article.cfm?id=256

You are currently subscribed to ntdev as: xxxxx@intel.com
To unsubscribe send a blank email to xxxxx@lists.osr.com

There are a bunch of issues including requiring GPT. These have all been
addressed in Server 2003 SP1 for all platforms (and XP x64 which is
built from this code base). Start here

http://www.microsoft.com/whdc/device/storage/LUN_SP1.mspx

You will also need make sure the miniport doesn’t prevent 16-byte CDBs
from going to the devices (some SCSI HBAs don’t support them).

To answer your two questions which are really just one:

READ CAPACITY: During disk initialization time, the disk class driver
will send a READ CAPACITY (10) to query for the capacity of the device.
If this command returns 0xFFFFFFFF as the RETURNED LOGICAL BLOCK ADDRESS
a READ CAPACITY (16) command will be sent to get the full disk capacity.
If this succeeds, the device will be marked as a 16-byte CDB capable
device. Otherwise, it will not be used.

This behavior is all documented in SBC-2 (See www.t10.org). Don’t fail
the READ CAPACITY (10) or your disk won’t be usable. Port driver doesn’t
get involved in any of this.

-----Original Message-----
From: Eschmann, Michael K [mailto:xxxxx@intel.com]
Sent: Wednesday, December 14, 2005 6:04 PM
Subject: RE: Read_Capacity16 in Scsi Miniport Driver.

There is a more fundamental issue: Windows XP earlier OS versions only
supports SRBs with a 32-bit LBA, so you inherently get limited to 2TB
for a 512 byte sector size.

-----Original Message-----
From: xxxxx@lists.osr.com
[mailto:xxxxx@lists.osr.com] On Behalf Of Driver Coder
Sent: Wednesday, December 14, 2005 10:09 AM
To: Windows System Software Devs Interest List
Subject: [ntdev] Read_Capacity16 in Scsi Miniport Driver.

Hi Everyone,
I am running in a problem where the windows does not recognize
disk arrays of more than 2.4 TB. I Isolated the problem to a command
that was not supported in my miniport driver. I think that for this size
array the miniport needs to support
READ_CAPACITY16 command.

My Question is:

  1. How does PORT driver know that it has to fire
    read_capacity_16 command ?
  2. For this size array do we need to fail the Read_capacity command and
    then PORT driver will then fire READ_CAPACITY16 command?

Any help is appriciated.

  • Thanks,
    Ajitabh.

Do You Yahoo!?
Tired of spam? Yahoo! Mail has the best spam protection around
http://mail.yahoo.com


Questions? First check the Kernel Driver FAQ at
http://www.osronline.com/article.cfm?id=256

You are currently subscribed to ntdev as: xxxxx@intel.com
To unsubscribe send a blank email to xxxxx@lists.osr.com

sr.com

The SBC2 command specifications are very clear about when a host may
safely send READ_CAPACITY16 to a device. For a READ_CAPACITY10 command,
you must report your capacity as the lower of “the LBA of the last
logical block on the block device and FFFFFFFFh”. It is then the host’s
responsibility to detect this condition and send a READ_CAPACITY16.

This allows backwards-compatibility with legacy hosts (which will only
“see” FFFFFFFFh sectors on the disk), and new hosts (which will detect
the full size).

Hth,
.

-----Original Message-----
From: Driver Coder [mailto:xxxxx@yahoo.com]
Sent: Wednesday, December 14, 2005 10:09 AM
Subject: Read_Capacity16 in Scsi Miniport Driver.

Hi Everyone,
I am running in a problem where the windows
does not recognize disk arrays of more than 2.4 TB. I
Isolated the problem to a command that was not
supported in my miniport driver. I think that for this
size array the miniport needs to support
READ_CAPACITY16 command.

My Question is:

  1. How does PORT driver know that it has to fire
    read_capacity_16 command ?
  2. For this size array do we need to fail the
    Read_capacity command and then PORT driver will then
    fire READ_CAPACITY16 command?

Any help is appriciated.

  • Thanks,
    Ajitabh.

Do You Yahoo!?
Tired of spam? Yahoo! Mail has the best spam protection around
http://mail.yahoo.com