/sys$common/syshlp/LD$HELP.HLB  —  LD
 	The logical disk utility is a system management tool available
 	to any user for controlling logical disk usage.

 	A Logical Disk is a file available on a Physical Disk, which
 	acts as a real Physical Disk (the file may or may not be
 	contiguous). The Logical Disks are available in any directory
 	of the Physical Disk.

 	A large disk can be divided into smaller sections, each a Logi-
 	cal Disk, supporting the same I/O functions as the Physical Disk.
 	By giving the Logical Disk File a good  protection level and
 	mounting it private or with device protection, you are able to
 	add a number of protection levels to your file system.

 	The logical disk is controlled by the LD utility, which can
 	be directly invoked from DCL.

 	Format:

 	LD [/qualifiers] [Filespec] [Device]

 	Starting with V9.0 LD can also treat files on disk as a tape
 	(Logical Magtape, a.k. LM). all commands are the same as for LD,
 	but instead of LD one needs to use the LM command.

1  –  Author

 	The author of this piece of software is Jur van der Burg,
 	Kaatsheuvel, The Netherlands.

 	In case of problems/questions/suggestions please contact
 	the author at lddriver@digiater.nl.

 	For more info and updates please visit www.digiater.nl.

2  –  ANALYZE

   LM ANALYZE filespec

 	This command will verify the integrity of the container file. It can
 	only be used for virtual tapes, disks have their own format (ODS-2/5).

 	Notice that analyzing a container file while it is still connected to
 	an LM device may give unpredictable results as some data may still be
 	cached in memory. Disconnecting the device will flush the data back
 	to disk.

2.1    /CONTINUE

   /CONTINUE

 	This qualifier allows analyze to attempt to continue after encountering
 	an error.

2.2    /DATA

   /DATA

 	This qualifier will dump the datarecords in both Hex and Ascii.

2.3    /DIRECTORY

   /DIRECTORY [=HEX,DECIMAL]

 	This qualifier will dump the tape directory records in either Hex
 	or Decimal format, where decimal is the default.

2.4    /OUTPUT

   /OUTPUT[=filespec]

 	This qualifier forces THE output of the analysis to be written to
 	the specified file.

2.5    /RECORDS

   /RECORDS [=HEX,DECIMAL]

 	This qualifier will dump the tape records in either Hex or Decimal
 	format, where decimal is the default.

3  –  Command summary

 	LD CREATE [/LOG] [/SIZE=xxx] [/BACKUP] [/CONTIGUOUS] [/LBN=xxx]
 		[/TRACKS=xxx] [/SECTORS=xxx] [/CYLINDERS=xxx] [/ERASE]
 		[/MAXBLOCKS=xxx] [/CLONE=device] [/EXTEND] Filespec
 	LD CONNECT [/LOG] [/SYMBOL] [/REPLACE] [/SHARE] [/CLONE=device]
 		[/TRACKS=xxx] [/SECTORS=xxx] [/CYLINDERS=xxx] [/FULL]
 		[/MAXBLOCKS=xxx] [/ALLOCLASS=xxx] [/AUTOGEOMETRY]
 		[/OVERRIDE] [/SAVE] [/LBN=(START=xxx,END=xxx,COUNT=xxx)]
 		[/LOGICAL=(NAME=logical-name[,TABLE=table][,MODE=mode])]
 		[/LOCK] [/FORCED_ERROR] [/INIT] [/[NO]LOAD] [/EXTEND[=n]]
 		[/LIMIT=n] Filespec [LDan:] [Logicalname]
 	LD LOAD Filespec LDan: (Qualifiers like CONNECT)
 	LD SWITCH Filespec LDan: (Qualifiers like CONNECT)
 	LD DISCONNECT [/ALL] [/LOG] [/ABORT] [/TRUNCATE] LDan:
 	LD UNLOAD [/LOG] [/TRUNCATE] LDan:
 	LD TRACE [/ACCURATE] [/FDT] [/SIZE=xxx] [/RESET] [/ALL] LDan:
 	LD TRACE/STOP [/ALL] [LDan:]
 	LD NOTRACE LDan:
 	LD WATCH LDan: lbn [,lbn...] [/FUNCTION=READ,WRITE,ALL,CODE=xxx]
 		[/ACTION=SUSPEND,CRASH,OPCOM,ERROR[=xxx]]
 		[/FILE=filespec]
 	LD NOWATCH LDan: [lbn [,lbn...]] [/INDEX=n]
 	LD WATCH/RESUME LDan: [lbn [,lbn...]] [/INDEX=n]
 	LD PROTECT [/PERMANENT] LDan:
 	LD NOPROTECT [/PERMANENT] LDan:
 	LD SHOW [/ALL] [/FULL] [LDan:]
 	LD SHOW/WATCH LDan: [lbn [,lbn...]]
 	LD SHOW/TRACE [/STATUS] [/RESET] [/OUTPUT=Filespec] [/INPUT=filespec]
 		[/BINARY] [/ENTRIES=[(XXX,YYY)]] [/HEADER] [/CONTINUOUS]
 		[/VERSION_LIMIT=xxx] [/BLOCKS=xxx] [/WARNINGS]
 		[/NUMBER] [/PID] [/LBN] [/BYTECOUNT]
 		[/IOSB[=COMBINATION,TEXT,HEX,LONGHEX]]
 		[/TIMESTAMP[=ABSOLUTE,ELAPSED,COMBINATION,DELTA,START,END]]
 		[/FUNCTION[=TEXT,HEX]] [/ACCURATE] [/FDT] [/SYMBOL] LDan:
 	LD ANALYZE [/RECORDS[=HEX,DECIMAL]] [/DATA] [/DIRECTORY[=HEX,DECIMAL]]
 		[/CONTINUE] [/OUTPUT=Filespec] Filespec
 	LD HELP [command]
 	LD VERSION

4  –  Driver functions

 	The LDDRIVER understands all functioncodes normally available
 	for disks. Some special functions are used to control the
 	logical disk driver. When loaded as a tape (LMax) it will
 	understand tape functioncodes.

 	All functions assume that a channel has been assigned to
 	the device on which to operate. One exception is the 'Connect'
 	function which needs a channel to LDA0:. This will then create
 	a new device (because LDA0: is a cloned device).

 	A file with LDdriver specific definitions is included in the
 	kit (LDDEF.H). This file will be included in VMS from version
 	V8.2-1 and up.

 	The only function to control the driver is IO$_LD_CONTROL
 	which is defined in LDDEF.H.
 	A sub-function must be given as P6 of the QIO request.

4.1  –  Connect

 	This function connects a file to a logical disk:

 	Method 1 (old):

 	Function:	IO$_LD_CONTROL

 	P1 = address of SBK block (Attributes Statistics Block) returned
 	     by XQP IO$_ACCESS!IO$M_ACCESS function used to open the file
 	     to connect.
 	P2 = logical disk size. If 0, the allocated size will be used
 	P3 = Number of tracks (optional)
 	P4 = Number of sectors (optional)
 	P5 = Number of cylinders (optional)
 	P6 = Subfunction: LDIO$K_CONNECT

 	Method 2 (new, preferred):

 	Function:	IO$_LD_CONTROL

 	P1 = address of itemlist describing the connection
 	P6 = Subfunction: LDIO$K_CONNECT | LDIO$M_ITEMLIST

 	The P6 argument may also contain the following sub-flags:

 	LDIO$M_LOCK	Will lock the container file
 	LDIO$M_NOFE	Will set the NOFE bit to prevent handling
 			forced errors.

 	The itemlist consist of entries like this:

         BUFLEN  (word)     - Length of buffer
         ITEM    (word)     - Item description:
 			     LDITM$K_CHANNEL
 			     LDITM$K_EXTENDSIZE
 			     LDITM$K_EXTENDLIMIT
 			     LDITM$K_DEVICENAME
 			     LDITM$K_FILEID
 			     LDITM$K_STARTLBN
 			     LDITM$K_ENDLBN
 			     LDITM$K_FLAGS
 			     LDITM$K_TRACKS
 			     LDITM$K_CYLINDERS
 			     LDITM$K_SECTORS
 			     LDITM$K_MAXBLOCKS
         ADDR (longword)    - Pointer to buffer
         RLENGTH (longword) - Returned data length

 	The following flags are for tape use only:

 	LDIO$M_INIT	Will init the tape metadata
 	LDIO$M_NOLOAD	Will create the unit without an attached containerfile
 	LDIO$M_LOADONLY	Will load a containerfile to an existing unit
 	LDIO$M_EXTEND   Extend containerfile on demand

 	This function connects a complete physical disk to a logical disk:

 	Function:	IO$_LD_CONTROL

 	P1 = descriptor of buffer which contains device name of
 	     physical device
 	P6 = Subfunction: LDIO$K_CONNECT | LDIO$M_REPLACE

 	This function connects a partial physical disk to a logical disk:

 	Function:	IO$_LD_CONTROL

 	P1 = descriptor of buffer which contains device name of
 	     physical device
 	P2 = Starting LBN (logical block number)
 	P3 = Ending LBN
 	P4 = Number of LBN's
 	P6 = Subfunction: LDIO$K_CONNECT | LDIO$M_LBN

 	Either P3 or P4 must be specified.

 	IOSB word 0 = status

 	Errors returned:

 	SS$_DEVACTIVE	Device already connected
 	SS$_FORMAT	FCB specified in SBK is invalid or file not opened
 	SS$_ACCVIO	One of the parameters cannot be read/written
 	SS$_IVDEVNAM	Attempt to connect to devicetype other than a disk
 	SS$_FILNOTCNTG	Logical disk file not contiguous
 	SS$_DATAOVERUN	Filename of file to connect too long
 	SS$_FILALRACC	File already in use (may be on other cluster nodes)
 	SS$_ILLKLKNUM	Disk size specified in P2 past end of file
 	SS$_IVADDR	Disk bigger than 2097151 blocks
 	SS$_NORMAL	Successful completion
 	SS$_BADPARAM	Invalid geometry information specified
 	SS$_NOSUCHNODE	Shared access was specified while no cluster code
 			is loaded
 	SS$_ACCONFLICT	Shared access was specified while the device is
 			not cluster-wide visible
 	SS$_WRONGACP	Container file is not on ODS-2 or ODS-5 disk
 	SS$_WRONGSTATE	Container file is not opened without caching (V8.2 and up)
 	SS$_BADFILESIZE	Container file too small (needs at least 5000 blocks) (Only for tape)

 	The following errors are returned for LDIO$M_REPLACE or
 	LDIO$M_LBN only:

 	SS$_DEVFOREIGN	Device foreign mounted
 	SS$_DEVMOUNT	Device mounted
 	SS$_DEVALLOC	Device already allocated

 	Other possible errors are errors returned by the lockmanager
 	and errors returned by IOC$SEARCH.

4.2  –  Disconnect

 	This function disconnects a file or device from a logical disk:

 	Function:	IO$_LD_CONTROL

 	P6 = Subfunction: LDIO$K_DISCONNECT

 	IOSB word 0 = status

 	The subfunctionmodifier LDIO$M_ABORT allows the file to be disconnected
 	regardless of it's state.

 	The following flag is for tape use only:

 	LDIO$M_KEEP	Will disconnect the container file but keep the
 			unit available for reuse.
 	LDIO$M_TRUNCATE	Will truncate the container file to the last written
 			block (valid only of the containerfile was connected
 			with extend enabled).

 	Errors returned:

 	SS$_DEVFOREIGN	Device mounted foreign
 	SS$_DEVMOUNT	Device mounted
 	SS$_BADFILEHDR	Bad logical disk file
 	SS$_DEVASSIGN	Device still active (reference count > 0)
 	SS$_DEVINACT	Device not connected
 	SS$_FORMAT	FCB specified in SBK is invalid
 	SS$_ACCVIO      SBK block cannot be read
 	SS$_NORMAL	Successful completion

 	Other possible errors are errors returned by the lockmanager.

4.3  –  Display status

 	This function retrieves the current status of a LDAn device:

 	Function:	IO$_LD_CONTROL

 	Method 1 (old):

 	P1 = address of buffer which receives the device- or filename
 	     currently connected
 	P2 = size of buffer which receives the device- or filename
 	P3 = address of 3 word buffer which receives the file-id of the
 	     connected file
 	P4 = Address of buffer to receive start lbn (for lbn mapping)
 	P5 = Address of buffer to receive end lbn (for lbn mapping)
 	P6 = Subfunction: LDIO$K_GET_CONNECTION

 	Method 2 (new, preferred):

 	P1 = address of itemlist describing the connection
 	P6 = Subfunction: LDIO$K_GET_CONNECTION |LDIO$M_ITEMLIST

 	The itemlist consist of entries like this:

         BUFLEN  (word)     - Length of buffer
         ITEM    (word)     - Item description:
 			     LDITM$K_EXTENDSIZE
 			     LDITM$K_EXTENDLIMIT
 			     LDITM$K_DEVICENAME
 			     LDITM$K_FILEID
 			     LDITM$K_STARTLBN
 			     LDITM$K_ENDLBN
 			     LDITM$K_FLAGS
         ADDR (longword)    - Pointer to buffer
         RLENGTH (longword) - Returned data length

 	IOSB word 0 = status
 	     word 1 = number of characters transferred
 	     longword 1 = status flag bit 0 : 0 = disconnected
 	                                      1 = connected
 	                              bit 1 : 0 = normal connection
 	                                      1 = replaced drive
 	                              bit 2 : 0 = normal connection
 	                                      1 = replaced to DECRAM disk
 	                              bit 3 : 0 = normal access
 	                                      1 = write protected
 	                              bit 4 : 0 = local access
 	                                      1 = shared access
 	                              bit 8 : 0 = normal timing
 	                                      1 = accurate timing
 	                              bit 9 : 0 = normal trace
 	                                      1 = FDT trace active
 	                              bit 10: 0 = normal connection
 	                                      1 = LBN mapping used

 	The buffer specified in the P1 parameter is only valid when
 	the unit is connected (IOSB longword 1 bit 0 set).
 	If a buffersize of 0 is specified only the status is returned.
 	The itemlist consist of entries like this:

 	Errors returned:

 	SS$_ACCVIO	Buffer can not be written
 	SS$_DEVINACT	Device not connected
 	SS$_NORMAL	Successful completion

4.4  –  Disable protect

 	This function unprotects a drive:

 	Function:	IO$_LD_CONTROL

 	P6 = Subfunction: LDIO$K_DISABLE_PROTECT

 	IOSB word 0 = status

 	Errors returned:

 	SS$_NORMAL	Successful completion

4.5  –  Disable trace

 	This function disables tracing:

 	Function:	IO$_LD_CONTROL

 	P6 = Subfunction: LDIO$K_DISABLE_TRACE

 	IOSB word 0 = status

 	Errors returned:

 	SS$_NODATA	Trace is not active
 	SS$_NORMAL	Successful completion

4.6  –  Disable watch

 	This function disables watchpoints:

 	Function:	IO$_LD_CONTROL

 	P1 = address of watchpt structures
 	P2 = number of watchpt structures, if 0 all entries will
 	     be removed
 	P6 = Subfunction: LDIO$K_DISABLE_WATCH

 	The watchpt structure (if specified) must contain a matching
 	lbn, action, function, flags and returncode. These can all
 	be retrieved with the LDIO$K_GET_WATCH function.

 	IOSB word 0 = status
 	     longword 1 = current number of watchpoints

 	Errors returned:

 	SS$_DATALOST	No active watchpoints
 	SS$_DATACHECK	Specified entry not found
 	SS$_NORMAL	Successful completion

4.7  –  Enable protect

 	This function write-protects a drive:

 	Function:	IO$_LD_CONTROL

 	P6 = Subfunction: LDIO$K_ENABLE_PROTECT

 	IOSB word 0 = status

 	Errors returned:

 	SS$_NORMAL	Successful completion

4.8  –  Enable trace

 	This function enables tracing:

 	Function:	IO$_LD_CONTROL

 	P1 = number of trace buffer packets to allocate
 	P6 = Subfunction: LDIO$K_ENABLE_TRACE

 	IOSB word 0 = status

 	To reset the tracebuffer the additional subfunctionmodifier
 	LDIO$M_RESET can be specified. No new tracebuffer will be
 	allocated when that is done.

 	Requests for FDT tracing need to add the subfunctionmodifier
 	LDIO$M_FDTTRACE.

 	Requests for accurate timing tracing need to add the
 	subfunctionmodifier LDIO$M_ACCURATE.

 	Specifying LDIO$M_TRACE_ALL will enable tracing of requests
 	going to the container file as well (tapes only).

 	Errors returned:

 	SS$_ACCVIO	Parameter cannot be read
 	SS$_BADPARAM	Zero buffer size specified
 	SS$_EXBYTLM	Exceeded BYTLM quota for the process
 	SS$_INSFMEM	Not enough memory to allocate trace buffer
 	SS$_TOOMUCHDATA	Trace is already active
 	SS$_NORMAL	Successful completion

4.9  –  Enable watch

 	This function enables watchpoints:

 	Function:	IO$_LD_CONTROL

 	P1 = address of watchpt structures
 	P2 = number of watchpt structures
 	P6 = Subfunction: LDIO$K_ENABLE_WATCH

 	The watchpt structure must contain a valid lbn, action,
 	function, flags and returncode.

 	IOSB word 0 = status
 	     longword 1 = current number of watchpoints

 	Errors returned:

 	SS$_ACCVIO	Buffer can not be read
 	SS$_NOPRIV	Action needs ownership of device or CMKRNL
 	SS$_NOCMKRNL	CMKRNL privilege needed for CRASH action
 	SS$_EXBYTLM	Out of BYTLIM quota for watch buffers
 	SS$_DEVREQERR	FILE watchpoint must be on the LD device
 	SS$_ILLBLKNUM	Watchpoint past end of file or end of disk or
 			VBN zero specified for file
 	SS$_BADPARAM	Zero buffer length specified or action out of range
 	SS$_FORMAT	FCB specified in SBK is invalid or file not opened
 			with cathedral windows
 	SS$_INSFMEM	Not enough memory to allocate watchpoint buffer
 	SS$_NORMAL	Successful completion

