January 13th, 2001 Hi All, I want to write this stuff down, while it's fresh in my mind, (it may get moldy soon :-), which may help during your script port. Jeremy, I'm sure I've missed some things, so feel free to update this and redistribute (as necessary). I know this is lengthy, but please save it and read prior to starting your Windows port, as it may save you lots of time :-) Here's a few things to keep in mind on Windows/NT/2000: - A sub-set of Cygnus tools will be packaged with our Windows test kit. Currently, these tools are stored in dpg/cygnus, and for transparent access your PATH variable needs to include this directory. As mentioned in previous e-mail, to expedite this Windows port, I think we should utilize these Unix tools. All necessary tools exist, except those for creating and mounting file systems. Rose, for tapes 'mt' exists and 'tar' also supports tapes. Jeremy, perhaps part of our installation should update the system PATH variable to include the location of our tools and Cygnus? - Cygnus raw access to physical devices has been implemented via mounting devices with a fake /dev prefix. Once mounted, this mount points are stored in the registry so they are retained between boots. Disk devices can be mounted with any name, but tapes must follow this format: meda# mount -f -b '\\.\tape0' /dev/rmt0 meda# mount -f -b '\\.\tape0' /dev/nrmt0 meda# mount Device Directory Type Flags \\.\tape0 /dev/rmt0 user binmode \\.\tape0 /dev/nrmt0 user binmode meda# Disk devices should be mounted using the actual drive name: meda# mount -f -b //./PhysicalDrive3 /dev/PhysicalDrive3 Please Note: These mount points will be handled transparently by MakeDeviceName{}. Jeremy is doing this work (some is done). Also Note: The Cygnus 'df' reports errors on mounted devices which don't have a valid file system (exits with code of 1). Special Note on Windows Device Prefix: The normal Windows hidden device prefix is \\.\ as shown above. Cygnus permits using forward slashes //./ for ease of use. Otherwise in a Unix shell, you must quote or double up the backslashes, for example '\\.\tape0' or \\\\.\\tape0 (yuck!) Scu, which is a native mode program, has also been updated to accept the Unix /dev/ prefix. This way a consistent device name can be used with both Dt and Scu. Native Windows programs require the native device prefix (of course). - POSIX AIO Support: This is not supported by the Cygnus API's. - Tape Testing: I'm happy to report with the latest Dt updates, all tape testing has been succesful to date. This includes multi-file tests which exercise Write File Mark and Forward Space File Mark. Please Note: Unlike Unix systems, the appropriate tape driver must be installed from the Control Panel -> "Tape Devices" ICON. Windows uses a separate device driver for each tape device!!! - Disk Testing: Dt has run successfully on physical disks, through the file system and with multiple processes. Dt expects physical disk names to be called PhysicalDriveN. Otherwise "dtype=disk" is necessary to tell Dt the device type you are testing. The Cygnus Unix API's only support a signed 32-bit file offset, which limits random I/O seeks to 2Gbytes. However, sequential I/O does write/read the entire media, so internally the API's do maintain the real 64-bit Windows file offset. How does this affect us? o Random I/O to limited to 2Gbytes (Dt handles this). o If an I/O error occurs, the file offset and relative block reported by Dt will be inaccurate past the 2GByte offset. - Scu and Disks: The Windows Scu assumes if a drive letter is assigned to a disk, that the disk is mounted. This assumption is not always correct, so Scu needs updated to determine if a valid partition and file system exists. For now, you can use "set bypass on" to avoid this mounted file system check. But obviously use care, or Scu will overwrite mounted file systems. Please Note: Dt does not do *any* mounted file system checks! - Scu and Compaq SCSI Adapters: Jeremy found duirng his testing, that some Compaq adapters report an Initiator of 255. This created a problem for Scu, since this ID is used to differentiate between IDE (ATAPI) and SCSI adapters. Workaround: When Scu is started up, a "set ide on" command is issued which enables use of ATAPI devices. Please note, the ATAPI command set is not 100% compatable with SCSI, so some Scu commands will not work (in fact, some SCSI commands crash my NT SP5 system!). - Windows Tcl Woes: As mentioned in previous e-mail, the TclX wait{} command is *not* returning expected exit status. This problem still needs to be resolved. You'll know you've had an error, but you cannot examine the real exit code. The latter code is necessary for detecting dt's EOF status (for example). Our common procedures execute commands by openning a pipe to the command line. This approach was implemented so non-blocking I/O could be utilized to read the output. The Tcl construct for merging the stderr output with the stdout stream is broken on Windows. To overcome this deficiency, a pipeline to the Cygnus shell is used and the shell construct "2>&1" is appended to merge the data streams. The Windows TclX does not support all the Unix signals we are catching, so your script needs updated as follows: if { $tcl_platform(platform) == "windows" } { signal trap {SIGINT} {TerminateTesting %S} } else { signal trap {SIGHUP SIGINT SIGQUIT} {TerminateTesting %S} } Please Note: TclPro *must* be installed to obtain the TclX extension. Installing TclPro will be part of Jeremy's installation process. Ok, end of brain dump... that's all I can remember right now! Cheers, Robin