CAC 2015-12-04

restore_tape

restore_tape is broken; it missed files due to incorrect parsing of backup records.

Rewritten as reload.

Reload don't work yet//

$ ../../tapeUtils/dumpTape 12.6EXEC.tap

// offset are off by 010 because of MST header

0001:0010   040172040172   040172040172   " z z z z
0001:0012   040172040172   040172040172   " z z z z
0001:0014   040172040172   040172040172   " z z z z
0001:0016   040172040172   040172040172   " z z z z
0001:0020   124150151163   040151163040   "This is 
0001:0022   164150145040   142145147151   "the begi
0001:0024   156156151156   147040157146   "nning of
0001:0026   040141040142   141143153165   " a backu
0001:0030   160040154157   147151143141   "p logica
0001:0032   154040162145   143157162144   "l record
0001:0034   056040040040   040040040040   ".       

0001:1010   040172040172   040172040172   " z z z z

0003:0410   040172040172   040172040172   " z z z z

0016:0010   040172040172   040172040172   " z z z z
[cac@sve tmp2]$ ../../tapeUtils/re
reload*       restore*      restore_tape* restore_toc*  
[cac@sve tmp2]$ ../../tapeUtils/reload foo 12.6EXEC.tap 
Reading tape file: 12.6EXEC.tap
Tape label information:
  EjsMultics, Soquel, CA          
  12.6EXEC                        

0001:0000
dname >
ename system_library_obsolete
hdrcnt 288 0440
segcnt 0 00
os 0 hdrcnt 512  segcnt 0
data start 0001:1000
data end   0001:1000
os 0001:1000

0001:1000
dname >system_library_obsolete
ename 
hdrcnt 1742 03316
segcnt 0 00
os 512 hdrcnt 1792  segcnt 0
data start 0003:0400
data end   0003:0400
os 0001:4400
os now 0002:2400
os now 0003:400

0003:0400
dname >system_library_obsolete
ename bound_checker_
hdrcnt 242 0362
segcnt 12288 030000
os 256 hdrcnt 512  segcnt 12288
data start 0003:1400
data end   0017:1400
os 0003:31400
os now 0004:27400
os now 0005:25400
os now 0006:23400
os now 0007:21400
os now 0010:17400
os now 0011:15400
os now 0012:13400
os now 0013:11400
os now 0014:7400
os now 0015:5400
os now 0016:3400
os now 0017:1400

0017:1400
Not a Multics backup format

The last one should be 0016:0000; 03400 too far.

But:
status bound_checker_

names: bound_checker_
check_mst
ckm
type: segment
date used: 12/04/15 1658.8 pst Fri
date modified: 10/18/82 0833.6 pst Mon
branch modified: 10/21/82 1417.5 pst Thu
bit count: 420840
records used: 12
mode: re

420840/36 is 11690 words 026652

but the tape says 12288 030000; which is 11690 rounded up to 1024 boundary

bk_input.pl1:

READ_SEG:
if segcnt > 0 then do;
temp = segcnt + 255; /* adjust to read segment to end of physical record */
temp = temp - mod (temp, 256); /* .. */
call iox_$get_chars (iocbp1, segptr, temp * 4, nelemt, code);
if code = error_table_$end_of_info then go to eor; /* check end of reel */
if code ^= 0 then go to tsterr;
end;

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License