4.10  –  Get suspend list

 	This function retrieves the list of suspended watchpoints:

 	Function:	IO$_LD_CONTROL

 	P1 = address of suspend_list structures
 	P2 = size in bytes of suspend_list buffer
 	P6 = Subfunction: LDIO$K_GET_SUSPEND_LIST

 	This function reads the number of suspended watchpoints:

 	Function:	IO$_LD_CONTROL

 	P6 = Subfunction: LDIO$K_GET_SUSPEND_LIST | LDIO$M_INQUIRE

 	IOSB word 0 = status
 	     word 1 = number of bytes written
 	     longword 1 = current number of suspended watchpoints

 	Errors returned:

 	SS$_INSFMEM	Not enough memory to allocate temporary buffer
 	SS$_ACCVIO	Buffer can not be written
 	SS$_DATALOST	No active watchpoints
 	SS$_IVBUFLEN	Output buffer too small
 	SS$_NORMAL	Successful completion

4.11  –  Get version

 	This function retrieves the driver version.

 	Function:	IO$_LD_CONTROL

 	P1 = address of a longword to get the driver version format
 	     (Currently 1)
 	P2 = address of a quadword to receive the driver's linktime
 	P6 = Subfunction: LDIO$K_GET_VERSION

 	IOSB word 0 = status

 	Errors returned:

 	SS$_ACCVIO	Buffer can not be written
 	SS$_NORMAL	Successful completion
 	SS$_SYNCH	Successful completion (MON version)

4.12  –  Get metadata

 	This function retrieves the tape metadata. See LDSTRDEF.H
 	in the source kit for the layout of the buffer (struct LDTPMD).

 	Function:	IO$_LD_CONTROL

 	P1 = address of a data buffer to retrieve the metadata
 	P2 = buffer length (should be 512 bytes)
 	P6 = Subfunction: LDIO$K_GET_METADATA

 	IOSB word 0 = status

 	Errors returned:

 	SS$_ACCVIO	Buffer can not be written
 	SS$_NODATA	No metadata available
 	SS$_BUFFEROVF	Buffer too small
 	SS$_NORMAL	Successful completion

4.13  –  Get watch

 	This function retrieves watchpoints:

 	Function:	IO$_LD_CONTROL

 	P1 = address of watchpt structures
 	P2 = size in bytes of watchpt buffer
 	P6 = Subfunction: LDIO$K_GET_WATCH

 	This function reads the number of watchpoints:

 	Function:	IO$_LD_CONTROL

 	P6 = Subfunction: LDIO$K_GET_WATCH | LDIO$M_INQUIRE

 	IOSB word 0 = status
 	     word 1 = number of bytes written
 	     longword 1 = current number of watchpoints

 	Errors returned:

 	SS$_INSFMEM	Not enough memory to allocate temporary buffer
 	SS$_ACCVIO	Buffer can not be written
 	SS$_DATALOST	No active watchpoints
 	SS$_IVBUFLEN	Output buffer too small
 	SS$_NORMAL	Successful completion

4.14  –  Load

 	This function loads a container file to an existing tapeunit.

 	Function:	IO$_LD_CONTROL

 	P6 = Subfunction: LDIO$K_LOAD

 	For all other parameters see the description of the Connect
 	driver function.

4.15  –  Read tracebuffer

 	This function reads the tracebuffer size:

 	Function:	IO$_LD_CONTROL

 	P6 = Subfunction: LDIO$K_GET_TRACE | LDIO$M_INQUIRE

 	IOSB word 0 = status
 	     word 1 = 0
 	     longword 1 = tracebuffer size (number of packets)

 	If the iosb status is SS$_WASSET FDT tracing is active.

 	This function reads the tracebuffer data:

 	Function:	IO$_LD_CONTROL

 	P1 = address of buffer which receives trace info
 	P2 = size of trace buffer in bytes
 	P6 = Subfunction: LDIO$K_GET_TRACE

 	IOSB word 0 = status
 	     word 1 = 0
 	     longword 1 = number of packets transferred
 			  or the number of lost packets in
 			  case of SS$_DATAOVERRUN.

 	If the return status was SS$_DATAOVERRUN the buffer
 	contains the number of packets as returned by the
 	LDIO$K_GET_TRACE | LDIO$M_INQUIRE function.

 	To read the tracebuffer data and to reset the buffer after
 	the data has been read the subfunctionmodifier LDIO$M_RESET can
 	be specified.

 	If LDIO$M_NOWAIT is omitted the I/O request will wait until new
 	trace data is available.

 	Errors returned:

 	SS$_ACCVIO	Buffer can not be written
 	SS$_NODATA	Trace is not active
 	SS$_IVBUFLEN	Buffer too small to contain all trace data
 	SS$_DATAOVERRUN	The tracebuffer has been overrun
 	SS$_NORMAL	Successful completion

4.16  –  Reset tracebuffer

 	This function resets the tracebuffer:

 	Function:	IO$_LD_CONTROL

 	P6 = Subfunction: LDIO$K_RESET_TRACE

 	IOSB word 0 = status

 	Errors returned:

 	SS$_NODATA	Trace is not active
 	SS$_NORMAL	Successful completion

4.17  –  Resume watch

 	This function resumes a suspended watchpoint:

 	Function:	IO$_LD_CONTROL

 	P1 = address of suspend_list structures
 	P2 = size in bytes of suspend_list buffer
 	P6 = Subfunction: LDIO$K_RESUME_WATCH

 	IOSB word 0 = status
 	     word 1 = number of bytes written

 	Errors returned:

 	SS$_INSFMEM	Not enough memory to allocate temporary buffer
 	SS$_ACCVIO	Buffer can not be written
 	SS$_DATALOST	No active watchpoints
 	SS$_DATACHECK	Nothing resumed
 	SS$_NORMAL	Successful completion

4.18  –  Set allocation class

 	This function enables presetting of the allocation class of the
 	LD device. This may only be done when no devices are connected.

 	Function:	IO$_LD_CONTROL

 	P1 = allocation class
 	P6 = Subfunction: LDIO$K_SET_ALLOCLASS

 	IOSB word 0 = status

 	Errors returned:

 	SS$_BADPARAM	Allocation class > 255 specified
 	SS$_UNSAFE	There are still connected LD devices
 	SS$_NORMAL	Successful completion

4.19  –  Set unitnumber

 	This function enables presetting of the next assigned
 	unitnumber.

 	Function:	IO$_LD_CONTROL

 	P1 = unitnumber to preset
 	P6 = Subfunction: LDIO$K_SET_SEED

 	IOSB word 0 = status

 	Errors returned:

 	SS$_BADPARAM	Unitnumber less than 0 or greater than 9999
 	SS$_NORMAL	Successful completion

4.20  –  Unload

 	This function unloads a container file from a tapeunit.

 	Function:	IO$_LD_CONTROL

 	P6 = Subfunction: LDIO$K_UNLOAD

 	For all other parameters see the description of the Disconnect
 	driver function.

4.21  –  Other features

 	After modification of the driver it is possible to RELOAD it
 	without rebooting the system, provided that the size of the UCB
 	did not change. If the reloaded driver detects a different UCB
 	size, the unit will be placed off-line and the system has to
 	be rebooted. The reload is only possible on a VAX.

 	If there is still a file or device connected to any LDAn device
 	the driver cannot be reloaded. In that case all LDAn devices
 	have to be disconnected first.

 	If a tracebuffer is allocated before reloading, it will be
 	deallocated. All trace data will be lost.

5  –  Error messages

 	A number of error messages can be returned by the LD utility.

5.1  –  ACCURATE

     %LD-I-ACCURATE, Accurate timing is active

 	An LD SHOW/TRACE/STATUS command was given while accurate trace timing
 	is active.

 	This status is only returned on Alpha.

5.2  –  ALLOCLASS

     %LD-F-ALLOCLASS, Allocation class mismatch

 	An LD CONNECT/SHARE command was given where the current allocation
 	class of the specified LD device was different on the current node
 	then on another cluster node where the file is connected.

5.3  –  ALREADYCONN

     %LD-F-ALRDYCONN, Device already connected

 	An LD CONNECT command is given while the logical disk device
 	was already connected.

5.4  –  ANALYZEERR

     %LM-F-ANALYZEERR, Container file structure error at logical block 213

 	An LM ANALYZE command is given where the tape container file has a
 	structural error at logical block 213.

5.5  –  ANALYZEOK

     %LM-I-ANALYZEOK, Container file structure successfully verified

 	An LM ANALYZE command is given where the tape container file has
 	no errors.

5.6  –  BADALLOCLASS

     %LD-F-BADALLOCLASS, Bad allocation class specified

 	An LD CONNECT/ALLOCLASS command was given with an allocation class
 	bigger than the limit of 255.

5.7  –  BADDEVSYNTAX

     %LD-F-BADDEVSYNTAX, Bad device syntax (LDAZ:)

 	A unit to use as a logical disk was specified with a bad
 	syntax.

5.8  –  BADENTPARAM

     %LD-F-BADENTPARAM, Bad /ENTRIES parameter(s)

 	An LD SHOW/TRACE/ENTRIES command was given where either the
 	second parameter was less than the first, or one of the parameters
 	was less than 0.

5.9  –  BADUNIT

     %LD-F-BADUNIT, Bad unit number LDAnnnnn

 	An LD command was given where the unit number is out of
 	range. A valid unit numer ranges from 1 to 9999.

5.10  –  BLANKTAPE

     %LM-I-BLANKTAPE, Blank tape detected

 	An LM ANALYZE command is given where the tape container file has
 	not been used before.

5.11  –  BLKOUTOFRANGE

     %LD-F-BLKOUTOFRANGE, Blocks out of range

 	An LD CONNECT/LBN=(START=x,END=y) command was given where the starting
 	end ending blocks are outside the LBN's of the source device. This error
 	can also occur on an LD CONNECT/LBN=(START=x,COUNT=y) command where y
 	would cause LD to go past the end of the disk.

5.12  –  CANTREADOLDFMT

     %LD-F-CANTREADOLDFMT, Can't read old format datafile (Version 2)

 	An attempt was made to read a datafile which was created
 	with an old version of LD. Use the old version of LD to read
 	the file.

5.13  –  CLONENOTMOUNTED

     %LD-F-CLONENOTMOUNTED, Clone device must be mounted

 	A CREATE/CLONE=dev or CONNECT/CLONE=dev command was given where
 	'dev' was not mounted.

5.14  –  CLOSERR

     %LD-F-CLOSERR, Unable to close file $1$DUA0:[DATA]LD_TRACE.LOG;1

 	An LD SHOW/TRACE/{IN,OUT}PUT command was given, and the close of
 	the in- or output file had a problem.

5.15  –  CONFQUAL

     %LD-F-CONFQUAL, Conflicting qualifiers

 	Conflicting qualifiers were given for the specified command.
 	Check the documentation.

5.16  –  CONNECTED

     %LD-I-CONNECTED, Device _THEBUG$LDA1: is connected to
     $1$DUA1:[DIR]DISKFILE.DSK;1

 	An LD CONNECT/LOG command is given, or an LD SHOW command.

     %LD-I-CONNECTED, Device _THEBUG$LDA1: is connected to $1$DUA1: (Replaced)

 	An LD CONNECT/LOG/REPLACE command is given, or an LD SHOW command.
 	The complete device was replaced.

5.17  –  CONTTOOSMALL

     %LD-F-CONTTOOSMALL, Container file too small (5000 blocks minimum)

 	An LM CONNECT command was given where the containerfile is smaller
 	than 5000 blocks. Due to buffering in the driver a minimum size of
 	the containerfile is needed, unless /EXTEND was specified.

5.18  –  CONTTRACEACT

     %LD-F-CONTTRACEACT, Continuous tracing is already active for
     device _THEBUG$LDA1:

 	An LD SHOW/TRACE/CONTINUOUS command was given while such command
 	for the same device was already in progress.

5.19  –  CONTTRACENOTACT

     %LD-F-CONTTRACENOTACT, Continuous tracing is not active for
     device _THEBUG$LDA1:

 	An LD TRACE/STOP command was given for a specified device
 	while there was no continuous trace active for that device.

5.20  –  CREATED

     %LD-I-CREATED, File $1$DUA1:[DIR]DISKFILE.DSK;1 created

 	An LD CREATE/LOG command is given.

5.21  –  CREATERR

     %LD-F-CREATERR, Unable to create file $1$DUA0:[TMP]DATA.DSK;1

 	An LD CREATE command was given, but the command was unable
 	to complete. The accompanying message shows more info.

5.22  –  CYLINDERS

     %LD-F-CYLINDERS, Cylinders mismatch

 	An LD CONNECT/SHARE command was given where the number of
 	cylinders did not match the number of cylinders for the containerfile
 	on another node.

5.23  –  DETECTEDERR

     %LD-F-DETECTEDERR, Detected fatal error

 	A general fatal error was detected. Look at the accompanying
 	errormessage.

5.24  –  DEVASSIGN

     %LD-F-DEVASSIGN, Device has channels assigned

 	An LD DISCONNECT command was given on a device with active
 	channels. Most probably an LD SHOW/TRACE/CONTINUOUS command
 	is still active.

5.25  –  DEVCONNECTED

     %LD-F-DEVCONNECTED, Cannot set allocation class with active LD devices

 	An LD CONNECT/ALLOCLASS command was given while there were already
 	LD devices connected. All devices have to be disconnected before
 	an allocation class can be set.

5.26  –  DEVICEINUSE

     %LD-F-DEVICEINUSE, Device incompatible connected to other LD disk in cluster

 	An LD CONNECT command is given where the device to be replaced was
 	already in use by another logical disk or by VMS, either on this system
 	or on another system in a cluster.

5.27  –  DEVICENAME

     %LD-F-DEVICENAME, Devicename mismatch

 	An LD CONNECT command is given where the devicename of a shared
 	device or file was not the same as the one on a remote node.

5.28  –  DISCONNECTED

     %LD-I-DISCONNECTED, Disconnected $1$DUA1:[DIR]DISKFILE.DSK;1 from $1$LDA1:

 	An LD DISCONNECT/LOG command is given, and the unit plus containerfile
 	disconnected are displayed.

5.29  –  DUPUNIT

     %LD-F-DUPUNIT, Duplicate unitnumber

 	An LD CONNECT file LDAxx command was given while the device
 	LDAxx already exists.

5.30  –  EXTENDED

     %LD-I-EXTENDED, File $1$DUA1:[DIR]DISKFILE.DSK;1 extended to 10000 blocks

 	An LD CREATE/EXTEND/SIZE=10000/LOG command is given.

5.31  –  FDTACTIVE

     %LD-I-FDTACTIVE, FDT Tracing is active

 	An LD SHOW/TRACE/STATUS command was given while FDT tracing
 	is active.

 	This status is only returned on Alpha.

5.32  –  FILEIDINUSE

     %LD-F-FILEIDINUSE, File ID in use

 	An LD CONNECT command is given where the specified file is
 	already in use, possibly on a remote node.

5.33  –  FILEINUSE

     %LD-F-FILEINUSE, File incompatible connected to other LD disk in cluster

 	An LD CONNECT command is given where the logical disk file was
 	already in use by another logical disk, either on this system
 	or on another system in a cluster. The connect specified on the other
 	system was done in a way which is not compatible with the current
 	connect parameters. This can happen if another node specified for
 	example /MAXBLOCKS, or /TRACKS which were not or incompatible
 	specified on the local node. The complete geometry must be the same
 	on all nodes.

5.34  –  FILEONOTHER

     %LD-F-FILEONOTHER, File not allowed to be on other device

 	An LD WATCH/FILE=filespec command was given where the specified
 	file did not reside on the specified LD device.

5.35  –  FILEONVOLSET

     %LD-F-FILEONVOLSET, File watchpoint on volumeset not allowed

 	An LD WATCH/FILE=filespec command was given where the specified
 	file resides on a volume set. This is not supported.

5.36  –  FILREADERR

     %LD-F-FILREADERR, Unable to read input file $1$DUA0:[TMP]FILE.DAT;1

 	An LD SHOW/TRACE/INPUT command was given where the requested
 	inputfile could not be read.

5.37  –  FILWRTERR

     %LD-F-FILWRTERR, Unable to write output file $1$DUA0:[TMP]FILE.DAT;1

 	An LD SHOW/TRACE/OUTPUT command was given where the requested
 	outputfile could not be written.

5.38  –  HIGHWATER

     %LD-W-HIGHWATER, Highwater marking is enabled on device, be patient

 	An LD CREATE command was given, and the disk where the container
 	file is created has highwater marking enabled, and the specified
 	containersize is more than 100000 blocks.

 	This is just a warning that creation of the container file may
 	take a long time as the contents will be erased.

5.39  –  INCMPDEVTYPE

     %LD-F-INCMPDEVTYPE, Incompatible device type

 	An LD command is given which is only applicable to tapes.
 	An LM command is given which is only applicable to disks.

5.40  –  INCMPPROT

     %LD-F-INCMPPROT, Incompatible locking protocol in use

 	An LD CONNECT/SHARE command was given while an incompatible
 	version of LDDRIVER was connected to the same resource on
 	another node in a cluster. Make sure that all systems in a
 	cluster sharing an LD connected resource have the same
 	version of LD installed.

5.41  –  INFILERR

     %LD-F-INFILERR, Unable to open input file $1$DUA0:[TMP]FILE.DAT;1

 	An LD SHOW/TRACE/INPUT command was given where the requested
 	inputfile could not be opened.

5.42  –  INVGEOMETRY

     %LD-F-INVGEOMETRY, Invalid geometry specified

 	An LD CONNECT command is given where the geometry specified
 	with /TRACKS, /SECTORS or /CYLINDERS is invalid. TRACKS and
 	SECTORS are limited to 255, CYLINDERS is limited to 65535.

 	This error can also be returned if TRACKS * SECTORS * CYLINDERS
 	is less than the maximum logical blocknumber of the container file.

5.43  –  INVOKESTARTUP

     %LD-F-INVOKESTARTUP, LD has not been setup correctly, invoke
                          @SYS$STARTUP:LD$STARTUP.COM
     %LM-F-INVOKESTARTUP, LM has not been setup correctly, invoke
                          @SYS$STARTUP:LM$STARTUP.COM

 	Any LD or LM command that needs the driver will check if the driver
 	is loaded, and that the control utility has been installed. If this
 	is not the case the startup procedure must be executed.

5.44  –  INVVERSIONFMT

     %LD-F-INVVERSIONFMT, Invalid driver version format

 	An LD VERSION command was given where the version information
 	returned by the driver is incompatible with the LD utility
 	command program used to get this info.

5.45  –  LOGICALNAMEERR

     %LD-F-LOGICALNAMEERR, Error defining locical name

 	An LD CONNECT/LOGICAL command was given where the creation of the
 	logical name returned an error.

5.46  –  MAXBLOCK

     %LD-F-MAXBLOCK, Maximum blocknumber mismatch

 	An LD CONNECT/SHARE command was given where the maximum number of
 	blocks did not match the maximum number of blocks for the
 	containerfile on another node.

