Subj : IORB_GEOMETRY, PDSK_GETPHYSDEVICEPARAMS and 32 bit sizes
To   : Vitus Jensen
From : David Noon
Date : Sun Nov 16 2003 07:49 pm

Hi Vitus,

Replying to a message of Vitus Jensen to All:

VJ> Looking at OS2DASD.DMD source this shouldn't be a problem but when
VJ> this information is passed to LVM I find only the IOCtl
VJ> PDSK_GETPHYSDEVICEPARAMS.  This IOCtl uses a 16 bit value for Number
VJ> of Cylinders...

That's correct. Remember that that particular IOCtl dates back to the days of
MS-OS/2, so it is wall-to-wall 16-bit, even though the underlying code is
nowadays 32-bit.

VJ> Is my analysis correct?  There is no other IOCtl, Cylinders have to be
VJ> less than 65536?

Look at the OEMHLP_QUERYDISKINFO IOCtl, documented in ADDENDUM.INF. This
allocates a DWORD for cylinder count in its data packet, thus allowing over 4
billion cylinders. Just be aware that the information for this query is cached
from a BIOS interrupt before the kernel switches to protected mode. This means
that you will need a fairly recent BIOS (and SCSI BIOS, if your array is on
SCSI disks) to allow the system to collect the data.

Regards

Dave
<Team PL/I>

--- FleetStreet 1.25.1
* Origin: My other computer is an IBM S/390 (2:257/609.5)