Disk partitioning on VMS with LDdriver Open VMS

  • Slides: 47
Download presentation
Disk partitioning on VMS with LDdriver Open. VMS Technical Update Days The Netherlands October

Disk partitioning on VMS with LDdriver Open. VMS Technical Update Days The Netherlands October 11, 2006 Jur van der Burg Software Resources International www. softresint. eu © 2006 Jur van der Burg www. digiater. nl The information contained herein is subject to change without notice

LDdriver: What can it do? • Use a file on any disk as a

LDdriver: What can it do? • Use a file on any disk as a disk • Use a range of logical blocks on a disk as a new disk • Investigate I/O behavior • Test application error handling • Play around with disks without doing damage • Emulate • Create 3/9/2021 a magtape on disk (V 9. 0, in development) havoc (with privileges) 2

Where can I find it? • On the Open. VMS freeware website http: //www.

Where can I find it? • On the Open. VMS freeware website http: //www. hp. com/go/openvms/freeware • On the main lddriver site http: //www. digiater. nl/lddriver • Integrated • Fully 3/9/2021 in VMS since V 7. 3 -1(sort of. . ) integrated in VMS V 8. 2 3

Preparation • Ready for use after @SYS$STARTUP: LD$STARTUP • Any command that needs the

Preparation • Ready for use after @SYS$STARTUP: LD$STARTUP • Any command that needs the driver will give an error if not started properly: $ LD CONNECT FILE. DSK LDA 1 %LD-F-INVOKESTARTUP, LD has not been setup correctly, invoke @SYS$STARTUP: LD$STARTUP. COM • Exceptions are LD HELP and LD CREATE • Version can be obtained like this: $ LD VERSION %LD-I-VERSION, LD version V 9. 0, module X-9 built on Oct 10 2006 13: 46: 25 -LD-I-DRIVERVERSION, Driver version: 10 -OCT-2006 13: 56: 45. 44 (MON version) -LD-I-SYSINFO, Node: THEBAT, Hardware: hp Alpha. Server DS 20 L 833 MHz, VMS version: XB 9 P-BL 2 3/9/2021 4

Basics – File mode • Use a file as a disk • Create a

Basics – File mode • Use a file as a disk • Create a file on a physical disk: LD CREATE DKA 100: [LD]DISK/SIZE=10000 • Connect the file to a device: LD CONNECT DKA 100: [LD]DISK LDA 1 • Use it: INIT LDA 1: LDDISK MOUNT LDA 1: LDDISK. . . DISMOUNT LDA 1: • Disconnect the file: LD DISCONNECT LDA 1 3/9/2021 5

Basics – LBN mode • Use a range of logical blocks as a disk

Basics – LBN mode • Use a range of logical blocks as a disk • Physical disk may not be used by anything else • Connect a range of logical blocks to a disk: LD CONNECT DKA 100: /LBN=(START=0, END=9999) LDA 1 LD CONNECT DKA 100: /LBN=(START=10000, END=19999) LDA 2 LD CONNECT DKA 100: /LBN=(START=20000, END=29999) LDA 3 • Connect using a size: LD CONNECT DKA 100: /LBN=(START=0, SIZE=10000) LDA 1 LD CONNECT DKA 100: /LBN=(START=10000, SIZE=10000) LDA 2 LD CONNECT DKA 100: /LBN=(START=20000, SIZE=10000) LDA 3 3/9/2021 6

Basics – Replace mode • Access • Not another disk via an LD device

Basics – Replace mode • Access • Not another disk via an LD device a real form of partitioning • Useful for I/O tracing and watchpoints • Physical disk may not be used by anything else • Connect and replace: LD CONNECT DKA 100: /REPLACE LDA 1 3/9/2021 7

Advanced use • Sharing • LD of LD devices in a cluster is possible

Advanced use • Sharing • LD of LD devices in a cluster is possible devices itself are not MSCP-served • For shared use the physical devices where the container file resides must be MSCP served • Shadowing host-based raid disks • LD devices may be nested, i. e. you can create an LD disk on an LD disk etc. 3/9/2021 8

Sharing LD devices • LD devices must be connected the same way on multiple