5.47  –  METADATA

     %LD-I-METADATA, Metadata available

 	An LM SHOW/FULL or CONNECT/FULL command was given where the containerfile
 	has valid metadata available.

5.48  –  NEEDDEVICE

     %LD-F-NEEDDEVICE, Device name needed

 	An LM LOAD command is given to connect a containerfile to an existing
 	device, and that device is not speficied.

5.49  –  NOCLUSTER

     %LD-F-NOCLUSTER, No cluster code loaded

 	An LD CONNECT/SHARE command is given when the system is not
 	running VMSCluster software.

5.50  –  NOGROUPPRIV

     %LD-F-NOGROUPPRIV, No privilege to stop trace of device _THEBUG$LDA1:

 	An attempt was made to stop the continuous trace of device THEBUG$LDA1
 	while the trace was started by a process in the same UIC group. This
 	operation need GROUP privilege.

5.51  –  NOLBNMAP

     %LD-F-NOLBNMAP, No lbn mapping specified

 	An LD CONNECT/SHARE command was given when the shared device was
 	created with LBN mapping.

5.52  –  NOMETADATA

     %LD-I-NOMETADATA, No metadata available

 	An LM ANALYZE command was given where the containerfile contains no
 	valid metadata.

5.53  –  NOREADWRITE

     %LD-F-NOREADWRITE, No read or write function specified for file mode

 	An LD WATCH/FILE=filespec command was given where the function was
 	not one of the following: READPBLK, WRITEPBLK, WRITECHECK or DSE.
 	Such watchpoint may only be specified in combination with a data-
 	transfer function.

5.54  –  NOSHARE

     %LD-F-NOSHARE, No sharing specified for file on this node

 	An LD CONNECT command was given while the specified containerfile
 	was connected with /SHARE on another node.

5.55  –  NOSYSNAM

     %LD-F-NOSYSNAM, SYSNAM privilege needed to define an EXEC logical name

 	An LD CONNECT/LOGICAL=MODE=EXEC command was given while the
 	process issuing the command lacks SYSNAM privilege.

5.56  –  NOTADISK

     %LD-F-NOTADISK, Clone device must be a disk

 	An LD CONNECT/CLONE=dev or CREATE/CLONE=dev was given where 'dev'
 	was not a disk.

5.57  –  NOTCONN

     %LD-F-NOTCONN, Device not connected

 	An LM UNLOAD command was given on a tapeunit without a connected
 	container file.

5.58  –  NOTCONNECTED

     %LD-W-NOTCONNECTED, Device _THEBUG$LDA1: is not connected

 	An LD SHOW command is given, and the disk was not connected
 	to a file.

 	An LD DISCONNECT command is given while the logical disk device
 	was not connected.

 	This errormessage can only occur if the driver has been
 	assembled without cloned device support.

5.59  –  NOTRCDATA

     %LD-F-NOTRCDATA, No trace data available

 	An LD SHOW/TRACE command was given while the tracebuffer did
 	not contain any data.

5.60  –  NOTREPLACED

     %LD-F-NOTREPLACED, Device was not connected as replaced on other node

 	An LD CONNECT/REPLACE command was given where the specified
 	device was connected on another node, but not as /REPLACED.

5.61  –  NOTSAVED

     %LD-W-NOTSAVED, Container file metadata has not been saved

 	An LD CONNECT/SAVE or LD [NO]PROTECT/PERMANENT command was
 	given where the fileheader of the container file does not
 	have enough space to store the metadata. This can happen
 	if the containerfile was created with an old version of
 	the LD utility. Notice that this is a warning only, to
 	fix this a new container file must be created.

5.62  –  NOTSHARED

     %LD-F-NOTSHARED, File is not shared on other node

 	An LD CONNECT/SHARE command was given while the specified
 	containerfile was not connected with /SHARE on another node.

5.63  –  NOTVISIBLE

     %LD-F-NOTVISIBLE, Device is not visible on other nodes

 	An LD CONNECT/SHARE command is given when the device to
 	be replaced or the device on which the container file
 	resides is not visible by other cluster nodes.

5.64  –  NOUNITSFOUND

     %LD-F-NOUNITSFOUND, No usable logical disk units found

 	An LD SHOW/ALL or TRACE/STOP/ALL command was given while
 	no connected units were found.

5.65  –  NOWATCHDATA

     %LD-F-NOWATCHDATA, No watchpoint data available

 	An LD SHOW/WATCH command was given while no watchpoints were
 	set.

5.66  –  NOWDISCONN

     %LD-I-NOWDISCONN, Device $8$LDA1: is now disconnected from file
       $8$DIA2:[LD]DEVICE1.DSK;1

 	An LD DISCONNECT/LOG command is given.

5.67  –  NOWORLDPRIV

     %LD-F-NOWORLDPRIV, No privilege to stop trace of device _THEBUG$LDA1:

 	An attempt was made to stop the continuous trace of device THEBUG$LDA1
 	while the trace was started by a process in another UIC group. This
 	operation needs WORLD privilege.

5.68  –  OPENERR

     %LD-F-OPENERR, Unable to open file NOFILE

 	An LD CONNECT command was given where the container file could not
 	be opened.

5.69  –  OUTFILERR

     %LD-F-OUTFILERR, Unable to open output file $1$DUA0:[TMP]FILE.DAT;1

 	An LD SHOW/TRACE/OUTPUT command was given where the requested
 	outputfile could not be opened.

5.70  –  PASTDATA

     %LD-F-PASTDATA, Requested entry(s) past end of data

 	An LD SHOW/TRACE/ENTRIES command was given where the requested
 	entries were beyond the available data.

5.71  –  RANGEINUSE

     %LD-W-RANGEINUSE, LBN range already in use

 	An LD CONNECT/LBN command was given where the requested range
 	of logical blocknumbers was already in use elsewhere in the
 	cluster. This can also happen if there's an overlap with an
 	existing range.

5.72  –  REMOTEALLOC

     %LD-W-REMOTEALLOC, Device _$1$LDA1: is allocated on a remote node

 	An LD SHOW or an LD DISCONNECT command was given while the
 	specified LD device was mounted private on a remote node.

 	This can only happen on an LD device which was connected with
 	/SHARE.

5.73  –  SECTORS

     %LD-F-SECTORS, Sectors mismatch

 	An LD CONNECT/SHARE command was given where the number of
 	sectors did not match the number of sectors for the containerfile
 	on another node.

5.74  –  STARTLBN

     %LD-F-STARTLBN, Starting lbn mismatch

 	An LD CONNECT/LBN=START=x/SHARE command was given where the starting
 	LBN did not match the starting LBN on another node.

5.75  –  STATUS

     %LD-I-STATUS, Device _THEBUG$LDA1: has a tracebuffer of 512
     entries (139 valid records)

 	An LD SHOW/TRACE/STATUS command is given. The specified device
 	has 512 tracebuffer entries allocated, of which 139 are currently
 	in use.

5.76  –  TRACESTOPPED

     %LD-I-TRACESTOPPED, Trace stopped by process 0C20025E (HOSTbuster)

 	An LD TRACE/STOP command was given for a device to force a
 	SHOW/TRACE/CONTINUOUS command which was in progress by another
 	process to exit. The process issuing the command is indicated
 	by the process id and process name.

5.77  –  TRACKS

     %LD-F-TRACKS, Tracks mismatch

 	An LD CONNECT/SHARE command was given where the number of
 	tracks did not match the number of tracks for the containerfile
 	on another node.

5.78  –  TRCDISABL

     %LD-F-TRCDISABL, Tracing is disabled

 	An LD SHOW/TRACE command was given while tracing was not
 	enabled for the specified device.

5.79  –  TRCENABL

     %LD-F-TRCENABL, Tracing is already enabled

 	An LD TRACE command was given while tracing was already
 	enabled.

5.80  –  UNIT

     %LD-I-UNIT, Allocated device is _THEBUG$LDA4:

 	An LD CONNECT command was given without /LOG and without a
 	device specification. This informational message shows which
 	device was assigned to the specified file.

5.81  –  UNITNUMBER

     %LD-F-UNITNUMBER, Unitnumber mismatch

 	An LD CONNECT/SHARE command was given when the specified unit number
 	was different than the unitnumber for the same containerfile used
 	on another node.

5.82  –  UNSUPPORTEDFS

     %LD-F-UNSUPPORTEDFS, Unsupported filesystem

 	An LD CONNECT command was given while the specified containerfile
 	was located on an unrecognized filesystem.

5.83  –  VBNERROR

     %LD-F-VBNERROR, Illegal virtual block number specified

 	An LD WATCH/FILE=filespec command was given where the VBN to
 	watch was either zero or beyond the end of file.

5.84  –  VERSION

     %LD-I-VERSION, LD version V9.0, module X-9 built on Oct 28 2006 15:19:29
     -LD-I-DRIVERVERSION, Driver version: 28-OCT-2006 15:19:59.26 (MON version)
     -LD-I-SYSINFO, Node: THEBAT, Hardware: hp AlphaServer DS20L 833 MHz, VMS version: V8.3

 	An LD VERSION command was given, and the resulting information
 	is displayed.

5.85  –  WPTNOTFOUND

     %LD-F-WPTNOTFOUND, Watchpoint not found

 	An LD SHOW/WATCH command was given where the specified watchpoint
 	does not exist.

5.86  –  Other

 	The VAX/VMS System Messages and Recovery Procedures Reference Man-
 	ual lists other possible messages and  provides explanations and
 	suggested user actions.

 	Note that when errormessages are returned, and you cannot trace
 	them back to the Logical Disk, perform the same checks again for
 	the Physical Disk on which the Logical File resides.

6  –  Features

 	Logical disks may be just a single disk, part of a volumeset,
 	part of a stripeset, part of a host-based shadowset, part of
 	a host-based raid set or any combination.

 	The file to be used for the logical disk may be placed on any
 	physical disk, in any directory. A backup can be made to protect
 	the disk.

 	A physical device may be 'replaced' by a logical disk to enable
 	logging of all I/O of the physical disk (See CONNECT/REPLACE).

7  –  HELP

 	Provides interactive help.

8  –  New features V5.0

 	Enable/disable write-protection of a device  with the next command:

 		LD [NO]PROTECT LDan:

 	Watchpoint support. A watchpoint is a marker which can be set on one
 	or more logical blocks of a disk. The watchpoint consists of a function-
 	code, an action, an error return code and one logical block number.
 	When an I/O request is done to the driver it will check if the request
 	matches one of the watchpoints. If true then the action specified for
 	that watchpoint will be executed. An action can be for example an OPCOM
 	message, but also to return an error code, or to suspend the I/O thread,
 	or to crash the system.

 	The following commandfile will for example put the device into mount-
 	verification:

 	$ SET VERIFY
 	$ SET NOON
 	$!
 	$! Example of how to put a device into mountverification
 	$!
 	$ LD CREATE/NOBACKUP TEMPDISK.DSK
 	$ LD CONNECT/LOG TEMPDISK.DSK LDA1:
 	$ INIT/NOHIGH/SYSTEM LDA1: TEST
 	$ LD TRACE LDA1
 	$ MOUNT LDA1: TEST
 	$ LD WATCH LDA1: 1/ACTION=OPCOM/FUNCTION=CODE=%X080C
 	$ LD WATCH LDA1: 1/ACTION=ERROR=%X84/FUNCTION=CODE=%X0808
 	$ LD WATCH LDA1: 10/ACTION=ERROR=%X84/FUNCTION=READ
 	$ LD SHOW/WATCH LDA1:
 	$ REPLY/ENABLE/TEMP
 	$ SPAWN/NOWAIT/INPUT=NL: DUMP LDA1:/BLOCK=(START=10,COUNT=1)
 	$ INQUIRE DUMMY "Press return to continue"
 	$ LD NOWATCH LDA1:
 	$ LD SHOW/TRACE LDA1:
 	$ REPLY/DISABLE
 	$ DISMOUNT LDA1:
 	$ LD DISCONNECT LDA1:
 	$ DELETE/NOLOG/NOCONF TEMPDISK.DSK;

9  –  New features V5.1

 	Shared access of the container file or a replaced device are
 	now possible by connecting with the /SHARE switch. For this to
 	work the 'LD' devicename must be the same on all nodes of the cluster
 	which connect to the same container file or device.

 	Device geometry can now be specified by connecting a device with
 	the /SECTORS, /TRACKS and /CYLINDERS qualifiers. Also the maximum
 	usable size may be given with the /MAXBLOCKS qualifier, which
 	supersedes the /ALLOCATED qualifier.

 	An allocation class may be specified for the LD device with the
 	/ALLOCLASS qualifier for CONNECT. If this is not done then the
 	default is the value from the systemparameter ALLOCLASS.

 	A switch was added to CONNECT, /SYMBOL. This allows a DCL
 	symbol to be set representing the created unit number if it
 	was not specified.

10  –  New features V6.0

 	The driver is finally supported by ALPHA/VMS.

 	The restriction that container files had to be contiguous is
 	removed. Also, nesting of LD devices (container file on a logical
 	disk) is now allowed.

 	A watchpoint may now specify /FUNCTION=ALL to trap all function
 	codes.

11  –  New features V6.2

 	If one needs more than 9999 logical disk devices then another
 	'controller' may be used by specifying a new device at
 	connection time:

         $ RUN SYS$SYSTEM:SYSMAN
         IO CONNECT LDA0/NOADAPTER/DRIVER=SYS$LDDRIVER
         IO CONNECT LDB0/NOADAPTER/DRIVER=SYS$LDDRIVER
         IO CONNECT LDC0/NOADAPTER/DRIVER=SYS$LDDRIVER

12  –  New features V6.3

 	FDT routine access can now be traced. This will show access to
 	the driver which is otherwise hidden, since some driver functions
 	can complete in the FDT routines. It can be enabled with
 	$ LD TRACE/FDT (Alpha only).

 	Accurate timing of I/O requests can now be done by enabling it
 	this way: $ LD TRACE/ACCURATE (Alpha only). This allows I/O
 	duration to be measured with a resolution of one microsecond, as
 	opposed to the normal 10 mSec accuracy. The drawback is that if
 	this is used all I/O has to go through the primary processor.

 	Container files may now reside on remotely mounted NFS volumes.
 	Note however that members of a shadowset may not be used if they
 	reside on such a device. This is because the NFSdriver does not
 	support the IO$_WRITECHECK function. This restriction will be
 	lifted in a future release.

 	The restriction of the maximum size of the logical disk not
 	exceeding 2097120 blocks without specifying the geometry has
 	been lifted. Any size up to the size of the disk holding the
 	containerfile is allowed.

13  –  New features V7.0

 	There are new CREATE qualifiers:

 	    /TRACKS=nnn
 	    /SECTORS=nnn
 	    /CYLINDERS=nnn
 	    /MAXBLOCKS=nnn

 	  These settings will be stored in the containerfile as metadata
 	  (in the fileheader), and if present will be used when the
 	  containerfile is connected (unless /NOAUTOGEOMETRY is specified).

 	    /LBN=nnn

 	  Allows placement of the containerfile on a specific LBN. If that
 	  LBN is not available an error will be returned. Notice that when
 	  /CONTIGUOUS is not specified and the request succeeds the file
 	  may be split in multiple segments at the discretion of the XQP,
 	  in that case only the first part of the file will be on the
 	  specified LBN.

 	    /CLONE=device

 	  Allows size and geometry to be cloned from the specified device.
 	  This device has to be mounted for this to function. The geometry
 	  will automatically be saved in the containerfile.

 	New CONNECT qualifiers:

 	    /CLONE=device

 	  Allows size and geometry to be cloned from the specified device.
 	  This device has to be mounted for this to function. Other geometry
 	  data may be overruled when specified on the commandline.

 	    /AUTOGEOMETRY

 	  This is the default. On a connect the containerfile is checked if
 	  there's geometry info available, and if true that's used for
 	  connect unless /NOAUTOGEOMETRY is specified.

 	    /SAVE

 	  Updates the geometry data in the containerfile.

 	New [NO]PROTECT qualifiers:

 	    /PERMANENT

 	  Save writelock status in the containerfile so that it may be used
 	  during CONNECT (like emulating a 'hardware write protect' button).

 	Other features:

 	Interactive help is available with the LD HELP command.

 	If a shared file is connected and an error is returned due to
 	incompatibilities with sharing of other nodes, a more verbose error
 	message is given with the reason for the failure, like invalid
 	allocation class, unit number, etc.

 	The following will automatically connect the right unit if it's not
 	specified and file sharing is wanted:

 	  $ LD CONNECT DISK:[DIR]FILE.DSK/SHARE

 	This way of connecting needs CMKRNL privilege. If this privilege is
 	lacking a clear error message will be displayed about that.

 	There's no problem anymore in using an ODS5 volume for the
 	containerfile, this restriction has been lifted.

 	Using a containerfile exceeding 4Gb will not crash the system
 	anymnore.

14  –  New features V8.0

 	A physical disk may be connected to a logical disk, whereby it
 	can be specified which lbn range of the physical disk to use.

 	For example, we want to connect a device LDA1 to blocks 1000
 	through 20000 of a physical device:

 	  $ LD CONNECT DKA0: LDA1:/LBN=(START=1000,END=20999)

 	Or we can specify a number of blocks to use:

 	  $ LD CONNECT DKA0: LDA1:/LBN=(START=1000,COUNT=20000)

 	This will map lbn's 1000 through 20999 of DKA0: which can be
 	accessed as a disk through LDA1:

 	This functionality may also be used clusterwide by adding
 	/SHARE. All nodes sharing a disk this way must specify the
 	same parameters. Geometry is calculated by the driver and
 	cannot be specified. Multiple ranges may be used for multiple
 	LD devices, as long as there's no overlap. The range check
 	is done on all cluster members.

 	An example can be to partition a disk without any file structure
 	on it:

 	  $ LD CONNECT DKA0: LDA1:/LBN=(START=0,COUNT=100000)
 	  $ LD CONNECT DKA0: LDA2:/LBN=(START=100000,COUNT=100000)
 	  $ LD CONNECT DKA0: LDA3:/LBN=(START=200000,COUNT=100000)
 	  $ LD CONNECT DKA0: LDA4:/LBN=(START=300000,COUNT=100000)

 	This can also be shared:

 	  $ LD CONNECT DKA0: LDA5:/LBN=(START=400000,COUNT=100000)/SHARE

 	In that case the partition can be accessed from other cluster
 	members as well.

 	Notice that the physical disk in question will be protected
 	by a lock, and may not be mounted anywhere.

 	A new locking protocol is in use between LDDRIVER's on different
 	nodes in a cluster. The new V8.0 driver can deal with connected
 	devices by old LDDRIVER's, old drivers however may not be able
 	to connect to shared resources of the new drivers. If one driver
 	is the first to connect to a resource it will establish the
 	locking version in use. This means that if an old driver connects
 	as the first one, the connection will work. Example:

 	oldsys> ld connect d1 lda1/share/log
 	%LD-I-CONNECTED, Connected $7$LDA1: to $8$DUA15:[LD]D1.DSK;1 (Shared)

 	newsys> ld connect d1 lda1/share/log
 	%LD-I-CONNECTED, Connected $7$LDA1: to $8$DUA15:[LD]D1.DSK;1 (Shared)
 	  (Old driver connected on other node)

 	Notice that the new driver will tell us that an old driver
 	has connected to the resource, and that an upgrade may be
 	required. If the new driver connects first the old driver will
 	issue a different error message:

 	newsys> ld connect d1 lda1/share/log
 	%LD-I-CONNECTED, Connected $7$LDA1: to $8$DUA15:[LD]D1.DSK;1 (Shared)

 	oldsys> ld connect d1 lda1/share/log
 	%LD-F-FILEINUSE, File incompatible connected to other LD disk in cluster

 	This makes connection to a shared resource dependent on the order
 	of the nodes where the connection occurs. For this reason it is
 	advisable to install the new LD version on all nodes in a cluster if
 	shared resources are used.

 	The include file for the callable interface has changed.
 	It used to be LD_DEFINES.H and is still included, but the new definitions
 	are now in LDDEF.H created from and sdl source file. It is preferred
 	to use the new definitions as they will become part of VMS in the
 	future.

15  –  New features V8.1

 	The container file can now be locked to prevent file deletion:

 	  $ LD CONNECT DKA0:[LD]DISK1.DSK LDA1:/LOCK

 	In previous versions the container file could be deleted, but the
 	actual deletion did not take place until the file was disconnected
 	so no harm was done. This is the same bahaviour as what's in place
 	for page-, swap- and dumpfiles.

 	Creation of container files will now make sure that there's room
 	in the fileheader to save metadata like geometry and write-protect
 	status. In previous versions this space was not always created (for
 	example when there was a default acl on the container file's parent
 	directory). This could also result in an SS$_HEADERFULL error
 	when creating the file.

 	A logical name pointing to the LD device can now be specified
 	when the device is connected:

 	  $ LD CONNECT DKA0:[LD]DISK1.DSK LDA1: LOGNAME

 	If the optional Logicalname argument is specified a logical name
 	pointing to the device will be created in the process table.
 	Notice that the logical name will not be deassigned when the device
 	is disconnected.

 	Specifying the LD device to connect to is optional, and it works
 	also if an alternate controller is used without a unit number (for
 	example, LDB). So you can let the driver automatically select a
 	unitnumber when it's not specified, so this will work:

 	  $ LD CONNECT DISK.DSK LDB

 	The file will then be connected to the next unitnumber on the B
 	controller.

 	Retrieving LD version information can now be done with the LD VERSION
 	command.

 	The qualifier /NOFORCED_ERROR on an LD CONNECT command will allow the
 	LD device to prevent handling of forced errors and return an
 	SS$_UNSUPPORTED error if an attempt is made to create a forced error.
 	This can be used in testing host-based volume shadowing.

 	The qualifier /EXTEND on an LD CREATE command allows for extension
 	of an existing container file. Specify /SIZE=xxx to set the number
 	of blocks to extend the current	file to.

 	The control utility will now check if the driver is loaded, as well
 	as that it is installed with the correct privileges. If this is not
 	the case then a message will be given to execute LD$STARTUP.COM.

16  –  New features V8.2

         V8.2 is mainly a bugfix release. The only feature that has been
         extended is the version information from the LD VERSION command.

17  –  New features V9.0

 	V9.0 has the following new features:

 	The major new feature is virtual tape support. This allows a file
 	on disk to be used as a tape device, which can be very handy for
 	testing. To use it substitute the LM command for LD, like this:

 	$ @sys$startup:lm$startup
 	$ lm create tape.dsk/size=10000
 	$ lm connect/log/full tape.dsk lma1:
 	%LM-I-CONNECTED, Connected $3$LMA1: to $3$DKA100:[JUR.LD.V90.SRC]TAPE.DSK;1
 	-LM-I-OPTIONS, Tape unit, Tape loaded
 	%LM-I-METADATA, Metadata available

 	Version:                 1
 	Creator:                 JUR
 	Process name:              SysDamager
 	Account:                 SYSTEM
 	UIC:                     [100,100]
 	Created on system:       THEBAT
 	VMS version:             V8.3
 	Time at creation:         8-MAY-2007 20:50:19.90
 	Time at last connect:     8-MAY-2007 20:50:25.49
 	Time at last disconnect:  8-MAY-2007 20:50:19.90
 	Data start:              1
 	Data size:               9999
 	Flags:                   tagsinuse
 	Checksum:                3A4D74B7

 	$ show dev/full lma1

 	Magtape $3$LMA1: (THEBAT), device type (Generic SCSI tape), is online, file-
     	oriented device.

 	Error count                    0    Operations completed                  2
 	Owner process                 ""    Owner UIC                         [JUR]
 	Owner process ID        00000000    Dev Prot            S:RWPL,O:RWPL,G:R,W
     	Reference count                0    Default buffer size                2048
     	Density                  default    Format                        Normal-11
     	Allocation class               3

 	  Volume status:  no-unload on dismount, odd parity.

 	$ lm trace lma1/all
 	$ init lma1 test
 	$ mount lma1 test
 	%MOUNT-I-MOUNTED, TEST mounted on _$3$LMA1: (THEBAT)
 	$ lm show/trace lma1
 	         I/O trace for device $3$LMA1:
 	     8-MAY-2007 20:51:59.14 on node THEBAT

 	End Time           Elaps    Pid       Lbn     Bytes  Iosb    Function
 	---------------------------------------------------------------------
 	20:51:49.649071 00.000005 2020042F          0      0 NORMAL  PACKACK
 	20:51:49.649133 00.000000 2020042F          0      0 NORMAL  REWIND
 	20:51:49.649174 00.000001 2020042F          0      0 NORMAL  SETMODE|MT3_DENSITY
 	20:51:49.664598 00.014676 00000000          1 131072 NORMAL  READPBLK
 	20:51:49.666553 00.001917 00000000        257 131072 NORMAL  READPBLK
 	20:51:49.676429 00.009853 00000000        513 131072 NORMAL  READPBLK
 	20:51:49.686808 00.010357 00000000        769 131072 NORMAL  READPBLK
 	20:51:49.686837 00.036922 2020042F          0     80 OPINCOMPL READPBLK
 	20:51:49.686904 00.000001 2020042F          0      0 NORMAL  REWIND
 	20:51:49.686945 00.000000 2020042F          0      0 NORMAL  SETMODE|MT3_DENSITY
 	20:51:49.687029 00.000001 2020042F          0      0 NORMAL  REWIND
 	20:51:49.687083 00.000014 2020042F          0     80 NORMAL  WRITEPBLK
 	20:51:49.687150 00.000010 2020042F          0     80 NORMAL  WRITEPBLK
 	20:51:49.687209 00.000010 2020042F          0     80 NORMAL  WRITEPBLK
 	20:51:49.687261 00.000001 2020042F          0      0 NORMAL  WRITEOF
 	20:51:49.687292 00.000001 2020042F          0      0 NORMAL  WRITEOF
 	20:51:49.687332 00.000009 2020042F          0     80 NORMAL  WRITEPBLK
 	20:51:49.687378 00.000009 2020042F          0     80 NORMAL  WRITEPBLK
 	20:51:49.687412 00.000001 2020042F          0      0 NORMAL  WRITEOF
 	20:51:49.687442 00.000001 2020042F          0      0 NORMAL  WRITEOF
 	20:51:49.692443 00.004969 00000000          1   1024 NORMAL  WRITEPBLK
 	20:51:49.692483 00.005014 2020042F          0      0 NORMAL  REWIND
 	20:51:49.692533 00.000001 2020042F          0      0 NORMAL  AVAILABLE
 	20:51:49.692586 00.000001 2020042F          0      0 NORMAL  AVAILABLE
 	20:51:53.556264 00.000003 2020042F          0      0 NORMAL  PACKACK
 	20:51:53.556314 00.000000 2020042F          0      0 NORMAL  REWIND
 	20:51:53.556357 00.000000 2020042F          0     16 NORMAL  SENSEMODE|MT3_DENSITY
 	20:51:53.556416 00.000000 2020042F          0      0 NORMAL  SETMODE|MT3_DENSITY
 	20:51:53.556471 00.000001 2020042F          0      0 NORMAL  PACKACK
 	20:51:53.556505 00.000001 2020042F          0      0 NORMAL  REWIND
 	20:51:53.568662 00.012108 00000000          1 131072 NORMAL  READPBLK
 	20:51:53.570605 00.001909 00000000        257 131072 NORMAL  READPBLK
 	20:51:53.572169 00.001541 00000000        513 131072 NORMAL  READPBLK
 	20:51:53.573773 00.001583 00000000        769 131072 NORMAL  READPBLK
 	20:51:53.573811 00.017262 2020042F          0     80 NORMAL  READPBLK
 	20:51:53.582545 00.000014 2020042F          0     80 NORMAL  READPBLK
 	20:51:53.582615 00.000009 2020042F          0     80 NORMAL  READPBLK
 	20:51:53.582667 00.000001 2020042F          0     80 ENDOFFILE READPBLK
 	20:51:53.582736 00.000001 2020042F          0      0 NORMAL  REWIND

 	There are three commands for volume switch support: LM LOAD, UNLOAD
 	and SWITCH. Initially an LM device can be created without a connected
 	containerfile, with LM CONNECT/NOLOAD LMAx.

 	After that it can be unloaded with LM UNLOAD LMAx, and reloaded
 	with LM LOAD file LMAx. Switching a volume can be done in one
 	command with LM SWITCH file LMAx. LM SHOW/FULL will display if
 	the tape is loaded or not. So right now DISMOUNT/UNLOAD (the default)
 	will keep the file connected, but move it to the unload state. It is
 	possible to reload it and keep the same file with LM LOAD LMAx (special
 	case command). If the device is unloaded it will return SS$_MEDOFL
 	when it's accessed. LM LOAD and SWITCH can use the same qualifiers
 	as CONNECT, UNLOAD can use the same qualifiers as DISCONNECT.

 	If a device is not connected to a container file it can simply be
 	removed with LM DISCONNECT LMAx.

 	  LM SWITCH newfile.dsk LMA1

 	This command allows volume switching for backup. The existing virtual
 	tapeunit is re-used with a new container file. If backup is at the end
 	of a tape and issues an Opcom request this commands allows switching of
 	the containerfile.

 	One thing to notice is that a tape containerfile must be at least 5000
 	blocks in size. The virtual end of tape is currently fixed at 95% of
 	the containerfile size, after writing that amount of data the driver
 	will return SS$_ENDOFTAPE after every write. This is a warning message
 	only, the data will be written correctly. If the physical end of data
 	is reached an SS$_DRVERR will be returned.

 	  LM ANALYZE file.dsk [/RECORDS] [/DATA]

 	This command will verify the integrity of the container file. It can
 	only be used for virtual tapes, disks have their own format (ODS-2/5).
 	The qualifier /RECORDS will show all records with their possible
 	attributes. /DATA will dump the contents of the data records in hex
 	and ascii:

 	$ lm analyze tape/records
 	%LM-I-METADATA, Metadata available

 	Version:                 1
 	Creator:                 JUR
 	Process name:              SysDamager
 	Account:                 SYSTEM
 	UIC:                     [100,100]
 	Created on system:       THEBAT
 	VMS version:             V8.3
 	Time at creation:         8-MAY-2007 20:50:19.90
 	Time at last connect:     8-MAY-2007 20:50:25.49
 	Time at last disconnect:  8-MAY-2007 20:53:23.54
 	Data start:              1
 	Data size:               9999
 	Flags:                   tagsinuse
 	Checksum:                A7C35A3F

 	Record:        0 Offset:              0 Lbn:          1 Length:       80
 	Record:        1 Offset:            116 Lbn:          1 Length:       80
 	Record:        2 Offset:            232 Lbn:          1 Length:       80
 	Record:        3 Offset:            348 Lbn:          1 Length:        0 Flags: EOF
 	Record:        4 Offset:            384 Lbn:          1 Length:        0 Flags: EOF
 	Record:        5 Offset:            420 Lbn:          1 Length:       80
 	Record:        6 Offset:            536 Lbn:          2 Length:       80
 	Record:        7 Offset:            652 Lbn:          2 Length:        0 Flags: EOF
 	Record:        8 Offset:            688 Lbn:          2 Length:        0 Flags: EOF
 	Record:        0 Offset:              0 Lbn:          1 Length:        0 Flags: EOD
 	%LM-I-ANALYZEOK, Container file structure successfully verified
 	Bytes read:           524288
 	Records read:             10
 	Databytes read:          400
 	Eof count:                 4

 	  LD CREATE/ERASE

 	This will erase the containerfile after creation. It may be used
 	to speed up initial shadow copies, or when init has a problem
 	initializing a virtual disk due to previous stale data and the
 	user lacks VOLPRO privilege to override that.

 	If creation of a containerfile is done on a disk with highwater
 	marking enabled, a warning will be issued that it may take some
 	time if the filesize is above 100000 blocks (VMS V8.2 and higher
 	only).

 	  LD CONNECT/LOGICAL=(NAME=logical-name[,TABLE=table][,MODE=mode])

 	This allows a logical name to be associated with the connected LD
 	device.

 	  LD SHOW/FULL

 	This will show all attributes of the selected LD device:

 	$ ld show/all/full
 	%LD-I-CONNECTED, Connected _$3$LDA1: to $1$DGA100:[JUR.LD.V90.SRC]FILE.DSK;1
 	-LD-I-OPTIONS, Shared
 	%LD-I-CONNECTED, Connected _$3$LDA2: to _$3$DQA0:
 	-LD-I-OPTIONS, Replaced, Trace active, No DSE support, Not Forced Error capable

 	  LD SHOW/TRACE/TIMESTAMP=START or END

 	This allows selection of absolute start and end time of trace data.

 	  LD SHOW/SYMBOL

 	This will get the LD unit number in DCL symbol LD_UNIT, and the
 	container file specification in the symbol LD_CONTAINER.
 	For tape it will be LM_UNIT and LM_CONTAINER.

 	There's more accurate timing in trace messages (microsecond accuracy)
 	(Only in VMS V8.3 and higher):

 	$ ld show/trace lda1
 	        I/O trace for device $3$LDA1:
 	17-MAY-2006 09:21:15.16 on node THEBAT

 	End Time           Elaps    Pid       Lbn     Bytes  Iosb    Function
 	---------------------------------------------------------------------
 	09:21:12.232269 00.000000 2060042F          0      0 NORMAL  PACKACK
 	09:21:12.240950 00.008581 2060042F          1    512 NORMAL  READPBLK
 	09:21:12.247513 00.006426 2060042F       1034    512 NORMAL  READPBLK
 	09:21:12.248595 00.000959 2060042F      50033    512 NORMAL  READPBLK
 	09:21:12.249557 00.000838 2060042F      50034    512 NORMAL  READPBLK
 	09:21:12.255176 00.005504 2060042F      50016    512 NORMAL  READPBLK
 	09:21:12.263548 00.008258 2060042F      50016    512 NORMAL  WRITEPBLK

 	LD SHOW/TRACE can now show the contents of the LBN and BYTECOUNT fields
 	in decimal and hex with /LBN=[HEX,DECICMAL] or /BYTECOUNT=[HEX,DECIMAL].

 	Trace data for the LM device will by default not contain the data
 	to/from disk initiated by the driver (with a PID field of 0). To
 	enable tracing of this data use /ALL with LD TRACE.

 	Known issues:

 	LM SHOW/TRACE/CONTINOUS can not yet be trusted completely, it may cause
 	invalid data to be written to tape if used together with writing to
 	tape.

 	Switching volumes due to tape full on a Files-11 mounted tape may
 	get errors.

 	The accurate timing measurements may be way off if a cpu is stopped and
 	restarted. Disconnecting and reconnecting the LD device will fix it.

 	Copying .OBJ files (and possibly others) may give SS$_BADATTRIB errors.
 	This is not stricktly an error since any copy of a file on a files-11
 	mounted tape may generate this error for records smaller than 14 bytes.
 	These small records are rejected by the VMS I/O system as documented
 	in the I/O User's reference manual. A real tape device will behave the
 	same.

18  –  New features V9.1

 	V9.1 has no new features, the only change is to allow installation on
 	OpenVMS Ia64 V8.3-1H1. All images are the same as LD V9.0.

19  –  New features V9.2

 	V9.2 has the following new features:

 	The major new feature is variable container file support for tape. This
 	allows a file on disk to be used as a tape device, without having to
 	preallocate a certain amount of blocks. This is enabled at CONNECT time
 	with the qualifier /EXTEND. Also, a limit may be placed on the maximum
 	container file size. The default is unlimited, which means that
 	extending the file will stop as soon as the underlaying disk is full.

 	Example:

 	   $ LM CREATE TAPE.DSK/SIZE=0
 	   $ LM CONNECT/LOG/FULL/EXTEND=10000/LIMIT=5000000 TAPE.DSK LMA1:
 	   %LM-I-CONNECTED, Connected $2$LMA1: to $4$DKA400:[JUR.LD.V92.SRC]TAPE.DSK;1
 	   -LM-I-OPTIONS, Tape unit, Tape loaded, Extend file on demand (size=10000, limit=5000000)
 	   %LM-I-METADATA, Metadata available

 	   Version:                 1
 	   Creator:                 JUR
 	   Process name:                  EH?
 	   Account:
 	   UIC:                     [100,100]
 	   Created on system:       THENET
 	   VMS version:             V8.3
 	   Time at creation:         1-MAR-2009 21:30:28.51
 	   Time at last connect:     1-MAR-2009 21:30:36.53
 	   Time at last disconnect:  1-MAR-2009 21:30:28.51
 	   Data start:              1
 	   Data size:               0
 	   Flags:                   tagsinuse
 	   Checksum:                30F9EAF7

 	This will create a virtual tape of initially 0 blocks in size, and the
 	extension of the container file will be done with 10000 blocks at a
 	time. There's a limit of 5000000 blocks, if the file grows to that
 	limit then the end of tape marker will be returned at 95% of the
 	maximum capacity.

 	After writing the tape and dismounting it, excess blocks can be removed
 	from the container file with LM DISCONNECT/TRUNCATE or
 	LM UNLOAD/TRUNCATE. This will effectively truncate the container file
 	to the maximum logical block where data has been written.

 	Specifying /LIMIT without /EXTEND on the CONNECT command is not allowed.
 	The default extension limit for /EXTEND is 65536 blocks if not
 	specified. Specifying /LIMIT=0 is the same as not specifying /LIMIT.

 	Bug fixes:

 	IO$_SETMODE to a tape device will now set the correct default device
 	buffer size.

 	Under very specific circumstances a skip reverse operation to tape
 	resulted in a read request from disk with a random number of bytes.
 	Some controllers rejected the command with SS$_CTRLERR, other errors
 	could be an SS$_BUGCHECK from the driver itself.

 	A system crash could occur when running LD$STARTUP.COM or LM$STARTUP
 	on a system which was very low on nonpaged pool. Doing that right now
 	will return an error.

 	The known issues for V9.0 are the same as for V9.2.