Sharing LD devices • LD devices must be connected the same way on multiple nodes to allow sharing of container files • This means the same device name, allocation class, geometry, filename, etc. • Any mismatch will be detected by the driver • The utility attempts to give the reason for the failure $ ld connect $1$dga 1: lda 3: /lbn=(start=600, end=2000)/log/share %LD-F-DEVICEINUSE, Device incompatible connected to other LD disk in cluster -LD-F-RANGEINUSE, LBN range already in use 3/9/2021 9

I/O tracing • Very powerful feature to see what’s happening on a low level

I/O tracing • Very powerful feature to see what’s happening on a low level • Can be viewed real-time (continuously) • Can be logged to disk (unattended) • Flexible selectable output − different time formats − different I/O status block formats − different I/O function code formats 3/9/2021 10

I/O Tracing example $ ld trace lda 1: . . . $ ld show/trace

I/O Tracing example $ ld trace lda 1: . . . $ ld show/trace lda 1 I/O trace for device $7$LDA 1: 26 -APR-2006 22: 18: 36. 28 on node LDDRVR: : Start Time Elaps Pid Lbn Bytes Iosb Function -------------------------------22: 18: 32. 65 00. 00 09 C 00227 0 0 NORMAL PACKACK|INHERLOG 22: 18: 32. 65 00. 01 09 C 00227 1 512 NORMAL READPBLK 22: 18: 32. 66 00. 00 09 C 00227 1034 512 NORMAL READPBLK 22: 18: 32. 67 00. 00 09 C 00227 5002 512 NORMAL READPBLK 22: 18: 32. 68 00. 00 09 C 00227 5002 512 NORMAL WRITEPBLK 22: 18: 32. 69 00. 00 09 C 00227 5003 1536 NORMAL READPBLK 22: 18: 32. 69 00. 00 09 C 00227 5006 512 NORMAL READPBLK 22: 18: 32. 69 00. 00 09 C 00227 5000 512 NORMAL READPBLK|EXFUNC 22: 18: 32. 69 00. 00 09 C 00227 0 0 NORMAL PACKACK|BYPASS_VALID_CHK 22: 18: 32. 70 00. 00 09 C 00227 5016 512 NORMAL READPBLK|EXFUNC 22: 18: 32. 70 00. 00 09 C 00227 5023 1024 NORMAL READPBLK 22: 18: 32. 70 00. 00 09 C 00227 5016 512 NORMAL WRITEPBLK|EXFUNC|DATACHECK 3/9/2021 11

Watchpoints • A watchpoint is a special action performed when a targeted logical block

Watchpoints • A watchpoint is a special action performed when a targeted logical block is hit by a request • These actions are possible: − Return a specific error − Suspend the I/O request − Generate an Opcom message − Crash the system (needs CMKRNL privilege) • The user controls which LBN is watched, on which function code is acted, and which error is returned • The ‘Opcom’ action may be combined with other actions 3/9/2021 12

Watchpoint example $ ld watch lda 1 1/action=error=2928 $ ld watch lda 1 1/action=opcom

Watchpoint example $ ld watch lda 1 1/action=error=2928 $ ld watch lda 1 1/action=opcom $ ld show/watch lda 1 Index LBN Action Function Error return code ----------------------------------1 1 Opcom READPBLK 2 1 Error READPBLK 0 B 70 (FISH) $ dump lda 1: /block=(count=1, start=1) %%%%%% OPCOM 5 -APR-2006 14: 21: 46. 70 %%%%%% Message from user VDBURG on LDDRVR ***** LDdriver detected LBN watchpoint access ***** PID: 26000224 Image: DUMP Device: $7$LDA 1: (LDDRVR) Function: 000 C LBN: 1 %DUMP-E-READERR, error reading LDA 1: -SYSTEM-W-FISH, my hovercraft is full of eels 3/9/2021 13

Callable interface • LDdriver is controlled by a user mode program issuing normal QIO

Callable interface • LDdriver is controlled by a user mode program issuing normal QIO requests • The required function codes and definitions are available in the kit, and in VMS since V 8. 2 -1 ($LDDEF or lddef. h) • The driver is doing very strong validity checks of all requests (You can’t shoot yourself in the foot (if you can, I apologize, please let me know how you did it)) 3/9/2021 14