20  –  New features V9.3

 	V9.3 has the following bugfixes:

 	1. The LM SWITCH command was broken:

 	$ lm switch TEST  LMA1:
 	%CLI-F-SYNTAX, error parsing 'TRUNCATE'
 	-CLI-E-ENTNF, specified entity not found in command tables

 	2. The default buffer size was set incorrectly to 0 for an LM device:

 	Magtape $11$LMA1: (THEINT), device type (Generic SCSI tape), is online, file-
 	oriented device.

 	    Error count                    0    Operations completed                  2
 	    Owner process                 ""    Owner UIC                         [JUR]
 	    Owner process ID        00000000    Dev Prot            S:RWPL,O:RWPL,G:R,W
 	    Reference count                0    Default buffer size                   0  <<<<<
 	    Density                  default    Format                        Normal-11
 	    Allocation class              11

 	  Volume status:  no-unload on dismount, odd parity.

 	The effect was that MOUNT/BLOCKSIZE=x was not honored, and that copy to
 	a files-11 mounted tape may fail for certain files. Other errors are also
 	possible, like DUMP from tape may always give 512 byte blocks.

21  –  New features V9.4

 	The only change in V9.4 is the possibility to install on the OpenVMS
 	E8.4 fieldtest and higher.

22  –  New features V9.5

 	V9.5 has the following bugfixes:

 	Applications could fail with floating point errors like HPARITH traps
 	when tracing was enabled on an LD device. This could only happen on
 	OpenVMS V8.3 or above.

 	LD will now warn when an attempt is made to install it on any disk
 	other than the system disk. Since LD is an integrated component of
 	VMS it must be installed on the system disk.

23  –  New features V9.6

 	V9.6 has the following bugfixes:

 	On Ia64 the trace data was not properly displayed, the microseconds
 	resolution field was invalid. This could only happen on
 	OpenVMS V8.3 or above.

 	On all platforms the display of timing information with
 	/TIMESTAMP=DELTA was incorrect. This could only happen on
 	OpenVMS V8.3 or above.

 	If a container file does not have the NO_CACHING attribute set it
 	will be set when the file is disconnected (provided that there is
 	write access to the file). Not doing that may leave data in the
 	XFC cache from operations like copy, unzip, etc. causing problems
 	later on when reconnecting the container file.

24  –  Parameters

 	  Filespec

 	Specifies the logical disk file to create or to connect.
 	Any legal VMS filespec without wildcards or nodename is
 	acceptable.

 	  Device

 	Logical disk devicename, LDan where n is 1 to 9999.

25  –  Privileges and Quotas

 	To control creation and deletion of logical devices one needs
 	PHY_IO privilege for the LD utility. To use continuous tracing
 	SYSLCK privilege is needed. The startup commandfile,
 	SYS$STARTUP:LD$STARTUP.COM will install the LD utility with
 	these privileges so that ordinary users can play around by
 	creating and removing disks.

 	Note that the users will be charged against BYTLM for each
 	unit they create. Also, the creation of a tracebuffer will
 	be charged against BYTLM, as well as creating of a watchpoint.

 	Connecting a shared disk which is already connected on another
 	cluster node without specifying a unit number needs CMKRNL
 	privilege. Due to possible security implications the LD
 	utility is not installed with this privilege.

26  –  Restrictions

 	A file used for a logical disk may not be used for any other
 	logical disk, unless /SHARE is specified. If that is not done,
 	the driver will return SS$_FILALRACC. The same is true when one
 	tries to replace a device, the error returned in that case will
 	be SS$_DEVALLOC.

 	A containerfile for a logical disk must reside on an ODS-2 or
 	an ODS-5 volume. Spiralog volumes are not supported.

 	If a continuous trace is in progress it is impossible to
 	mount a logical disk because the reference count is not zero.
 	Stop the trace, mount the disk and restart the trace. No trace-
 	data will be lost because the driver will buffer this.

 	Container files may now reside on remotely mounted NFS volumes.
 	Note however that members of a shadowset may not be used if they
 	reside on such a device. This is because the NFSdriver does not
 	support the IO$_WRITECHECK function. This restriction may be
 	lifted in a future release.

27  –  Setup

 	The logical disk has to be setup by connecting the
 	driver with SYSGEN. The unitnumber can be selected
 	by the user connecting the logical disk.

 	To connect the driver on VAX:

         $ RUN SYS$SYSTEM:SYSGEN
         CONNECT LDA0/NOADAPTER

 	To connect the driver on Alpha or IA64 the supplied startup
 	command procedure has to be executed:

 	For LD:  SYS$STARTUP:LD$STARTUP.COM

 	For LM:  SYS$STARTUP:LM$STARTUP.COM

27.1  –  Example

 	An example of setting up some Logical Disks.

         $ @SYS$STARTUP:LD$STARTUP
         $ LD CREATE/SIZE=8192 $1$DUA1:[TEMP]USER.DSK;1
         $ LD CONNECT $1$DUA1:[TEMP]USER.DSK;1 LDA1:
         $ INITIALIZE LDA1: USERDSK1
         $ MOUNT LDA1: USERDSK1

28  –  IO Trace example

 	An example of traced I/O:

 	$ LD SHOW/TRACE/ENTRIES=(12,23)/IOSB=COMBINATION LDA1:

          I/O trace for device _THEBUG$LDA1:
     24-FEB-1994 16:36:56.31 on node THEBUG::

 Start Time  Elaps   Pid        Lbn    Bytes  Iosb   Count  Function
 -------------------------------------------------------------------
 20:52:30.01 00.02 202000C4          5   512 NORMAL    512 READPBLK
 20:52:30.03 00.03 202000C4          5   512 NORMAL    512 WRITEPBLK|DATACHECK
 20:52:30.07 00.00 202000C4          0     0 NORMAL      0 UNLOAD
 23:16:18.05 00.00 202000C5          0    32 NORMAL      0 SETMODE|LINE_OFF
 23:16:30.13 00.00 202000C5          0    11 NORMAL      0 SETMODE|LINE_ON|NEWLINE
 23:17:05.70 00.05 202000C5          0     0 NORMAL      0 PACKACK|INHERLOG
 23:17:05.76 03.22 202000C5          1   512 NORMAL    512 READPBLK
 23:17:09.00 00.67 202000C5     608509   512 NORMAL    512 READPBLK
 23:17:09.67 00.03 202000C5     608510   512 NORMAL    512 READPBLK
 23:17:09.70 00.27 202000C5     608334   512 NORMAL    512 READPBLK
 23:17:09.97 00.00 202000C5     608334   512 WRITLCK     0 WRITEPBLK
 23:17:10.04 00.29 202000C5     608508   512 NORMAL    512 READPBLK

29  –  CONNECT

   LD CONNECT file_or_device [LDAn:] [Logicalname]

 	This command will connect the Logical Disk File to the Logical
 	Disk device.

 	This function must be performed before the logical disk can be
 	mounted or otherwise used. It requires the Physical Disk to be
 	mounted and requires read and write access to the Logical Disk File.

 	If the LD-device is not specified, it will be assigned by the
 	driver, and an informational message will be given about which
 	device is selected.

 	If the LD-device is not specified and a file is connected /SHARED,
 	the corresponding device is automatically created provided that
 	the process issueing the command has CMKRNL privilege.

 	If the device is specified, and if that device does not exist
 	it will be created as specified.

 	If the optional Logicalname argument is specified a logical name
 	pointing to the device will be created in the process table.
 	Notice that the logical name will not be deassigned when the device
 	is disconnected.

 	Specifying the LD device to connect to is optional, and it works
 	also if an alternate controller is used without a unit number (for
 	example, LDB). So you can let the driver automatically select a
 	unitnumber when it's not specified, so this will work:

 	  $ LD CONNECT DISK.DSK LDB

 	The file will then be connected to the next unitnumber on the B
 	controller.

29.1    /ALLOCLASS

  /ALLOCLASS=allocation_class

 	If this qualifier is specified, the specified allocation class will
 	be set for all LD devices. This qualifier can only be set when there
 	are currently no LD devices connected.

 	Setting an allocation class can be usefull if LD device needs to be
 	shared in a cluster where different nodes have different allocation
 	classes.

29.2    /AUTOGEOMETRY

  /AUTOGEOMETRY

 	This is the default. On a connect the containerfile is checked if
 	there's geometry info available, and if true that's used for connect
 	unless /NOAUTOGEOMETRY is specified.

29.3    /CLONE

  /CLONE=device

 	Allows size and geometry to be cloned from the specified device. This
 	device has to be mounted for this to function. Other geometry data
 	may be overruled when specified on the commandline.

29.4    /CYLINDERS

  /CYLINDERS=number_of_cylinders

 	When this qualifier is specified the device will be created with the
 	specified number of cylinders. If not specified, and no /TRACKS
 	and /SECTORS switches are specified, then the device geometry will
 	be calculated by the driver. If it is specified then any other geometry
 	switch will default to 1 when not specified.

 	The maximum number of cylinders is 65535.

 	If SECTORS * TRACKS * CYLINDERS is less than the capacity of the
 	containerfile an error message will be issued.

 	WARNING:

 		If a container file has been used and is reconnected with other
 		geometry information which results in another disksize then
 		diskcorruption may result.

 	This qualifier may not be used together with /REPLACE or /LBN. For
 	/REPLACE the geometry will be inherited from the replaced device.
 	For /LBN the driver will create the appropriate geometry.

29.5    /EXTEND

  /EXTEND[=n]
  /NOEXTEND (default)

 	This qualifier allows a tapeunit to automatically extend the container
 	file on demand. If no value is specified then the default extend size
 	is 65536 blocks at a time.

29.6    /FORCED_ERROR

  /FORCED_ERROR (default)
  /NOFORCED_ERROR

 	This qualifier will allow the LD device to handle forced errors,
 	provided that the underlaying physical device is capable of handling
 	them too. Specify /NOFORCED_ERROR to prevent the device from
 	handling these errors and return an SS$_UNSUPPORTED error if an
 	attempt is made to create a forced error. This can be used in testing
 	host-based volume shadowing.

29.7    /FULL

  /FULL
  /NOFULL (default)

 	This qualifier will show all attributes of the selected LD device,
 	like sharing, connection type etc.

29.8    /INIT

  /INIT
  /NOINIT (default)

 	This qualifier will reinitialize the metadata when a tape containerfile
 	is connected. Since this will overwrite the first part of the containerfile
 	it is not done by default. If a containerfile is created with the LM
 	command it will automatically be created with metadata in place.

29.9    /LBN

  /LBN=(START=x,END=y) or
  /LBN=(START=X,COUNT=y)

 	Connect an LD device to a physical disk, starting at LBN x, with either
 	an end-lbn specified or a count. The ending lbn may not be beyond the
 	end of the physical device. The count plus the starting lbn may also
 	not be beyond the end. With this qualifier it is possible to partially
 	map a physical disk.

29.10    /LIMIT

  /LIMIT[=n]
  /NOLIMIT (default)

 	This qualifier allows a tapeunit to automatically limit the container
 	file size. This works in conjunction with /EXTEND, which enables automatic
 	extension. Once the container file has grown to the specified size it will
 	stop there. If no value is specified or specified as zero then there's no
 	limit.

29.11    /LOAD

  /LOAD (default)
  /NOLOAD

 	When negated this qualifier will create a new tape device without a
 	containerfile connected to it. A subsequent 'LOAD' command is needed
 	to use the device.

29.12    /LOCK

  /LOCK
  /NOLOCK (default)

 	This qualifier will lock the container file in a manner that prevents
 	deletion. Without this the file can be deleted, but the actual deletion
 	will only take place when the container file is disconnected so no
 	harm will be done. This is the same bahaviour as what's in place for
 	page-, swap- and dumpfiles.

29.13    /LOG

  /LOG
  /NOLOG (default)

 	Shows the connection between the logical disk and the file or device
 	after the connection has been completed. This switch may be combined
 	withe /FULL to see everything.

29.14    /LOGICAL

  /LOGICAL=(NAME=logical-name[,TABLE=table][,MODE=mode])

 	Specifies a logical name to be associated with the actual name of
 	the created device.

 	You can specify one of the following options for the TABLE
 	keyword:

 	GROUP	Places the logical name in the group logical name
 		table. You must have GRPNAM or SYSPRV privilege to
 		place the logical name in the group logical name table.

 	JOB	Places the logical name in the jobwide logical name
 		table.

 	PROCESS	Places the logical name in the process logical name
 		table. This is the default.

 	SYSTEM	Places the logical name in the system logical name
 		table. You must have SYSNAM or SYSPRV privilege to
 		place a name in the system logical name table.

 	You can also specify the name of a specific table. For example,
 	you could specify LNM$PROCESS, which would be the equivalent of
 	specifying PROCESS.

 	Options for the MODE keyword are:

 	EXECUTIVE  Creates an executive mode logical name. You must have
 		   SYSNAM privilege to create an executive mode logical
 		   name.

 	SUPERVISOR Creates a supervisor mode logical name.

 	USER	   Creates a user mode logical name.

 	The access mode associated with the logical name is determined
 	by maximizing the access mode of the caller with the access mode
 	specified by the MODE keyword: the mode with the lower privilege
 	is used.

 	You cannot specify an access mode with a privilege higher than
 	that of the table containing the logical name. However, if your
 	process has SYSNAM privilege, then the specified access mode is
 	associated with the logical name regardless of the access mode of
 	the caller.

 	If you omit the MODE keyword, the access mode of the caller is
 	associated with the logical name.

 	If you create a USER mode logical name but don't specify a table,
 	the name will be deleted as soon as the LD control utility exits.
 	This is the normal behaviour for user mode logical names.

29.15    /MAXBLOCKS

  /MAXBLOCKS=number_of_blocks

 	When this qualifier is specified the specified number of blocks
 	will be the maximum used for the device. It may not be bigger than
 	the allocated size of the container file.

29.16    /REPLACE

 	When this qualifier is specified one has to specify a devicename
 	instead of a filespec. This has the effect of replacing the
 	physical drive with the logical drive, and it enables all I/O
 	requests to the physical device to be logged. The physical device
 	will be marked allocated and unavailable.

29.17    /SAVE

  /SAVE

 	Updates the geometry data in the containerfile.

29.18    /SECTORS

  /SECTORS=number_of_sectors

 	When this qualifier is specified the device will be created with the
 	specified number of sectors. If not specified, and no /CYLINDERS
 	and /TRACKS switches are specified, then the device geometry will
 	be calculated by the driver. If it is specified then any other geometry
 	switch will default to 1 when not specified.

 	The maximum number of sectors is 255.

 	If SECTORS * TRACKS * CYLINDERS is less than the capacity of the
 	containerfile an error message will be issued.

 	WARNING:

 		If a container file has been used and is reconnected with other
 		geometry information which results in another disksize then
 		diskcorruption may result.

 	This qualifier may not be used together with /REPLACE or /LBN. For
 	/REPLACE the geometry will be inherited from the replaced device.
 	For /LBN the driver will create the appropriate geometry.

29.19    /SHARE

 	If this qualifier is specified, then sharing the container file with
 	other nodes in a cluster is allowed, provided that the same devicename
 	(ALLDEVNAM) is used on every node accessing the file, and that the
 	specified geometry is the same on every node.

 	If the containerfile needs to be accessed on other nodes as well
 	then the CONNECT/SHARE command must be issued on all nodes wanting
 	to share the container file.

 	If used together with /REPLACE then sharing of another device is
 	allowed.

29.20    /SYMBOL

 	When this qualifier is specified a local DCL symbol representing
 	the unit number will be created: LD_UNIT. This can be useful when
 	a connect is done without specifying a unit number. With this
 	qualifier included a command procedure is able to use this in
 	subsequent commands.

 	If it is used with tapes (LM) then the symbol name will be LM_UNIT.

29.21    /TRACKS

  /TRACKS=number_of_tracks

 	When this qualifier is specified the device will be created with the
 	specified number of tracks. If not specified, and no /CYLINDERS
 	and /SECTORS switches are specified, then the device geometry will
 	be calculated by the driver. If it is specified then any other geometry
 	switch will default to 1 when not specified.

 	The maximum number of tracks is 255.

 	If SECTORS * TRACKS * CYLINDERS is less than the capacity of the
 	containerfile an error message will be issued.

 	WARNING:

 		If a container file has been used and is reconnected with other
 		geometry information which results in another disksize then
 		diskcorruption may result.

 	This qualifier may not be used together with /REPLACE or /LBN. For
 	/REPLACE the geometry will be inherited from the replaced device.
 	For /LBN the driver will create the appropriate geometry.

30  –  CREATE

   LD CREATE filespec

 	This command will create a file which can be used as a Logical Disk.
 	The default extension is ".DSK". The file will be set /NOMOVE and
 	/CACHING_ATTRIBUTE=NO_CACHING.

 	If the command is used with tapes (LM) then the newly created containerfile
 	will automatically contain tape metadata like username, creation time etc.
 	which can be displayed with LM SHOW/FULL.

30.1    /BACKUP

  /BACKUP (default)
  /NOBACKUP

 	This qualifier can be used to mark the file /NOBACKUP. In
 	that case when a backup of the file is done only the file-
 	header will be copied. On a restore the file will be re-
 	created, and all data will be lost.

30.2    /CLONE

  /CLONE=device

 	Allows size and geometry to be cloned from the specified device. This
 	device has to be mounted for this to function. The geometry will
 	automatically be saved in the containerfile.

30.3    /CONTIGUOUS

  /CONTIGUOUS
  /NOCONTIGUOUS (default)

 	This qualifier can be used to create the container file contiguous.

30.4    /CYLINDERS

  /CYLINDERS=number_of_cylinders

 	When this qualifier is specified the device will be created with the
 	specified number of cylinders. If not specified, and no /TRACKS
 	and /SECTORS switches are specified, then the device geometry will
 	be calculated by the driver. If it is specified then any other geometry
 	switch will default to 1 when not specified.

 	The maximum number of cylinders is 65535.

 	If SECTORS * TRACKS * CYLINDERS is less than the capacity of the
 	containerfile an error message will be issued.

 	This setting will be stored in the containerfile as metadata (in the
 	fileheader), and if present will be used when the container file is
 	connected (unless /NOAUTOGEOMETRY is specified).

30.5    /ERASE

  /ERASE

 	This qualifier will erase the contents of the container file. For a
 	new file all blocks will be erased, if this qualifier is used in
 	combination with /EXTEND then only the extension of the file will
 	be erased, so the original contents will be preserved in that case.

 	This can be useful if a non-privileged user creates a container file,
 	and at certain blocks on disk is data which resembles blocks recognized
 	by INIT preventing initializing due to lack of VOLPRO privilege.

 	This qualifier is ignored when the container file is placed on a volume
 	with active highwater marking as the filesystem will take care of the
 	erasure in that case.

30.6    /EXTEND

  /EXTEND

 	This qualifier allows for extension of an existing container file.
 	Specify /SIZE=xxx to set the number of blocks to extend the current
 	file to.

30.7    /LBN

  /LBN=nnn

 	Allows placement of the containerfile on a specific LBN. If that LBN
 	is not available an error will be returned. Notice that when
 	/CONTIGUOUS is not specified and the request succeeds the file may be
 	split in multiple segments at the discretion of the XQP, in that case
 	only the first part of the file will be on the specified LBN.

30.8    /LOG

  /LOG
  /NOLOG (default)

 	Shows the complete filespec of the created file after file
 	creation.

30.9    /MAXBLOCKS

  /MAXBLOCKS=number_of_block

 	When this qualifier is specified the specified number of blocks
 	will be the maximum used for the device. It may not be bigger than
 	the allocated size of the container file.

 	This setting will be stored in the containerfile as metadata (in the
 	fileheader), and if present will be used when the container file is
 	connected (unless /NOAUTOGEOMETRY is specified).

30.10    /SECTORS

  /SECTORS=number_of_sectors

 	When this qualifier is specified the device will be created with the
 	specified number of sectors. If not specified, and no /CYLINDERS
 	and /TRACKS switches are specified, then the device geometry will
 	be calculated by the driver. If it is specified then any other geometry
 	switch will default to 1 when not specified.

 	The maximum number of sectors is 255.

 	If SECTORS * TRACKS * CYLINDERS is less than the capacity of the
 	containerfile an error message will be issued.

 	This setting will be stored in the containerfile as metadata (in the
 	fileheader), and if present will be used when the container file is
 	connected (unless /NOAUTOGEOMETRY is specified).

30.11    /SIZE

  /SIZE[=disksize]

 	Specifies the size of the logical disk file. The default size
 	is 512 blocks.

30.12    /TRACKS

  /TRACKS=number_of_tracks

 	When this qualifier is specified the device will be created with the
 	specified number of tracks. If not specified, and no /CYLINDERS
 	and /SECTORS switches are specified, then the device geometry will
 	be calculated by the driver. If it is specified then any other geometry
 	switch will default to 1 when not specified.

 	The maximum number of tracks is 255.

 	If SECTORS * TRACKS * CYLINDERS is less than the capacity of the
 	containerfile an error message will be issued.

 	This setting will be stored in the containerfile as metadata (in the
 	fileheader), and if present will be used when the container file is
 	connected (unless /NOAUTOGEOMETRY is specified).

31  –  DISCONNECT

   LD DISCONNECT [LDAn:]

 	This command will disconnect the Logical Disk device from the
 	Logical Disk file, or from the physical disk.

31.1    /ABORT

 	This qualifier can be used if the normal disconnect command does
 	not disconnect the file (for example, when the file has been
 	deleted). The ABORT qualifier disconnects the Logical Disk as it
 	is (No checks.)

 	When the physical disk is dismounted, and the logical disk
 	is still active,the physical disk will enter a marked for dismount
 	state until the logical disk is no longer connected.
 	The steps to follow if this happens are described below;

 		$ DISMOUNT LDA1:
 		$ LD DISCONNECT/ABORT LDA1:
 		$ DISMOUNT DDan:

 	Be careful using the ABORT qualifier because it disconnects the
 	Logical Disk independent of the state it is in.

31.2    /ALL

 	This qualifier disconnects all LDAn devices.
 	No devicename has to be given in this case.

31.3    /LOG

  /LOG
  /NOLOG (default)

 	Shows the status after the device has been disconnected.

31.4    /TRUNCATE

 	This qualifier will truncate the container file to the highest written
 	block. This can be used to trim excess blocks which may be left over
 	from an extend operation.

32  –  LOAD

   LM LOAD [filespec] LMan:

 	This command will load the specified file on the LM device. If no
 	file is given then the currently connected file will be loaded.

 	This command accepts the same switches as the CONNECT command.

33  –  NOPROTECT

   LD NOPROTECT LDan:

 	This command will remove write-protection of the specified device.

33.1    /PERMANENT

  /PERMANENT

 	Save writelock status in the containerfile so that it may be
 	used during CONNECT (like emulating a 'hardware write protect'
 	button).

34  –  NOWATCH

   LD NOWATCH LDan: [lbn [,lbn...]]

 	This command will remove the specified watchpoint.

34.1    /INDEX

   /INDEX=n

 	This qualifier will remove only the specified watchpoint. This
 	is an alternate way for specifying a watchpoint which is needed
 	for watchpoints without an lbn (IO$_PACKACK watchpoints for example).

35  –  SHOW

   LD SHOW [LDAn:]

 	This command will display information about the status and
 	the connected Logical Disk file or device.

 	It can also be used to display the tracebuffer.

35.1    /ACCURATE

 	This qualifier was used in the past to allow accurate timing
 	measurements. A new method of collecting the timing has been
 	used which always collects the accurate samples, making this
 	qualifier obsolete. It will be ignored.

35.2    /ALL

 	This qualifier will show the status of all LDAn devices on
 	the system. It can not be specified in combination with /TRACE.

 	No devicename must be given in this case.

35.3    /BINARY

 	This qualifier forces the tracebuffer data to be written to
 	the outputfile in binary form. The is required when the outputfile
 	has to be processed later on with /INPUT.

35.4    /BLOCKS

   /BLOCKS=blocks

 	This qualifier specifies the maximum size of a diskfile with
 	tracedata. After this size is reached the current file is closed,
 	and a new one with a higher version is opened. If this qualifier
 	is not specified then there's no limit. If the /VERSION_LIMIT
 	qualifier is specified too, then the excess datafiles will be
 	purged.

35.5    /BYTECOUNT

   /BYTECOUNT [=HEX,DECIMAL] (Default)
   /NOBYTECOUNT

 	This qualifier enables the number of requested bytes to be
 	displayed. It allows either Hex or Decimal format, where
 	decimal is the default.

35.6    /CONTINUOUS

   /CONTINUOUS

 	When this qualifier is specified, the trace buffer of the
 	specified device will be dumped (if there's still data
 	waiting). After that the program will wait for new data to
 	show up, and display that if it's available.

 	To exit this mode one can type either a Control-Z or a
 	Control-C. Another way is to issue a LD TRACE/STOP command
 	from another process.

35.7    /ENTRIES

   /ENTRIES[=(XXX,YYY)]]

 	This qualifier allows selection of the tracebuffer contents.

 	If one parameter is specified, it will be the number of entries
 	from the start of the tracebuffer when positive, or from the end
 	of the tracebuffer when negative.

 	For example, /ENTRIES=10 will show the first 10 entries, while
 	/ENTRIES=-10 will show the last 10 entries.

 	When two parameters are specified, a range of entries will be shown.
 	For example, /ENTRIES=(30,50) will show all entries from entry
 	30 through entry 50 inclusive.

 	The default of -10 will show the last 10 entries.

35.8    /FDT

 	This qualifier allows FDT routine access to be displayed from the
 	tracebuffer, provided that it was enabled with the setup of the trace.

 	This function is only supported on Alpha.

35.9    /FULL

  /FULL
  /NOFULL (default)

 	This qualifier will show all attributes of the selected LD device,
 	like sharing, connection type etc.

35.10    /FUNCTION

   /FUNCTION[=Keyword]
   /NOFUNCTION

 	This qualifier enables the Function code of the request to be
 	displayed.

 	An optional keyword may be given:

 	FUNCTION=TEXT		Displays the translated I/O request function
 				along with eventual functioncode modifiers.
 				Function bits which could not be translated
 				will be shown in hexadecimal format.

 	FUNCTION=HEX		Displays the I/O request function code
 				in hexadecimal format.

 	The default is /FUNCTION=TEXT.

35.11    /HEADER

   /HEADER (Default)
   /NOHEADER

 	This qualifier enables a header to be displayed before showing
 	tracedata. The header contains a timestamp of when the trace
 	was made, a devicename of the LD-device involved and the nodename
 	of the system.

35.12    /NUMBER

   /NUMBER
   /NONUMBER (Default)

 	This qualifier enables entrynumbers to be displayed.

35.13    /INDEX

   /INDEX=n

 	This qualifier enables watchpoint display by index. The parameter
 	is the watchpoint number as seen by the driver.

35.14    /INPUT

   /INPUT[=filespec]

 	This qualifier forces input tracedata to be read from the specified
 	file. The default filename is LD_TRACE.DAT.

35.15    /IOSB

   /IOSB[=Keyword]
   /NOIOSB

 	This qualifier enables the I/O status block of the request
 	to be displayed.

 	An optional keyword may be given:

 	IOSB=TEXT		Displays the translated errortext from
 				the iosb.

 	IOSB=HEX		Displays the first longword of the iosb
 				in hexadecimal format.

 	IOSB=LONGHEX		Displays both longwords of the iosb in
 				hexadecimal format.

 	IOSB=COMBINATION	Displays the translated error text from
 				the iosb, as well as the returned count in
 				the upper first word of the iosb.

 	The default is /IOSB=TEXT.

35.16    /LBN

   /LBN [=HEX,DECIMAL] (Default)
   /NOLBN

 	This qualifier enables to Logical blocknumber of the request
 	to be displayed. It allows either Hex or Decimal format, where
 	decimal is the default.

35.17    /OUTPUT

   /OUTPUT[=filespec]

 	This qualifier forces output of the tracedata data to be written
 	to the specified file. The default output will be readable ASCII,
 	unless /BINARY was also specified. In that case a binary file will
 	be written which can be processed at a later time with /INPUT.

 	The default filename is LD_TRACE.LOG for normal ASCII output, and
 	LD_TRACE.DAT for binary output.

35.18    /PID

   /PID (Default)
   /NOPID

 	This qualifier enables to Process Identification of the requesting
 	process to be displayed.

35.19    /RESET

 	When this qualifier is specified in combination with /TRACE,
 	the tracebuffer will be dumped and the buffer will be reset
 	afterwards. This is an atomic operation, such that no bufferdata
 	will be lost.

35.20    /STATUS

 	This qualifier will show the currently allocated size of the
 	tracebuffer, as well as the number of entries in use. It must
 	be used in combination with /TRACE.

35.21    /SYMBOL

 	This qualifier will set the LD unit number in DCL symbol LD_UNIT,
 	and the container file specification in the symbol LD_CONTAINER.

 	When used with tapes (LM) the symbols will be LM_UNIT and
 	LM_CONTAINER.

35.22    /TIMESTAMP

   /TIMESTAMP[=Keyword]
   /NOTIMESTAMP

 	This qualifier enables the Start-time as well as the End-time
 	or the Elapsed time of an I/O request to be displayed.

 	An optional keyword may be given:

 	TIMESTAMP=ABSOLUTE	Displays the Start-time of the request
 				as well as the End-time in absolute format.

 	TIMESTAMP=ELAPSED	Displays the Elapsed time of the request.

 	TIMESTAMP=COMBINATION	Displays the End-time of the request
 				in absolute format as well as the Elapsed
 				time of the request.

 	TIMESTAMP=DELTA		Displays the elapsed time between the current
 				request and the previous request. If the
 				end-time of the previous request was after
 				the end-time of the current request (out of
 				order I/O completion) the line will be preceded
 				with a dash.

 	TIMESTAMP=START		Displays Start-time of the request in absolute
 				format.

 	TIMESTAMP=END		Displays End-time of the request in absolute
 				format.

 	The default is /TIMESTAMP=COMBINATION.

35.23    /TRACE

 	When this qualifier is specified, the trace buffer of the
 	specified device will be dumped.

35.24    /VERSION_LIMIT

   /VERSION_LIMIT=limit

 	This qualifier can be used when a continuous trace is made
 	to control the number of concurrent datafiles on disk.
 	Anytime the datafilesize exceeds the size specified with
 	/BLOCKS a new file will be created after the old file is
 	closed. If there are more files available than the number
 	specified with this qualifier, they will be purged up till
 	the specified limit.

35.25    /WARNINGS

   /WARNINGS (Default)
   /NOWARNINGS

 	When this qualifier is specified a warning will be given
 	anytime when there are tracerecords lost. The number of lost
 	records will be displayed. /NOWARNINGS will suppress these
 	messages.

35.26    /WATCH

 	When this qualifier is specified, the currently set watchpoints
 	of the specified device will be dumped.

36  –  TRACE

   LD TRACE LDan:

 	This command initializes the trace buffer for the specified
 	device. This buffer will log the following data for every
 	I/O request:

 	  o	Process ID
 	  o	Logical block number
 	  o	I/O request size
 	  o	I/O Function code
 	  o	I/O status block
 	  o	Timestamp from the start of the I/O request
 	  o	Timestamp from the end of the I/O request

 	The default size is 512 entries, the maximum is as big
 	as pool will allow.

 	The allocated size from pool will be:

 		PoolSize (in Bytes) = (N * 88) + 12

 	where N equals the number of entries.

36.1    /ACCURATE

 	This qualifier was used in the past to allow accurate timing
 	measurements. A new method of collecting the timing has been
 	used which always collects the accurate samples, making this
 	qualifier obsolete. It will be ignored.

36.2    /ALL

 	The first use of this qualifier is to enable all data to be
 	logged for tape devices. This means that besides the tape I/O
 	also the underlaying requests to disk are logged.

 	The second use is in combination with /STOP to stop all
 	processes which are currently tracing data for all LD devices.

36.3    /FDT

 	Allows FDT routine access to be traced. This is a form of
 	preprocessing which every I/O request goes through. This qualifier
 	causes usage of additional entries in the tracebuffer for almost
 	every I/O request, hence it is made optional.

 	This qualifier will only work on Alpha.

36.4    /RESET

 	When this qualifier is specified the tracebuffer will be reset.
 	All data currently in the buffer will be lost.

36.5    /SIZE

  /SIZE[=number_of_entries]

 	Specifies the size of the tracebuffer. The default size
 	is 512 entries.

36.6    /STOP

 	This qualifier can be used to stop another process which has
 	issued a SHOW/TRACE/CONTINUOUS command. The devicename must
 	be specified (unless /ALL was given). If the trace was started
 	by a process in the same UIC group, GROUP privilege is needed.
 	If the process belongs to another UIC group, WORLD privilege
 	is needed.

37  –  NOTRACE

   LD NOTRACE LDan:

 	This command deallocates the tracebuffer. All data currently
 	available in the buffer will be lost.

38  –  PROTECT

   LD PROTECT LDan:

 	This command will write-protect the specified device.

38.1    /PERMANENT

  /PERMANENT

 	Save writelock status in the containerfile so that it may be
 	used during CONNECT (like emulating a 'hardware write protect'
 	button).

39  –  SWITCH

   LM SWITCH filespec LMan:

 	This command allows volume switching for backup. The existing virtual
 	tapeunit is re-used with a the new container file. The old file will
 	be disconencted.

 	This command accepts the same switches as the CONNECT command.

40  –  UNLOAD

   LM UNLOAD LMan:

 	This command will unload the specified file from the LM device. This
 	is different from LM DISCONNECT in that the unit will be kept available
 	for subsequent reuse with the LM LOAD command.

40.1    /LOG

  /LOG
  /NOLOG (default)

 	Shows the status after the device has been unloaded.

40.2    /TRUNCATE

 	This qualifier will truncate the container file to the highest written
 	block. This can be used to trim excess blocks which may be left over
 	from an extend operation.

41  –  WATCH

   LD WATCH LDan: lbn [,lbn...]

 	This command will set a watchpoint on a virtual or logical
 	blocknumber on the specified device. The lbn is ignored on
 	I/O functions which don't need an lbn (IO$_PACKACK for
 	example).

 	This makes it possible to let the driver take some actions
 	dependant of which lbn was accessed with a specified function-
 	code.

41.1    /FUNCTION

   /FUNCTION[=Keyword]

 	This qualifier specifies for which I/O function the watchpoint is set.

 	An optional keyword may be given:

 	FUNCTION=ALL		The watchpoint is set for all I/O functions

 	FUNCTION=READ		The watchpoint is set for IO$_READPBLK

 	FUNCTION=WRITE		The watchpoint is set for IO$_WRITEPBLK

 	FUNCTION=CODE=number	The watchpoint is set for the specified
 				I/O function code

 	The default is /FUNCTION=READ

41.2    /ACTION

   /ACTION[=Keyword]

 	This qualifier specifies the action to be performed when a valid
 	watchpoint is encountered. To be able to set a watchpoint one must
 	have either CMKRNL privilege, or be the owner of the device.

 	A watchpoint may have one action only: CRASH, ERROR or SUSPEND. An
 	exception is OPCOM, which may be specified in addition to any other
 	action for a specific watchpoint.

 	An optional keyword may be given:

 	ACTION=CRASH		This action will crash the system when a
 				matching lbn and function are found. Usage
 				of this keyword needs CMKRNL privilege.
 				The bugcheck type will be RSVD_LP.

 	ACTION=ERROR[=code]	This action will return a user-specified
 				errorcode when a matching lbn and function
 				are found. When the code is not specified
 				SS$_BUGCHECK will be returned.

 	ACTION=SUSPEND		This action will suspend the thread when a
 				matching lbn and function are found. This
 				enables one to look at the system with SDA
 				for further investigation. LD SHOW/WATCH will
 				show all processes waiting for a specific
 				watchpoint, while LD WATCH/RESUME will resume
 				the thread.

 	ACTION=OPCOM		This action will display an OPCOM message when
 				a matching lbn and function are found. The
 				message includes the process-id and the
 				imagename doing the request, the devicename,
 				the functioncode and the lbn. If the watchpoint
 				was a virtual one (/FILE specified) then it
 				will show the vbn as well as the file-id of
 				the corresponding file.

 	The default is /ACTION=ERROR=676 (SS$_BUGCHECK)