Limits • Create as many devices as your diskspace allows • Creation of any

Limits • Create as many devices as your diskspace allows • Creation of any device takes BYTLM quota from the creating process • The tracebuffer as well as watchpoints come out of non-paged pool and are charged against BYTLM as well • If 9999 LD devices are not enough then you can create LD devices on other controllers, like LDB 1: , LDC 1: , etc. • Configure the driver with @SYS$STARTUP: LD$STARTUP x where x is the controller to use. 3/9/2021 15

Old versions • LD V 8. 1: − LD CREATE/EXTEND Allows extension of existing

Old versions • LD V 8. 1: − LD CREATE/EXTEND Allows extension of existing container file Expand volume with SET VOLUME/SIZE − LD CONNECT/NOFORCED_ERROR Prevent handling of forced errors with shadowing − Bug fixes: • Fix possible system crash in I/O completion • Fix I/O hang with host-based raid • Fix mount verification issues 3/9/2021 16

Old versions • LD V 8. 2: − LD V 8. 2 has no

Old versions • LD V 8. 2: − LD V 8. 2 has no new features when compared to V 8. 1 − It is only a bug fix release. • Properly expel shadowset members on error • Reconnecting an LD device could fail the first time after reboot if the container file was used on another node • Allow container file on an NFS mounted ODS 5 volume • Prevent system crash on reconnecting a container file in a cluster 3/9/2021 17

New developments • LD V 9. 0: − Control utility rewritten in Ansi-C −

New developments • LD V 9. 0: − Control utility rewritten in Ansi-C − More accurate timing in trace records (With VMS V 8. 3 and up) $ ld show/trace lda 1 I/O trace for device $3$LDA 1: 17 -MAY-2006 09: 21: 15. 16 on node THEBAT End Time Elaps Pid Lbn Bytes Iosb Function ----------------------------------09: 21: 12. 232269 00. 000000 2060042 F 0 0 NORMAL PACKACK 09: 21: 12. 240950 00. 008581 2060042 F 1 512 NORMAL READPBLK 09: 21: 12. 247513 00. 006426 2060042 F 1034 512 NORMAL READPBLK 09: 21: 12. 248595 00. 000959 2060042 F 50033 512 NORMAL READPBLK 09: 21: 12. 249557 00. 000838 2060042 F 50034 512 NORMAL READPBLK 09: 21: 12. 255176 00. 005504 2060042 F 50016 512 NORMAL READPBLK 09: 21: 12. 263548 00. 008258 2060042 F 50016 512 NORMAL WRITEPBLK 3/9/2021 18

New developments - cont − LD CREATE/ERASE Erase container file on creation. This has

New developments - cont − LD CREATE/ERASE Erase container file on creation. This has no effect if highwater marking is turned on. − LD CREATE will issue a warning if highwater-marking is turned on and the size of the container file is more than 100000 blocks (VMS V 8. 2 and up): %LD-W-HIGHWATER, Highwater marking is enabled on device, be patient − LD SHOW/FULL Will show all attributes of the selected LD device. $ ld show/all/full %LD-I-CONNECTED, Connected _$3$LDA 1: to $1$DGA 100: [JUR. LD. V 90. SRC]FILE. DSK; 1 -LD-I-OPTIONS, Shared %LD-I-CONNECTED, Connected _$3$LDA 2: to _$3$DQA 0: -LD-I-OPTIONS, Replaced, Trace active, No DSE support, Not Forced Error capable 3/9/2021 19

New developments - cont LD SHOW/SYMBOL − Get the LD unit number in DCL

New developments - cont LD SHOW/SYMBOL − Get the LD unit number in DCL symbol LD_UNIT, and the container file specification in the symbol LD_CONTAINER. − LD SHOW/TRACE/TIMESTAMP=START or END Allow display of absolute start and end time of trace data. − LD CONNECT/LOGICAL=(NAME=logical-name [, TABLE=table] [, MODE=mode]) Assign logical name to LD device at connect time 3/9/2021 20

New developments – Tape emulation • Emulate tape device − Device is called ‘LM’

New developments – Tape emulation • Emulate tape device − Device is called ‘LM’ (Logical Magtape) • Uses the same driver as LD • One single driver acts like a disk or tape (!) $ lm create tape 1/size=10000 $ lm connect tape 1 lma 1/log %LM-I-CONNECTED, Connected $3$LMA 1: to $1$DGA 100: [JUR. LD. V 90. SRC]TAPE 1. DSK; 1 $ show dev/fu lma 1 Magtape $3$LMA 1: (THEBAT), device type (Generic SCSI tape), is online, fileoriented device. Error count Owner process ID Reference count Density Allocation class Volume status: 3/9/2021 0 "" 0000 0 6666 12 Operations completed 2 Owner UIC [JUR] Dev Prot S: RWPL, O: RWPL, G: R, W Default buffer size 2048 Format Normal-11 no-unload on dismount, odd parity. 21

New developments – Tape emulation $ init lma 1 test $ lm trace lma

New developments – Tape emulation $ init lma 1 test $ lm trace lma 1 $ mount/foreign lma 1 %MOUNT-I-MOUNTED, TEST mounted on _$3$LMA 1: (THEBAT) $ dismount lma 1: $ lm show/trace lma 1: I/O trace for device $3$LMA 1: 10 -OCT-2006 14: 38: 17. 05 on node THEBAT Start Time Elaps Pid Lbn Bytes Iosb Function ------------------------------14: 38: 11. 10 00. 00 2020042 A 0 0 NORMAL PACKACK 14: 38: 11. 10 00. 00 2020042 A 0 0 NORMAL REWIND 14: 38: 11. 10 00. 01 0000 0 524288 NORMAL READPBLK 14: 38: 11. 11 00. 00 2020042 A 0 80 ENDOFFILE READPBLK 14: 38: 11. 11 00. 00 2020042 A 0 0 NORMAL REWIND 14: 38: 14. 71 00. 00 2020042 A 0 0 NORMAL UNLOAD|CLSEREXCP 14: 38: 14. 71 00. 00 2020042 A 0 0 NORMAL AVAILABLE 3/9/2021 22

New developments – Tape emulation − LM SWITCH LMA 1 newfile. dsk • Allows

New developments – Tape emulation − LM SWITCH LMA 1 newfile. dsk • Allows volume switching for backup − LM ANALYZE file. dsk [/FULL] • Verifies the integrity of the container file $ lm analyze file. dsk %LM-I-ANALYZEOK, Container file structure successfully verified 3/9/2021 23

New developments – Tape emulation This is where we are right now. • Backup

New developments – Tape emulation This is where we are right now. • Backup support will follow soon. • $ copy/log 10 mb. bin lma 1: %COPY-S-COPIED, DATA: [JUR. LD. V 90. SRC]10 MB. BIN; 1 copied to LMA 1: (163840 records) $ set magtape/rewind lma 1: $ copy/log lma 1: 10 mb. new %COPY-S-COPIED, LMA 1: copied to DATA: [JUR. LD. V 90. SRC]10 MB. NEW; 1 (163840 records) $ diff/mode=hex 10 mb. bin 10 mb. new Number of difference sections found: 0 Number of difference records found: 0 DIFFERENCES /IGNORE=()/MERGED=1/MODE=(HEXADECIMAL)DATA: [JUR. LD. V 90. SRC]10 MB. BIN; 1 DATA: [JUR. LD. V 90. SRC]10 MB. NEW; 1 3/9/2021 24