41.3    /FILE

   /FILE=filespec

 	This qualifier will enable a virtual watchpoint on the specified
 	file. The parameter(s) will then be virtual blocknumbers of the
 	file.

41.4    /RESUME

   /RESUME

 	This qualifier resumes a suspended watchpoint. The parameter is the
 	watchpoint to resume. An alternate way to resume a watchpoint is
 	by /INDEX. If no parameter is specified then all suspended watchpoints
 	will be resumed.

41.5    /INDEX

   /INDEX=n

 	This qualifier enables watchpoint resume by index. The parameter
 	is the watchpoint number to resume.

42  –  VERSION

 	This command will show the current version of the LD utility and
 	the driver.

43  –  Examples

 	A couple of examples of some of LDdriver's capabilities.

43.1  –  Version

 	Show the version:

 	$ ld version
 	%LD-I-VERSION, LD version V9.0, module X-9 built on Oct 28 2006 15:19:29
 	-LD-I-DRIVERVERSION, Driver version: 28-OCT-2006 15:19:59.26 (MON version)
 	-LD-I-SYSINFO, Node: THEBAT, Hardware: hp AlphaServer DS20L 833 MHz, VMS version: V8.3

43.2  –  WatchPoint

 	An example of watchpoint usage:

 	$ LD CREATE TMP
 	$ LD CONNECT/LOG TMP LDA1
 	%LD-I-CONNECTED, Device THEBUG$LDA1: is connected to $8$DIA0:[USERS.VDBURG.LD]TMP.DSK;1
 	$ INIT LDA1: TEST
 	$ MOUNT/SYSTEM LDA1: TEST
 	%MOUNT-I-MOUNTED, TEST         mounted on _THEBUG$LDA1: (THEBUG)
 	$ COPY/ALLOC=10 NL: LDA1:[000000]JUNK.DAT
 	$ SET FILE/END LDA1:[000000]JUNK.DAT
 	$ LD WATCH LDA1 5/FILE=LDA1:[000000]JUNK.DAT/ACTION=ERROR=%X2C
 	$ LD WATCH LDA1 5/FILE=LDA1:[000000]JUNK.DAT/ACTION=OPCOM
 	$ LD WATCH LDA1 1/ACTION=SUSPEND
 	$ LD SHOW/WATCH LDA1:
 	Index LBN     Action     Function         Error return code
 	--------------------------------------------------------------------
 	             THEBUG$LDA1:[000000]JUNK.DAT;1:
 	 1        5  Opcom     READPBLK
 	             THEBUG$LDA1:[000000]JUNK.DAT;1:
 	 2        5  Error     READPBLK             002C (ABORT)
 	 3        1  Suspend   READPBLK
 	$ DUMP LDA1:[000000]JUNK.DAT/BLOCK=(START=5,COUNT=1)
 	%%%%%%%%%%%  OPCOM  28-FEB-1994 14:38:17.90  %%%%%%%%%%%
 	Message from user VDBURG on THEBUG
 	***** LDdriver detected VBN watchpoint access *****
 	PID:      2020006A
 	Image:    DUMP
 	Device:   THEBUG$LDA1:
 	Function: 000C
 	VBN:   	  5
 	File id:  (11,1,0)

 	%DUMP-E-READERR, error reading LDA1:[000000]JUNK.DAT;1
 	-SYSTEM-F-ABORT, abort
 	$ SPAWN/NOWAIT/INPUT=NL: DUMP/BLOCK=(START=1,COUNT=1) LDA1:
 	%DCL-S-SPAWNED, process VDBURG_1 spawned
 	$ WAIT 0:0:1
 	$ LD SHOW/WATCH LDA1:
 	Index LBN     Action     Function         Error return code
 	--------------------------------------------------------------------
 	             THEBUG$LDA1:[000000]JUNK.DAT;1:
 	 1        5  Opcom     READPBLK
 	             THEBUG$LDA1:[000000]JUNK.DAT;1:
 	 2        5  Error     READPBLK             002C (ABORT)
 	 3        1  Suspend   READPBLK
 	             Suspended process: 202000E7
 	$ LD WATCH/RESUME LDA1:

 	Dump of device LDA1: on 28-FEB-1994 14:38:20.47

 	Logical block number 1 (00000001), 512 (0200) bytes

 	 00010201 00000018 00000004 00000001 ................ 000000
 	 00000080 00000007 00050004 00030002 ................ 000010
 	 00400040 00000000 00000000 000A0001 ............@.@. 000020
 	.
 	.
 	.

43.3  –  MountVerification

 	An example of how to put a disk into Mountverification:

 	$ ld create/nobackup tempdisk.dsk
 	$ ld connect/log/symbol tempdisk.dsk
 	%LD-I-CONNECTED, Connected $7$LDA7: to $7$DKC0:[LD]TEMPDISK.DSK;1
 	$ init/nohigh/system lda7: test
 	$ mount lda7: test
 	%MOUNT-I-MOUNTED, TEST mounted on _$7$LDA7: (UTRI64)
 	$ ld trace lda7:
 	$ ld watch lda7: 1/action=error=%x84/function=code=%x0808
 	$ ld watch lda7: 10/action=error=%x84/function=read
 	$ ld watch lda7: 10/action=opcom/function=read
 	$ ld show/watch lda7:
 	Index LBN     Action     Function         Error return code
 	--------------------------------------------------------------------
 	 1           Error     PACKACK|INHERLOG     0084 (DEVOFFLINE)
 	 2       10  Opcom     READPBLK
 	 3       10  Error     READPBLK             0084 (DEVOFFLINE)
 	$ reply/enable/temp
 	%%%%%%%%%%%  OPCOM  20-DEC-2004 22:24:33.86  %%%%%%%%%%%
 	Operator _UTRI64$VTA3: has been enabled, username VDBURG

 	%%%%%%%%%%%  OPCOM  20-DEC-2004 22:24:33.86  %%%%%%%%%%%
 	Operator status for operator _UTRI64$VTA3:
 	CENTRAL, PRINTER, TAPES, DISKS, DEVICES, CARDS, NETWORK, CLUSTER, SECURITY,
 	LICENSE, OPER1, OPER2, OPER3, OPER4, OPER5, OPER6, OPER7, OPER8, OPER9, OPER10,
 	OPER11, OPER12

 	$ spawn/nowait/input=nl: dump lda7:/block=(start=10,count=1)
 	%DCL-S-SPAWNED, process VDBURG_121 spawned
 	$ inquire dummy "Press return to continue
 	Press return to continue:
 	%%%%%%%%%%%  OPCOM  20-DEC-2004 22:24:33.90  %%%%%%%%%%%
 	Device $7$LDA7: (UTRI64) is offline.
 	Mount verification is in progress.

 	Press return to continue:
 	%%%%%%%%%%%  OPCOM  20-DEC-2004 22:24:33.90  %%%%%%%%%%%
 	Message from user VDBURG on UTRI64
 	***** LDdriver detected LBN watchpoint access *****
 	PID:      5F000428
 	Image:    DCL
 	Device:   $7$LDA7: (UTRI64)
 	Function: 000C
 	LBN:      10

 	Press return to continue:

 	$ ld nowatch lda7:
 	$ ld show/trace lda7:
 	         I/O trace for device $7$LDA7:
 	    20-DEC-2004 22:24:4.66 on node UTRI64::

 	Start Time  Elaps   Pid        Lbn     Bytes  Iosb    Function
 	-------------------------------------------------------------
 	22:24:33.90 00.00 5F000428         10    512 DEVOFFLINE READPBLK
 	22:24:33.90 00.00 00000000          0      0 DEVOFFLINE PACKACK|INHERLOG
 	22:24:34.29 00.00 00000000          0      0 DEVOFFLINE PACKACK|INHERLOG
 	22:24:35.29 00.00 00000000          0      0 DEVOFFLINE PACKACK|INHERLOG
 	22:24:36.29 00.00 00000000          0      0 DEVOFFLINE PACKACK|INHERLOG
 	22:24:37.29 00.00 00000000          0      0 DEVOFFLINE PACKACK|INHERLOG
 	22:24:38.29 00.00 00000000          0      0 DEVOFFLINE PACKACK|INHERLOG
 	22:24:39.29 00.00 00000000          0      0 DEVOFFLINE PACKACK|INHERLOG
 	22:24:40.29 00.00 00000000          0      0 DEVOFFLINE PACKACK|INHERLOG
 	$ reply/disable
 	%%%%%%%%%%%  OPCOM  20-DEC-204 22:24:40.68  %%%%%%%%%%%
 	Operator _UTRI64$VTA3: has been disabled, username VDBURG

 	$ wait 0:0:1

 	Dump of device LDA7: on 20-DEC-2004 22:24:33.90

 	Logical block number 10 (0000000A), 512 (0200) bytes

 	 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 ................................ 000000
 	 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 ................................ 000020
 	 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 ................................ 000040
 	 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 ................................ 000060
 	 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 ................................ 000080
 	 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 ................................ 0000A0
 	 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 ................................ 0000C0
 	 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 ................................ 0000E0
 	 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 ................................ 000100
 	 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 ................................ 000120
 	 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 ................................ 000140
 	 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 ................................ 000160
 	 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 ................................ 000180
 	 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 ................................ 0001A0
 	 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 ................................ 0001C0
 	 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 ................................ 0001E0
 	$ dism lda7:
 	$ ld disc lda7:
 	$ delete/nolog/noconf tempdisk.dsk;

43.4  –  BigDisk

 	How to create a big disk:

 	$! create a bigggg disk
 	$!
 	$!  Volset             DPA           DSA           LDA           Label
 	$!---------------------------------------------------------------------
 	$!                                                 LDA1
 	$!                                   DSA10                       ST0000000000
 	$!                                                 LDA2
 	$!                     DPA20
 	$!                                                 LDA3
 	$!                                   DSA11                       ST0000000001
 	$!                                                 LDA4
 	$!  BIGDISK
 	$!                                                 LDA5
 	$!                                   DSA12                       ST1000000000
 	$!                                                 LDA6
 	$!                     DPA21
 	$!                                                 LDA7
 	$!                                   DSA13                       ST1000000001
 	$!                                                 LDA8
 	$!
 	$ size = 1000000
 	$ ld create/log/nobackup/size=1000000 $7$dkc0:[ld]ld1.dsk
 	%LD-I-CREATED, File $7$DKC0:[LD]LD1.DSK;2 created
 	$ ld create/log/nobackup/size=1000000 $7$dkc0:[ld]ld2.dsk
 	%LD-I-CREATED, File $7$DKC0:[LD]LD2.DSK;2 created
 	$ ld create/log/nobackup/size=1000000 $7$dkc0:[ld]ld3.dsk
 	%LD-I-CREATED, File $7$DKC0:[LD]LD3.DSK;2 created
 	$ ld create/log/nobackup/size=1000000 $7$dkc0:[ld]ld4.dsk
 	%LD-I-CREATED, File $7$DKC0:[LD]LD4.DSK;2 created
 	$ ld create/log/nobackup/size=1000000 $7$dkc0:[ld]ld5.dsk
 	%LD-I-CREATED, File $7$DKC0:[LD]LD5.DSK;2 created
 	$ ld create/log/nobackup/size=1000000 $7$dkc0:[ld]ld6.dsk
 	%LD-I-CREATED, File $7$DKC0:[LD]LD6.DSK;2 created
 	$ ld create/log/nobackup/size=1000000 $7$dkc0:[ld]ld7.dsk
 	%LD-I-CREATED, File $7$DKC0:[LD]LD7.DSK;2 created
 	$ ld create/log/nobackup/size=1000000 $7$dkc0:[ld]ld8.dsk
 	%LD-I-CREATED, File $7$DKC0:[LD]LD8.DSK;2 created
 	$ ld conn/log $7$dkc0:[ld]ld1.dsk lda1
 	%LD-I-CONNECTED, Connected $7$LDA1: to $7$DKC0:[LD]LD1.DSK;1
 	$ ld conn/log $7$dkc0:[ld]ld2.dsk lda2
 	%LD-I-CONNECTED, Connected $7$LDA2: to $7$DKC0:[LD]LD2.DSK;1
 	$ ld conn/log $7$dkc0:[ld]ld3.dsk lda3
 	%LD-I-CONNECTED, Connected $7$LDA3: to $7$DKC0:[LD]LD3.DSK;1
 	$ ld conn/log $7$dkc0:[ld]ld4.dsk lda4
 	%LD-I-CONNECTED, Connected $7$LDA4: to $7$DKC0:[LD]LD4.DSK;1
 	$ ld conn/log $7$dkc0:[ld]ld5.dsk lda5
 	%LD-I-CONNECTED, Connected $7$LDA5: to $7$DKC0:[LD]LD5.DSK;1
 	$ ld conn/log $7$dkc0:[ld]ld6.dsk lda6
 	%LD-I-CONNECTED, Connected $7$LDA6: to $7$DKC0:[LD]LD6.DSK;1
 	$ ld conn/log $7$dkc0:[ld]ld7.dsk lda7
 	%LD-I-CONNECTED, Connected $7$LDA7: to $7$DKC0:[LD]LD7.DSK;1
 	$ ld conn/log $7$dkc0:[ld]ld8.dsk lda8
 	%LD-I-CONNECTED, Connected $7$LDA8: to $7$DKC0:[LD]LD8.DSK;1
 	$ ld trace lda1
 	$ ld trace lda2
 	$ ld trace lda3
 	$ ld trace lda4
 	$ ld trace lda5
 	$ ld trace lda6
 	$ ld trace lda7
 	$ ld trace lda8
 	$ ld show/all
 	%LD-I-CONNECTED, Connected _$7$LDA1: to $7$DKC0:[LD]LD1.DSK;1
 	%LD-I-CONNECTED, Connected _$7$LDA2: to $7$DKC0:[LD]LD2.DSK;1
 	%LD-I-CONNECTED, Connected _$7$LDA3: to $7$DKC0:[LD]LD3.DSK;1
 	%LD-I-CONNECTED, Connected _$7$LDA4: to $7$DKC0:[LD]LD4.DSK;1
 	%LD-I-CONNECTED, Connected _$7$LDA5: to $7$DKC0:[LD]LD5.DSK;1
 	%LD-I-CONNECTED, Connected _$7$LDA6: to $7$DKC0:[LD]LD6.DSK;1
 	%LD-I-CONNECTED, Connected _$7$LDA7: to $7$DKC0:[LD]LD7.DSK;1
 	%LD-I-CONNECTED, Connected _$7$LDA8: to $7$DKC0:[LD]LD8.DSK;1
 	$ raid init/noconfirm/raid_level=0 st0 lda1,lda3
 	%RAID-I-PRTCREATED, Array partition 1 created: 1995112 blocks
 	$ raid init/noconfirm/raid_level=0 st1 lda5,lda7
 	%RAID-I-PRTCREATED, Array partition 1 created: 1995112 blocks
 	$ raid bind st0 lda1,lda3/shadow/use_shadow=(dsa10,dsa11) dpa20
 	%RAID-I-ISBOUND, unit _DSA10: is bound as a member of array ST0
 	%RAID-I-INUSE, unit _$7$LDA1: is a shadow set member of _DSA10:
 	%RAID-I-ISBOUND, unit _DSA11: is bound as a member of array ST0
 	%RAID-I-INUSE, unit _$7$LDA3: is a shadow set member of _DSA11:
 	%RAID-I-VUCREATE, virtual unit DPA0020: was created for partition 1 on ST0
 	$ raid bind st1 lda5,lda7/shadow/use_shadow=(dsa12,dsa13) dpa21
 	%RAID-I-ISBOUND, unit _DSA12: is bound as a member of array ST1
 	%RAID-I-INUSE, unit _$7$LDA5: is a shadow set member of _DSA12:
 	%RAID-I-ISBOUND, unit _DSA13: is bound as a member of array ST1
 	%RAID-I-INUSE, unit _$7$LDA7: is a shadow set member of _DSA13:
 	%RAID-I-VUCREATE, virtual unit DPA0021: was created for partition 1 on ST1
 	$ mount/system dsa10:/shadow=_$7$LDA2: st0000000000
 	%MOUNT-I-MOUNTED, ST0000000000 mounted on _DSA10:
 	%MOUNT-I-SHDWMEMCOPY, _$7$LDA2: (UTRA41) added to the shadow set with a copy operation
 	%MOUNT-I-ISAMBR, _$7$LDA1: (UTRA41) is a member of the shadow set
 	$ mount/system dsa11:/shadow=_$7$LDA4: st0000000001
 	%MOUNT-I-MOUNTED, ST0000000001 mounted on _DSA11:
 	%MOUNT-I-SHDWMEMCOPY, _$7$LDA4: (UTRA41) added to the shadow set with a copy operation
 	%MOUNT-I-ISAMBR, _$7$LDA3: (UTRA41) is a member of the shadow set
 	$ mount/system dsa12:/shadow=_$7$LDA6: st1000000000
 	%MOUNT-I-MOUNTED, ST1000000000 mounted on _DSA12:
 	%MOUNT-I-SHDWMEMCOPY, _$7$LDA6: (UTRA41) added to the shadow set with a copy operation
 	%MOUNT-I-ISAMBR, _$7$LDA5: (UTRA41) is a member of the shadow set
 	$ mount/system dsa13:/shadow=_$7$LDA8: st1000000001
 	%MOUNT-I-MOUNTED, ST1000000001 mounted on _DSA13:
 	%MOUNT-I-SHDWMEMCOPY, _$7$LDA8: (UTRA41) added to the shadow set with a copy operation
 	%MOUNT-I-ISAMBR, _$7$LDA7: (UTRA41) is a member of the shadow set
 	$ init/nohig dpa20: vset0
 	$ init/nohig dpa21: vset1
 	$ mount/system/bind=bigdisk dpa20,dpa21: vset0,vset1 bigdisk
 	%MOUNT-I-MOUNTED, VSET0 mounted on _DPA20: (UTRA41)
 	%MOUNT-I-MOUNTED, VSET1 mounted on _DPA21: (UTRA41)
 	$ ld show/trace/status lda1
 	%LD-I-STATUS, Device $7$LDA1: has a tracebuffer of 512 entries (512 valid records)
 	$ ld show/trace/status lda2
 	%LD-I-STATUS, Device $7$LDA2: has a tracebuffer of 512 entries (512 valid records)
 	$ ld show/trace/status lda3
 	%LD-I-STATUS, Device $7$LDA3: has a tracebuffer of 512 entries (512 valid records)
 	$ ld show/trace/status lda4
 	%LD-I-STATUS, Device $7$LDA4: has a tracebuffer of 512 entries (512 valid records)
 	$ ld show/trace/status lda5
 	%LD-I-STATUS, Device $7$LDA5: has a tracebuffer of 512 entries (512 valid records)
 	$ ld show/trace/status lda6
 	%LD-I-STATUS, Device $7$LDA6: has a tracebuffer of 512 entries (512 valid records)
 	$ ld show/trace/status lda7
 	%LD-I-STATUS, Device $7$LDA7: has a tracebuffer of 512 entries (512 valid records)
 	$ ld show/trace/status lda8
 	%LD-I-STATUS, Device $7$LDA8: has a tracebuffer of 512 entries (512 valid records)
 	$ sh dev ld

 	Device                  Device           Error    Volume         Free  Trans Mnt
 	 Name                   Status           Count     Label        Blocks Count Cnt
 	$7$LDA0:      (UTRA41)  Online               0
 	$7$LDA1:      (UTRA41)  ShadowSetMember      0  (member of DSA10:)
 	$7$LDA2:      (UTRA41)  ShadowCopying        0  (copy trgt DSA10:   6% copied)
 	$7$LDA3:      (UTRA41)  ShadowSetMember      0  (member of DSA11:)
 	$7$LDA4:      (UTRA41)  ShadowCopying        0  (copy trgt DSA11:   4% copied)
 	$7$LDA5:      (UTRA41)  ShadowSetMember      0  (member of DSA12:)
 	$7$LDA6:      (UTRA41)  ShadowCopying        0  (copy trgt DSA12:   3% copied)
 	$7$LDA7:      (UTRA41)  ShadowSetMember      0  (member of DSA13:)
 	$7$LDA8:      (UTRA41)  ShadowCopying        0  (copy trgt DSA13:   1% copied)
 	$ sh dev dsa10

 	Device                  Device           Error    Volume         Free  Trans Mnt
 	 Name                   Status           Count     Label        Blocks Count Cnt
 	DSA10:                  Mounted              0  ST0000000000         0     2   1
 	$7$LDA1:      (UTRA41)  ShadowSetMember      0  (member of DSA10:)
 	$7$LDA2:      (UTRA41)  ShadowCopying        0  (copy trgt DSA10:   6% copied)
 	$ sh dev dsa11

 	Device                  Device           Error    Volume         Free  Trans Mnt
 	 Name                   Status           Count     Label        Blocks Count Cnt
 	DSA11:                  Mounted              0  ST0000000001         0     2   1
 	$7$LDA3:      (UTRA41)  ShadowSetMember      0  (member of DSA11:)
 	$7$LDA4:      (UTRA41)  ShadowCopying        0  (copy trgt DSA11:   4% copied)
 	$ sh dev dsa12

 	Device                  Device           Error    Volume         Free  Trans Mnt
 	 Name                   Status           Count     Label        Blocks Count Cnt
 	DSA12:                  Mounted              0  ST1000000000         0     2   1
 	$7$LDA5:      (UTRA41)  ShadowSetMember      0  (member of DSA12:)
 	$7$LDA6:      (UTRA41)  ShadowCopying        0  (copy trgt DSA12:   3% copied)
 	$ sh dev dsa13

 	Device                  Device           Error    Volume         Free  Trans Mnt
 	 Name                   Status           Count     Label        Blocks Count Cnt
 	DSA13:                  Mounted              0  ST1000000001         0     2   1
 	$7$LDA7:      (UTRA41)  ShadowSetMember      0  (member of DSA13:)
 	$7$LDA8:      (UTRA41)  ShadowCopying        0  (copy trgt DSA13:   1% copied)
 	$ sh dev bigdisk

 	Device                  Device           Error    Volume         Free  Trans Mnt
 	 Name                   Status           Count     Label        Blocks Count Cnt
 	DPA20:        (UTRA41)  Mounted              0  VSET0          1994928     1   1
 	DPA21:        (UTRA41)  Mounted              0  VSET1          1994944     1   1