New developments – Tape emulation $ init lma 2 test $ back/log DATA: [JUR.

New developments – Tape emulation $ init lma 2 test $ back/log DATA: [JUR. LD. V 90. KIT]*. * lma 2: lm/save/rewind/ignore=label %MOUNT-I-MOUNTED, TEST mounted on _$3$LMA 2: (THEBAT) %BACKUP-I-LBLOVRWRITE, volume label TEST overwritten, new label is LM %MOUNT-I-MOUNTED, LM mounted on _$3$LMA 2: (THEBAT) %BACKUP-S-COPIED, copied DATA: [JUR. LD. V 90. KIT]BIGDISK. COM; 1 %BACKUP-S-COPIED, copied DATA: [JUR. LD. V 90. KIT]LD_FILE_SHADOW. COM; 1 %BACKUP-S-COPIED, copied DATA: [JUR. LD. V 90. KIT]LD_FILE_SHARE_LOCK. COM; 1 %BACKUP-S-COPIED, copied DATA: [JUR. LD. V 90. KIT]LD_FILE_TRACE. COM; 1 %BACKUP-S-COPIED, copied DATA: [JUR. LD. V 90. KIT]LD_LBN_SHARE. COM; 1 %BACKUP-S-COPIED, copied DATA: [JUR. LD. V 90. KIT]LD_MOUNTVER. COM; 1 %BACKUP-S-COPIED, copied DATA: [JUR. LD. V 90. KIT]LD_REPLACE. COM; 1 %BACKUP-S-COPIED, copied DATA: [JUR. LD. V 90. KIT]MOUNTVER. COM; 1 %BACKUP-S-COPIED, copied DATA: [JUR. LD. V 90. KIT]SHADOW_RAM. COM; 1 $ lm analyze file. dsk %LM-I-ANALYZEOK, Container file structure successfully verified 3/9/2021 25

Internals – connecting a container file • The most tricky part is connecting an

Internals – connecting a container file • The most tricky part is connecting an LD device to a container file − Container file physical device must be a mounted disk − It must contain a known file system − File must be mapped with cathedral windows − Caching must be disabled for this file − Check for usage on other cluster members • File ID • Allocation class • Device name / controller letter / unit number • Geometry • Maximum block size • Sharing • Mode of connection 3/9/2021 26

Internals – connecting a disk by LBN • Connecting part of a disk by

Internals – connecting a disk by LBN • Connecting part of a disk by LBN range needs other checks − Physical device may not be mounted − It may not be accessed on any other node − The logical block range must fit and may not be in use anywhere in the cluster − The exception is that parts that match exactly may be shared − After connecting the physical device is guarded against access with a lock which prevents mounting 3/9/2021 27

Internals – checking LBN range (1) • When connecting a part of a physical

Internals – checking LBN range (1) • When connecting a part of a physical disk we need to check availability of the logical blocks, clusterwide − We can’s take out a lock based on a resource name with the encoded range as we don’t know what’s used on other nodes − We don’t want to invoke a helper process – driver check only! − We can’t store all ranges in a valueblock − So we use the lockmanager in a smart way 3/9/2021 28

Internals – checking LBN range (2) • At connection time the block range we

Internals – checking LBN range (2) • At connection time the block range we want is entered in a lock value block • By taking out a lock a blocking AST routine is fired on other nodes with interest in the same device − The blocking routine scans all local LD devices for a matching device − If found the LBN range is checked − In case of an error a bit is set in the lock value block − After lock conversion the initiator examines the error bit and rejects the request if set 3/9/2021 29

Internals – Finding an I/O • LDdriver sends most I/O requests it receives directly

Internals – Finding an I/O • LDdriver sends most I/O requests it receives directly to the physical disk driver • This may happen for multiple file segments in parallel • This can make it harder to find an active I/O − IRP’s forwarded to the physical disk can be found in the LDIOB structure − LDdriver’s structure definitions can be found in SYS$LDDRIVER. STB (only after installing the LD kit) 3/9/2021 30

SDA> read/exec SDA> show device lda 2. . . SDA> format/typ=ldiob @(ucb+ucb$l_ld_aiofl) FFFF. 81

SDA> read/exec SDA> show device lda 2. . . SDA> format/typ=ldiob @(ucb+ucb$l_ld_aiofl) FFFF. 81 DDE 140 LDIOB$L_QFL 81 DD 9800 FFFF. 81 DDE 144 LDIOB$L_QBL 81 DD 9800 FFFF. 81 DDE 148 LDIOB$W_SIZE 0080 FFFF. 81 DDE 14 A LDIOB$B_TYPE 13 FFFF. 81 DDE 14 B LDIOB$B_SPARE 53 FFFF. 81 DDE 14 C LDIOB$L_IRP 81 DB 1780 FFFF. 81 DDE 150 LDIOB$L_PID 0001002 B FFFF. 81 DDE 154 LDIOB$L_MEDIA 0000 FFFF. 81 DDE 158 LDIOB$L_BCNT 00000200 FFFF. 81 DDE 15 C LDIOB$W_FUNC 000 C FFFF. 81 DDE 15 E LDIOB$W_IOST 0001 FFFF. 81 DDE 160 LDIOB$Q_STAT 0000 FFFF. 81 DDE 168 LDIOB$Q_ST_TIME 0000 FFFF. 81 DDE 170 LDIOB$Q_EN_TIME 000000 A 8. 00010025 FFFF. 81 DDE 178 LDIOB$Q_ST_SCC 0000. 1 C 10 E 15 D FFFF. 81 DDE 180 LDIOB$Q_EN_SCC 44070017. 34465003 FFFF. 81 DDE 188 LDIOB$L_ST_CPU 0000 FFFF. 81 DDE 18 C LDIOB$L_EN_CPU 0000 FFFF. 81 DDE 190 LDIOB$L_ELAPSED 0000 LDIOB$Q_ELAPSED FFFF. 81 DDE 194 0000 FFFF. 81 DDE 198 LDIOB$Q_ST_USEC 613 D 6500. 746 C 7561 FFFF. 81 DDE 1 A 0 LDIOB$Q_EN_USEC 2 F 657461. 642 F 6 C 6 C FFFF. 81 DDE 1 A 8 LDIOB$L_ABCNT 0000 FFFF. 81 DDE 1 AC LDIOB$L_KPB 81 C 5 C 9 C 0 FFFF. 81 DDE 1 B 0 LDIOB$L_FWDQFL 81 DC 0878 FFFF. 81 DDE 1 B 4 LDIOB$L_FWDQBL 81 DC 0878 FFFF. 81 DDE 1 B 8 LDIOB$W_IRPCNT 0001 FFFF. 81 DDE 1 BA LDIOB$W_FLAGS 0000 SDA> format @(@(ucb+ucb$l_ld_aiofl)+ldiob$l_fwdqfl)-irp$l_ld_fwdqfl FFFF. 81 DC 0640 IRP$L_IOQFL 81 DC 5 BA 0 FFFF. 81 DC 0644 IRP$L_IOQBL 81 DC 5 BA 0 FFFF. 81 DC 0648 IRP$W_SIZE 0240 FFFF. 81 DC 064 A IRP$B_TYPE 0 A FFFF. 81 DC 064 B IRP$B_RMOD 00 FFFF. 81 DC 064 C IRP$L_PID 81 B 278 F 0. . . 3/9/2021 UCB+00200 LNM$C_DEL_OVERLAY+00027 Number of bytes transferred so far Queue of forwared IRP's Number of active forwarded IRP's SYS$LDDRIVER+118 F 0 31

Which VMS versions? • Runs on VAX/VMS since V 5. 5 -2 • Alpha

Which VMS versions? • Runs on VAX/VMS since V 5. 5 -2 • Alpha • IA 64 • The V 8. 2 and higher current kit is HP-VMS-LD-V 0802 --1. PCSI • Installs • VAX • Ia 64 on: V 7. 3 • Alpha 3/9/2021 V 6. 1 and higher V 7. 2 -2 V 7. 3 -1 V 7. 3 -2 V 8. 2 -1 32

Other versions • Other versions may work too, but the driver and utility needs

Other versions • Other versions may work too, but the driver and utility needs to be built from source (included in the kit) • Build • C procedure is included compiler required • Driver may need an edit for specific versions (enable / disable a conditional) • LD V 9. 0 will NOT run on VAX! − LD V 8. 2 will be the last release for VAX/VMS • LD V 8. 2 is integrated in the VMS V 8. 3 release 3/9/2021 33

Known issues • V 8. 2: − If the XFC cache is turned off

Known issues • V 8. 2: − If the XFC cache is turned off (VCC_FLAGS != 2) then connecting a file will return this error: • %LD-F-BLKOUTOFRANGE, Blocks out of range − This problem is corrected in VMS V 8. 3 and the future LD V 9. 0 kit 3/9/2021 34

HP internal usage • Heavily • Used used for testing in the VMS build

HP internal usage • Heavily • Used used for testing in the VMS build • Host-based Infoserver • CDRECORD • COPY/RECORDABLE_MEDIA 3/9/2021 (CDDVD) 35

Futures • Bug fixes (if any. . ) • You name it. . suggestions

Futures • Bug fixes (if any. . ) • You name it. . suggestions are welcome (buy me a drink ) 3/9/2021 36

More information • LDDRIVER article in the HP technical journal (V 6) http: //www.

More information • LDDRIVER article in the HP technical journal (V 6) http: //www. hp. com/go/openvms/journal • After installation: $ LD HELP • Keep an eye on the website for the V 9. 0 release. http: //www. digiater. nl/lddriver • Questions / Bugs / Ideas? Email: lddriver@digiater. nl 3/9/2021 37

3/9/2021 38

3/9/2021 38

LD_FILE. COM $ $ $ $ ld create disk 1. dsk /size=5000 ld connect

LD_FILE. COM $ $ $ $ ld create disk 1. dsk /size=5000 ld connect disk 1. dsk lda 1: ld show lda 1: ld trace lda 1: init lda 1: test mount lda 1: test dir lda 1: [000000] ld show/trace lda 1: ld trace/reset lda 1: dismount lda 1: ld show/trace lda 1: ld disconnect lda 1: delete disk 1. dsk; 3/9/2021 39

LD_FILE_SHARE. COM $ $ $ $ if f$search("disk 1. dsk"). eqs. "" then ld

LD_FILE_SHARE. COM $ $ $ $ if f$search("disk 1. dsk"). eqs. "" then ld create disk 1. dsk /size=5000 ld connect disk 1. dsk lda 1: /share/alloclass=4/log init lda 1: test else ld connect disk 1. dsk lda 1: /share/alloclass=4/log endif mount/system lda 1: test show dev lda 1 inquire dummy "return to continue" dismount lda 1: ld disconnect/log lda 1: if f$search("disk 1. dsk"). nes. "" then delete disk 1. dsk; 3/9/2021 40

LD_FILE_SHARE_LOCK. COM $ $ $ $ if f$search("disk 1. dsk"). eqs. "" then ld

LD_FILE_SHARE_LOCK. COM $ $ $ $ if f$search("disk 1. dsk"). eqs. "" then ld create disk 1. dsk /size=5000 ld connect disk 1. dsk lda 1: /share/alloclass=4/log/lock init lda 1: test else ld connect disk 1. dsk lda 1: /share/alloclass=4/log/lock endif mount/system lda 1: test show dev lda 1 inquire dummy "return to continue" dismount lda 1: ld disconnect/log lda 1: if f$search("disk 1. dsk"). nes. "" then delete disk 1. dsk; 3/9/2021 41

LD_FILE_TRACE. COM $ on control_y then goto exit $ ld create disk 1. dsk

LD_FILE_TRACE. COM $ on control_y then goto exit $ ld create disk 1. dsk /size=5000 $ ld connect disk 1. dsk lda 1: /log $ init lda 1: test $ mount lda 1: test $ ld trace lda 1: $loop: $ dir lda 1: [000000] $ wait 0: 0: 5 $ analyze/disk lda 1: $ wait 0: 0: 5 $ goto loop $ dismount lda 1: $exit: $ set noon $ dismount lda 1: $ ld trace/stop lda 1: $ ld disconnect lda 1: $ delete disk 1. dsk; 3/9/2021 42

LD_FILE_SHADOW. COM $ $ $ $ $ $ ld create disk 1. dsk /size=5000

LD_FILE_SHADOW. COM $ $ $ $ $ $ ld create disk 1. dsk /size=5000 ld create disk 2. dsk /size=5000 ld connect disk 1. dsk lda 1: /log/alloclass=4 ld connect disk 2. dsk lda 2: /log/alloclass=4 ld trace lda 1: ld trace lda 2: init lda 1: test mount dsa 0: /shadow=($4$lda 1: , $4$lda 2: ) test ld show/trace lda 1: ld show/trace lda 2: ld trace/reset lda 1: ld trace/reset lda 2: show shadow/copy inquire dummy "return to continue" dismount dsa 0: ld show/trace lda 1: ld show/trace lda 2: ld disconnect lda 1: ld disconnect lda 2: delete disk 1. dsk; delete disk 2. dsk; 3/9/2021 43

LD_LBN. COM $ $ $ $ $ $ $ phdev : = $9$dka 400:

LD_LBN. COM $ $ $ $ $ $ $ phdev : = $9$dka 400: show dev 'phdev' ld connect 'phdev' lda 1: /log/lbn=(start=0, count=10000) ld connect 'phdev' lda 2: /log/lbn=(start=10000, count=10000) ld connect 'phdev' lda 3: /log/lbn=(start=20000, count=10000) ld connect 'phdev' lda 4: /log/lbn=(start=30000, count=10000) init lda 1: test 1 init lda 2: test 2 init lda 3: test 3 init lda 4: test 4 mount lda 1: test 1 mount lda 2: test 2 mount lda 3: test 3 mount lda 4: test 4 show dev lda 1 show dev lda 2 show dev lda 3 show dev lda 4 show dev 'phdev' inquire dummy "return to continue" dismount lda 1: dismount lda 2: dismount lda 3: dismount lda 4: ld disconnect/log/all show dev 'phdev' 3/9/2021 44

LD_LBN_SHARE. COM $ $ $ $ $ $ phdev : = $9$dka 400: show

LD_LBN_SHARE. COM $ $ $ $ $ $ phdev : = $9$dka 400: show dev 'phdev' ld connect 'phdev' lda 1: /log/lbn=(start=0, count=10000)/share/alloclass=4 ld connect 'phdev' lda 2: /log/lbn=(start=10000, count=10000)/share/alloclass=4 ld connect 'phdev' lda 3: /log/lbn=(start=20000, count=10000)/share/alloclass=4 ld connect 'phdev' lda 4: /log/lbn=(start=30000, count=10000)/share/alloclass=4 mount/system lda 1: test 1 mount/system lda 2: test 2 mount/system lda 3: test 3 mount/system lda 4: test 4 show dev lda 1 show dev lda 2 show dev lda 3 show dev lda 4 show dev 'phdev' inquire dummy "return to continue" dismount lda 1: dismount lda 2: dismount lda 3: dismount lda 4: ld disconnect/log/all show dev 'phdev' 3/9/2021 45

LD_REPLACE. COM $ $ $ $ phdev : = $9$dka 400: show dev 'phdev'

LD_REPLACE. COM $ $ $ $ phdev : = $9$dka 400: show dev 'phdev' ld connect 'phdev' lda 1: /log/replace ld trace lda 1: init lda 1: test 1 mount lda 1: test 1 show dev/full lda 1 show dev/full 'phdev' ld show/trace lda 1: inquire dummy "return to continue" dismount lda 1: ld disconnect/log lda 1: show dev 'phdev' 3/9/2021 46

LD_MOUNTVER. COM $ $ $ $ $ $ ld create disk 1. dsk ld

LD_MOUNTVER. COM $ $ $ $ $ $ ld create disk 1. dsk ld connect/log/symbol disk 1. dsk init/nohigh/system lda'ld_unit': test mount lda'ld_unit': test ld trace lda'ld_unit': ld watch lda'ld_unit': 1/action=error=%x 84/function=code=%x 0808 ld watch lda'ld_unit': 10/action=error=%x 84/function=read ld watch lda'ld_unit': 10/action=opcom/function=read ld show/watch lda'ld_unit': reply/enable/temp spawn/nowait/input=nl: dump lda'ld_unit': /block=(start=10, count=1) inquire dummy "return to continue" ld nowatch lda'ld_unit': ld show/trace lda'ld_unit': reply/disable wait 0: 0: 1 dism lda'ld_unit': set noon ld trace/stop lda'ld_unit': ld disc lda'ld_unit': delete/nolog/noconf disk 1. dsk; 3/9/2021 47