43.5  –  IoTrace

 	$ ld create trace.dsk
 	$ ld connect trace lda1
 	$ ld trace lda1
 	$ init/nohigh/sys lda1 trace
 	$ mount/sys lda1 trace
 	%MOUNT-I-MOUNTED, TRACE mounted on _$3$LDA1: (THEBAT)
 	$ ld show/trace lda1
 	         I/O trace for device $3$LDA1:
 	    28-OCT-2006 16:05:18.59 on node THEBAT

 	End Time           Elaps    Pid       Lbn     Bytes  Iosb    Function
 	---------------------------------------------------------------------
 	16:05:10.771403 00.007325 20C00430          5    512 NORMAL  READPBLK|EXFUNC
 	16:05:10.779412 00.007851 20C00430          5    512 NORMAL  WRITEPBLK|EXFUNC|DATACHECK
 	16:05:10.779547 00.000000 20C00430          0      0 NORMAL  UNLOAD
 	16:05:12.603531 00.000000 20C00430          0      0 NORMAL  PACKACK
 	16:05:12.603611 00.000000 20C00430          0      0 NORMAL  PACKACK
 	16:05:12.603677 00.000000 20C00430          0      0 NORMAL  PACKACK|INHERLOG
 	16:05:12.603738 00.000000 20C00430          0      0 NORMAL  PACKACK
 	16:05:12.609520 00.005659 20C00430          1    512 NORMAL  READPBLK
 	16:05:12.613568 00.003897 20C00430          2    512 NORMAL  WRITEPBLK
 	16:05:12.617556 00.003860 20C00430          2    512 NORMAL  WRITEPBLK
 	16:05:12.625511 00.007764 20C00430          0    512 NORMAL  WRITEPBLK|DATACHECK
 	16:05:12.634013 00.008312 20C00430        511    512 NORMAL  WRITEPBLK|DATACHECK
 	16:05:12.641501 00.007352 20C00430          1    512 NORMAL  WRITEPBLK|DATACHECK
 	16:05:12.649989 00.008359 20C00430        510    512 NORMAL  WRITEPBLK|DATACHECK
 	16:05:12.657492 00.007372 20C00430          2    512 NORMAL  WRITEPBLK|DATACHECK
 	16:05:12.665966 00.008345 20C00430        509    512 NORMAL  WRITEPBLK|DATACHECK
 	16:05:12.673485 00.007391 20C00430          3    512 NORMAL  WRITEPBLK|DATACHECK
 	16:05:12.681940 00.008326 20C00430        508    512 NORMAL  WRITEPBLK|DATACHECK
 	16:05:12.689473 00.007403 20C00430          4    512 NORMAL  WRITEPBLK|DATACHECK
 	16:05:12.697914 00.008315 20C00430        507    512 NORMAL  WRITEPBLK|DATACHECK
 	16:05:12.705465 00.007424 20C00430          5    512 NORMAL  WRITEPBLK|DATACHECK
 	16:05:12.713893 00.008302 20C00430        506    512 NORMAL  WRITEPBLK|DATACHECK
 	16:05:12.721462 00.007438 20C00430          6    512 NORMAL  WRITEPBLK|DATACHECK
 	16:05:12.729867 00.008270 20C00430        505    512 NORMAL  WRITEPBLK|DATACHECK
 	16:05:12.737453 00.007457 20C00430          7    512 NORMAL  WRITEPBLK|DATACHECK
 	16:05:12.745845 00.008263 20C00430        504    512 NORMAL  WRITEPBLK|DATACHECK
 	16:05:12.753440 00.007465 20C00430          8    512 NORMAL  WRITEPBLK|DATACHECK
 	16:05:12.761821 00.008252 20C00430        503    512 NORMAL  WRITEPBLK|DATACHECK
 	16:05:12.769434 00.007482 20C00430          9    512 NORMAL  WRITEPBLK|DATACHECK
 	16:05:12.777799 00.008237 20C00430        502    512 NORMAL  WRITEPBLK|DATACHECK
 	16:05:12.785427 00.007485 20C00430         10    512 NORMAL  WRITEPBLK|DATACHECK
 	16:05:12.793771 00.008216 20C00430        501    512 NORMAL  WRITEPBLK|DATACHECK
 	16:05:12.801411 00.007511 20C00430         11    512 NORMAL  WRITEPBLK|DATACHECK
 	16:05:12.809750 00.008207 20C00430        500    512 NORMAL  WRITEPBLK|DATACHECK
 	16:05:12.817404 00.007528 20C00430         12    512 NORMAL  WRITEPBLK|DATACHECK
 	16:05:12.825724 00.008193 20C00430        499    512 NORMAL  WRITEPBLK|DATACHECK
 	16:05:12.833398 00.007527 20C00430         13    512 NORMAL  WRITEPBLK|DATACHECK
 	16:05:12.841704 00.008176 20C00430        498    512 NORMAL  WRITEPBLK|DATACHECK
 	16:05:12.849387 00.007553 20C00430         14    512 NORMAL  WRITEPBLK|DATACHECK
 	16:05:12.857677 00.008156 20C00430        497    512 NORMAL  WRITEPBLK|DATACHECK
 	16:05:12.865378 00.007571 20C00430         15    512 NORMAL  WRITEPBLK|DATACHECK
 	16:05:12.873652 00.008138 20C00430        496    512 NORMAL  WRITEPBLK|DATACHECK
 	16:05:12.881372 00.007589 20C00430         16    512 NORMAL  WRITEPBLK|DATACHECK
 	16:05:12.889629 00.008123 20C00430        495    512 NORMAL  WRITEPBLK|DATACHECK
 	16:05:12.897363 00.007602 20C00430         17    512 NORMAL  WRITEPBLK|DATACHECK
 	16:05:12.905603 00.008111 20C00430        494    512 NORMAL  WRITEPBLK|DATACHECK
 	16:05:12.913356 00.007621 20C00430         18    512 NORMAL  WRITEPBLK|DATACHECK
 	16:05:12.921583 00.008098 20C00430        493    512 NORMAL  WRITEPBLK|DATACHECK
 	16:05:12.929345 00.007629 20C00430         19    512 NORMAL  WRITEPBLK|DATACHECK
 	16:05:12.937557 00.008076 20C00430        492    512 NORMAL  WRITEPBLK|DATACHECK
 	16:05:12.945340 00.007658 20C00430         20    512 NORMAL  WRITEPBLK|DATACHECK
 	16:05:12.953533 00.008058 20C00430        491    512 NORMAL  WRITEPBLK|DATACHECK
 	16:05:12.961331 00.007649 20C00430         21    512 NORMAL  WRITEPBLK|DATACHECK
 	16:05:12.969520 00.008054 20C00430        490    512 NORMAL  WRITEPBLK|DATACHECK
 	16:05:12.977322 00.007668 20C00430         22    512 NORMAL  WRITEPBLK|DATACHECK
 	16:05:12.985489 00.008034 20C00430        489    512 NORMAL  WRITEPBLK|DATACHECK
 	16:05:12.993314 00.007691 20C00430         23    512 NORMAL  WRITEPBLK|DATACHECK
 	16:05:13.001465 00.008018 20C00430        488    512 NORMAL  WRITEPBLK|DATACHECK
 	16:05:13.009310 00.007702 20C00430         24    512 NORMAL  WRITEPBLK|DATACHECK
 	16:05:13.017442 00.007997 20C00430        487    512 NORMAL  WRITEPBLK|DATACHECK
 	16:05:13.025297 00.007725 20C00430         25    512 NORMAL  WRITEPBLK|DATACHECK
 	16:05:13.033419 00.007989 20C00430        486    512 NORMAL  WRITEPBLK|DATACHECK
 	16:05:13.041288 00.007729 20C00430         26    512 NORMAL  WRITEPBLK|DATACHECK
 	16:05:13.049392 00.007973 20C00430        485    512 NORMAL  WRITEPBLK|DATACHECK
 	16:05:13.057280 00.007761 20C00430         27    512 NORMAL  WRITEPBLK|DATACHECK
 	16:05:13.065370 00.007962 20C00430        484    512 NORMAL  WRITEPBLK|DATACHECK
 	16:05:13.073270 00.007772 20C00430         28    512 NORMAL  WRITEPBLK|DATACHECK
 	16:05:13.081344 00.007941 20C00430        483    512 NORMAL  WRITEPBLK|DATACHECK
 	16:05:13.089262 00.007791 20C00430         29    512 NORMAL  WRITEPBLK|DATACHECK
 	16:05:13.097321 00.007929 20C00430        482    512 NORMAL  WRITEPBLK|DATACHECK
 	16:05:13.105255 00.007806 20C00430         30    512 NORMAL  WRITEPBLK|DATACHECK
 	16:05:13.113300 00.007917 20C00430        481    512 NORMAL  WRITEPBLK|DATACHECK
 	16:05:13.121246 00.007817 20C00430         31    512 NORMAL  WRITEPBLK|DATACHECK
 	16:05:13.129274 00.007901 20C00430        480    512 NORMAL  WRITEPBLK|DATACHECK
 	16:05:13.137238 00.007836 20C00430         32    512 NORMAL  WRITEPBLK|DATACHECK
 	16:05:13.145248 00.007881 20C00430        479    512 NORMAL  WRITEPBLK|DATACHECK
 	16:05:13.153014 00.007614 20C00430          5    512 NORMAL  WRITEPBLK|DATACHECK
 	16:05:13.161014 00.007576 20C00430          6    512 NORMAL  WRITEPBLK|DATACHECK
 	16:05:13.168961 00.007797 20C00430          0    512 NORMAL  WRITEPBLK|DATACHECK
 	16:05:13.176953 00.007862 20C00430          0    512 NORMAL  WRITEPBLK|DATACHECK
 	16:05:13.184949 00.007855 20C00430          1    512 NORMAL  WRITEPBLK|DATACHECK
 	16:05:13.192948 00.007863 20C00430          2    512 NORMAL  WRITEPBLK|DATACHECK
 	16:05:13.200981 00.007891 20C00430          7    512 NORMAL  WRITEPBLK|DATACHECK
 	16:05:13.209010 00.007896 20C00430         12    512 NORMAL  WRITEPBLK|DATACHECK
 	16:05:13.217019 00.007880 20C00430         14    512 NORMAL  WRITEPBLK|DATACHECK
 	16:05:13.225002 00.007853 20C00430         13    512 NORMAL  WRITEPBLK|DATACHECK
 	16:05:13.233011 00.007870 20C00430         15    512 NORMAL  WRITEPBLK|DATACHECK
 	16:05:13.241008 00.007863 20C00430         16    512 NORMAL  WRITEPBLK|DATACHECK
 	16:05:13.248941 00.007803 20C00430          8    512 NORMAL  WRITEPBLK|DATACHECK
 	16:05:13.257053 00.007980 20C00430         24    512 NORMAL  WRITEPBLK|DATACHECK
 	16:05:13.264940 00.007757 20C00430         10    512 NORMAL  WRITEPBLK|DATACHECK
 	16:05:13.272923 00.007847 20C00430          9    512 NORMAL  WRITEPBLK|DATACHECK
 	16:05:13.280976 00.007895 20C00430         17    512 NORMAL  WRITEPBLK|DATACHECK
 	16:05:13.288922 00.007812 20C00430         11    512 NORMAL  WRITEPBLK|DATACHECK
 	16:05:13.296852 00.007781 20C00430          3    512 NORMAL  WRITEPBLK|DATACHECK
 	16:05:13.305016 00.008038 20C00430         25    512 NORMAL  WRITEPBLK|DATACHECK
 	16:05:13.308936 00.003785 20C00430         17    512 NORMAL  READPBLK
 	16:05:13.316945 00.007880 20C00430         17    512 NORMAL  WRITEPBLK|DATACHECK
 	16:05:13.320823 00.003731 20C00430          5    512 NORMAL  READPBLK
 	16:05:13.328840 00.007895 20C00430          5    512 NORMAL  WRITEPBLK|DATACHECK
 	16:05:13.328957 00.000000 20C00430          0      0 NORMAL  AVAILABLE
 	16:05:14.897422 00.000000 20C00430          0      0 NORMAL  PACKACK|INHERLOG
 	16:05:14.903213 00.005642 20C00430          1    512 NORMAL  READPBLK
 	16:05:14.903494 00.000094 20C00430          2    512 NORMAL  READPBLK
 	16:05:14.903801 00.000182 20C00430          8    512 NORMAL  READPBLK
 	16:05:14.904091 00.000155 20C00430          9    512 NORMAL  READPBLK
 	16:05:14.904387 00.000175 20C00430          5    512 NORMAL  READPBLK
 	16:05:14.907277 00.002771 20C00430          5    512 NORMAL  WRITEPBLK
 	16:05:14.911272 00.003508 20C00430          5    512 NORMAL  WRITEPBLK
 	16:05:14.911554 00.000164 20C00430          6    512 NORMAL  READPBLK
 	16:05:14.911847 00.000162 20C00430          7    512 NORMAL  READPBLK
 	16:05:14.912981 00.000164 20C00430         11    512 NORMAL  READPBLK|EXFUNC
 	16:05:14.915202 00.002046 20C00430          3    512 NORMAL  READPBLK|EXFUNC
 	16:05:14.915481 00.000000 20C00430          0      0 NORMAL  PACKACK|BYPASS_VALID_CHK
 	16:05:14.915772 00.000168 20C00430          5    512 NORMAL  READPBLK|EXFUNC
 	16:05:14.916130 00.000156 20C00430         17    512 NORMAL  READPBLK|EXFUNC
 	16:05:14.923226 00.006746 20C00430          3    512 NORMAL  WRITEPBLK|EXFUNC|DATACHECK
 	16:05:14.931319 00.007929 20C00430         17    512 NORMAL  WRITEPBLK|EXFUNC|DATACHECK
 	16:05:14.931806 00.000173 20C00430         25   1024 NORMAL  READPBLK
 	16:05:14.939314 00.007223 20C00430         17    512 NORMAL  WRITEPBLK|EXFUNC|DATACHECK
Close Help