1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33 reloader: proc;
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58 reload_volume: entry;
59
60 dcl Area area based (areap);
61 dcl (areap, argp) ptr;
62 dcl (code, ignore) fixed bin (35);
63 dcl dev_idx fixed bin;
64 dcl lvname char (32) aligned;
65 dcl time_string char (24);
66 dcl (ename, control_name) char (32);
67 dcl (cln, enl, i, pvindex, vtocx) fixed bin;
68 dcl mounted_rpv_pvid bit (36);
69 dcl time_unmounted fixed bin (71);
70 dcl (YES, found_restart, dont_query_restart, pvid_missing, version_1_found, volog_missing) bit (1);
71
72 dcl 1 local_vtoce like vtoce aligned;
73
74 dcl tp2 (2) ptr;
75 dcl tp6 (6) ptr;
76
77 dcl error_table_$entlong fixed bin (35) ext;
78 dcl error_table_$improper_data_format ext fixed bin (35);
79 dcl error_table_$namedup ext fixed bin (35);
80 dcl error_table_$segknown ext fixed bin (35);
81 dcl sys_info$seg_size_256K fixed bin (19) ext static;
82 dcl myname char (32) static int init ("reload_volume") options (constant);
83
84 dcl hcs_$initiate entry (char (*), char (*), char (*), fixed bin, fixed bin, ptr, fixed bin (35));
85 dcl hcs_$set_max_length_seg entry (ptr, fixed bin (19), fixed bin (35));
86 dcl ioa_$rsnnl entry options (variable);
87 dcl hcs_$level_get entry returns (fixed bin);
88 dcl get_group_id_ entry returns (char (32));
89 dcl get_system_free_area_ entry () returns (ptr);
90 dcl hcs_$delentry_seg entry (ptr, fixed bin (35));
91 dcl hcs_$make_seg entry (char (*), char (*), char (*), fixed bin (5), ptr, fixed bin (35));
92 dcl hcs_$fs_search_get_wdir entry (ptr, fixed bin (35));
93 dcl hcs_$set_256K_switch entry (bit (2) aligned, bit (2) aligned, fixed bin (35));
94 dcl cu_$arg_list_ptr entry (ptr);
95 dcl command_query_$yes_no entry options (variable);
96 dcl mdc_$pvname_info entry (char (*) aligned, bit (36) aligned, char (*) aligned, bit (36) aligned,
97 fixed bin, fixed bin (35));
98 dcl rldr_arg_reader_ entry (ptr, ptr, fixed bin (35));
99 dcl rldr_check_pvol_ entry (ptr, fixed bin, fixed bin (35));
100 dcl rldr_label_$open entry (ptr, fixed bin, fixed bin (35));
101 dcl rldr_label_$close entry (ptr, fixed bin, fixed bin (35));
102 dcl get_temp_segments_ entry (char (*), (*) ptr, fixed bin (35));
103 dcl date_time_ entry (fixed bin (71), char (*));
104 dcl rldr_input_$init_volume_list entry (ptr, fixed bin (35));
105 dcl rldr_output_$init entry (ptr, fixed bin, fixed bin (35));
106 dcl reload_volume_ entry (ptr, fixed bin (35));
107 dcl rldr_vtoc_header_$open entry (ptr, fixed bin, fixed bin (35));
108 dcl rldr_vtoc_header_$close entry (ptr, fixed bin, fixed bin (35));
109 dcl rldr_vtoc_header_$build_vtoc_map entry (ptr, fixed bin, fixed bin (35));
110 dcl rldr_volume_map_$open entry (ptr, fixed bin, fixed bin (35));
111 dcl rldr_volume_map_$close entry (ptr, fixed bin, fixed bin (35));
112 dcl rldr_finish_ entry (ptr, ptr, fixed bin (35));
113 dcl rldr_report_$error_output entry options (variable);
114 dcl rldr_report_$online_output entry options (variable);
115 dcl rldr_output_$read_vtoce entry (ptr, fixed bin, ptr, fixed bin, fixed bin, fixed bin (35));
116
117 dcl (cleanup, seg_fault_error) condition;
118
119 dcl (addr, clock, divide, null, search, substr) builtin;
120 ^L
121
122
123
124
125 areap, rldr_datap = null ();
126
127 on cleanup call rldr_finish_ (rldr_datap, areap, ignore);
128
129 call get_max_pvs (rldr_data_max_pvs, code);
130 if code ^= 0 then rldr_data_max_pvs = 100;
131 areap = get_system_free_area_ ();
132 allocate rldr_data_ in (Area) set (rldr_datap);
133 rldr_data_.ptrs = null ();
134 rldr_data_.bits = "0"b;
135 rldr_data_.fixed = 0;
136 rldr_data_.chars = "";
137 rldr_data_.detach = "1"b;
138 rldr_data_.first_volume = "1"b;
139 rldr_data_.sys_dir,
140 rldr_data_.default_sys_dir = ">daemon_dir_dir>volume_backup";
141 rldr_data_.io_module = "tape_mult_";
142 rldr_data_.old_256K_switch = ""b;
143
144 do pvindex = 1 to rldr_data_max_pvs;
145 rldr_data_.per_pv (pvindex) = rldr_data_nulled_pv;
146 rldr_data_.prev_wordx (pvindex) = 1;
147 rldr_data_.prev_bitx (pvindex) = 2;
148 end;
149 call hcs_$set_256K_switch ("11"b, rldr_data_.old_256K_switch, code);
150 if code ^= 0 then do;
151 call rldr_report_$error_output (rldr_datap, code, myname, "Could not enable 256KW segments.");
152 goto err;
153 end;
154 rldr_data_.data_init = "1"b;
155 code = 0;
156 query_info.version = query_info_version_5;
157 call cu_$arg_list_ptr (argp);
158 if argp = null () then do;
159 call rldr_report_$error_output (rldr_datap, 0, myname, "This command requires arguments, please consult AM81 (MOH) for information.");
160 goto err;
161 end;
162 call rldr_arg_reader_ (rldr_datap, argp, code);
163 if code ^= 0 then goto err;
164 rldr_data_.arg_init = "1"b;
165 if rldr_data_.operator = "" | rldr_data_.npvs <= 0 then do;
166 if ((rldr_data_.operator = "") & (rldr_data_.npvs <= 0)) then
167 call rldr_report_$error_output (rldr_datap, 0, myname, "Operator name and physical volume name not specified");
168 else if (rldr_data_.operator = "") then
169 call rldr_report_$error_output (rldr_datap, 0, myname, "Operator name not specified");
170 else call rldr_report_$error_output (rldr_datap, 0, myname, "Physical volume name not specified.");
171 goto err;
172 end;
173 found_restart, volog_missing, version_1_found = "0"b;
174 do i = 1 to rldr_data_.npvs;
175 call find_volog (i);
176 end;
177 if volog_missing then do;
178 call rldr_report_$online_output (rldr_datap, 0, myname, "Please start volume log recovery procedure");
179 goto finish;
180 end;
181 ^L
182
183
184
185
186
187
188
189
190
191 if version_1_found then do;
192 call mdc_$pvname_info ("rpv", rldr_data_.rpv_pvid, lvname, rldr_data_.rpv_lvid,
193 rldr_data_.rpv_disk_type, code);
194 if code ^= 0 then do;
195 call rldr_report_$error_output (rldr_datap, code, myname, "Unable to get info about rpv");
196 goto err;
197 end;
198 mounted_rpv_pvid = rldr_data_.rpv_pvid;
199 if rldr_data_.rpv then do;
200 if rldr_data_.npvs > 1 then do;
201 call rldr_report_$error_output (rldr_datap, 0, myname,
202 "An implementation restriction when using version 1 volume logs.
203 This requires that the RPV be reloaded separately from other volumes.");
204 goto err;
205 end;
206 bvlp = rldr_data_.per_pv (1).bvlp;
207 rldr_data_.rpv_pvid = backup_volume_log.info.pvid;
208 rldr_data_.rpv_lvid = backup_volume_log.info.lvid;
209 rldr_data_.disk_type (1) = rldr_data_.rpv_disk_type;
210 rldr_data_.lvname (1) = lvname;
211 end;
212 else do;
213 do pvindex = 1 to rldr_data_.npvs;
214 pvid_missing = "0"b;
215 do i = 1 to rldr_data_.npvs;
216 call mdc_$pvname_info (rldr_data_.pvname (i), rldr_data_.pvid (i),
217 rldr_data_.lvname (i), rldr_data_.lvid (i), rldr_data_.disk_type (i), code);
218 if code ^= 0 then do;
219 call rldr_report_$error_output (rldr_datap, code, myname, "Unable to determine pvid for ^a",
220 rldr_data_.pvname (i));
221 pvid_missing = "1"b;
222 end;
223 end;
224 if pvid_missing then goto err;
225 end;
226 end;
227 rldr_data_.stranger = ^(rldr_data_.rpv_pvid = mounted_rpv_pvid);
228
229 end;
230 ^L
231
232
233
234
235
236
237 else do;
238 call mdc_$pvname_info ("rpv", rldr_data_.rpv_pvid, lvname, rldr_data_.rpv_lvid, rldr_data_.rpv_disk_type, code);
239 if code ^= 0 then do;
240 call rldr_report_$error_output (rldr_datap, code, myname, "Unable to get info about rpv");
241 goto err;
242 end;
243 mounted_rpv_pvid = rldr_data_.rpv_pvid;
244 rldr_data_.rpv_pvid = "0"b;
245 if rldr_data_.sys_dir ^= rldr_data_.default_sys_dir then do;
246 if rldr_data_.rpv then do;
247 do i = 1 to rldr_data_.npvs while (rldr_data_.per_pv (i).pvname ^= "rpv");
248 end;
249 bvlp = rldr_data_.per_pv (i).bvlp;
250 rldr_data_.rpv_pvid = backup_volume_log.pvid;
251 rldr_data_.rpv_lvid = backup_volume_log.info.lvid;
252 goto got_rpvid;
253 end;
254 else do;
255 bvlp = rldr_data_.per_pv (1).bvlp;
256 rldr_data_.rpv_pvid = backup_volume_log.rpv_pvid;
257 end;
258 end;
259 if rldr_data_.rpv_pvid = "0"b then
260 rldr_data_.rpv_pvid = mounted_rpv_pvid;
261 got_rpvid:
262 if (validate_all_vologs ()) then ;
263 else do;
264 call rldr_report_$error_output (rldr_datap, 0, myname, "The reload will be aborted.");
265 goto err;
266 end;
267 call fill_from_volog ();
268 rldr_data_.stranger = ^(rldr_data_.rpv_pvid = mounted_rpv_pvid);
269
270 end;
271 ^L
272
273
274
275 call get_temp_segments_ (myname, tp2, code);
276 if code ^= 0 then do;
277 call rldr_report_$error_output (rldr_datap, code, myname, "Error creating temp segs ");
278 goto err;
279 end;
280 dont_query_restart = "0"b;
281 do pvindex = 1 to rldr_data_.npvs;
282 if rldr_data_.disk_model (pvindex) = "" then do;
283 dev_idx = rldr_data_.disk_type (pvindex);
284 rldr_data_.usable_sectors (pvindex) = divide (sect_per_cyl (dev_idx), sect_per_rec (dev_idx), 17, 0) * sect_per_rec (dev_idx);
285 rldr_data_.unusable_sectors (pvindex) =
286 sect_per_cyl (dev_idx) - rldr_data_.usable_sectors (pvindex);
287 end;
288 rldr_data_.vtocbp (pvindex) = tp2 (1);
289 rldr_data_.labelp (pvindex) = tp2 (2);
290 cln = search (rldr_data_.pvname (pvindex), " ") - 1;
291 if cln < 1 | cln > 24 then cln = 24;
292 control_name = substr (rldr_data_.pvname (pvindex), 1, cln) || ".control";
293 remake_control_seg:
294 call hcs_$make_seg (wdir_ (), control_name, "", 01010b, rldr_data_.controlp (pvindex), code);
295 if code ^= 0 then do;
296 if rldr_data_.common.restart & (code = error_table_$segknown | code = error_table_$namedup) then code = 0;
297 else do;
298 call command_query_$yes_no (YES, 0, myname,
299 "A control segment was found for the specified physical volume, but -restart was not specified.
300 Do you wish a restart on the specified physical volume?",
301 "Control segment ^a exists but -restart not specified. Do you want a restart on the physical volume? ",
302 control_name);
303 if YES then found_restart, rldr_data_.per_pv (pvindex).restart = "1"b;
304 else do;
305 dont_query_restart = "1"b;
306 call hcs_$delentry_seg (rldr_data_.controlp (pvindex), ignore);
307 goto remake_control_seg;
308 end;
309 end;
310 end;
311 if ((rldr_data_.common.restart) & (^found_restart) & (^dont_query_restart)) then do;
312
313 call command_query_$yes_no (YES, 0, myname,
314 "The -restart control argument was specified, but no control segment was found.
315 A ""yes"" answer will continue with the reload, whereas a ""no"" answer will abort it. Continue the reload?",
316 "No control seg found for -restart control arg. Do you wish to continue with the reload?");
317 if YES then rldr_data_.common.restart = "0"b;
318 else goto err;
319 end;
320 end;
321 do pvindex = 1 to rldr_data_.npvs;
322 controlp = rldr_data_.controlp (pvindex);
323 rldr_data_.vol_mapp (pvindex) = addr (rldr_control.vol_map);
324 rldr_data_.vtoc_headerp (pvindex) = addr (rldr_control.vtoc_header);
325 rldr_data_.labelp (pvindex) = addr (rldr_control.label);
326 call rldr_output_$init (rldr_datap, pvindex, code);
327 if code ^= 0 then do;
328 call rldr_report_$error_output (rldr_datap, code, myname, "Error initializing output medium, pv ^a",
329 rldr_data_.pvname (pvindex));
330 goto err;
331 end;
332 if ^rldr_data_.per_pv.restart (pvindex) then do;
333 call rldr_label_$open (rldr_datap, pvindex, code);
334 if code ^= 0 then do;
335 call rldr_report_$error_output (rldr_datap, code, myname, "Label check failed for pv ^a",
336 rldr_data_.pvname (pvindex));
337 goto err;
338 end;
339 call rldr_volume_map_$open (rldr_datap, pvindex, code);
340 if code ^= 0 then do;
341 call rldr_report_$error_output (rldr_datap, code, myname, "Error opening volume map for pv ^a",
342 rldr_data_.pvname (pvindex));
343 goto err;
344 end;
345 call rldr_vtoc_header_$open (rldr_datap, pvindex, code);
346 if code ^= 0 then do;
347 call rldr_report_$error_output (rldr_datap, code, myname, "Unable to open vtoc header for pv ^a",
348 rldr_data_.pvname (pvindex));
349 goto err;
350 end;
351 call rldr_check_pvol_ (rldr_datap, pvindex, code);
352 if code ^= 0 then do;
353 if code > 2 then do;
354 call rldr_report_$error_output (rldr_datap, 0, myname,
355 "Unable to reload volume ^a. Volog and volume label have fatal mismatch",
356 rldr_data_.pvname (pvindex));
357 goto err;
358 end;
359 else do;
360 call command_query_$yes_no (YES, 0, myname, "",
361 "Initialized physical volume ^a does not match online logical image. Do you wish to proceed",
362 rldr_data_.pvname (pvindex));
363 if ^YES then goto err;
364 end;
365 end;
366 if rldr_data_.save then call update_control_seg ();
367 end;
368 end;
369 call get_temp_segments_ (myname, tp6, code);
370 if code ^= 0 then do;
371 call rldr_report_$error_output (rldr_datap, code, myname, "Error creating temp segs ");
372 goto err;
373 end;
374 rldr_data_.volume_record_bp = tp6 (1);
375 rldr_data_.data_object_bp = tp6 (2);
376 rldr_data_.input_vol_lstp = tp6 (3);
377 rldr_data_.infop = tp6 (4);
378 rldr_data_.skip = tp6 (5);
379 rldr_data_.input_buffer_ptr = tp6 (6);
380 rldr_data_.input_buffer_len = 0;
381 call hcs_$set_max_length_seg (rldr_data_.data_object_bp, sys_info$seg_size_256K, code);
382 if code ^= 0 then do;
383 call rldr_report_$error_output (rldr_datap, code, myname, "Could not create 256KW temporary segment.");
384 goto err;
385 end;
386
387 call hcs_$set_max_length_seg (rldr_data_.input_buffer_ptr,
388 sys_info$seg_size_256K, code);
389 if code ^= 0 then do;
390 call rldr_report_$error_output (rldr_datap, code, myname, "Could not create 256KW temporary segment.");
391 goto err;
392 end;
393
394 call rldr_input_$init_volume_list (rldr_datap, code);
395 if code ^= 0 then do;
396 call rldr_report_$error_output (rldr_datap, code, myname, "Error initializing input volume list ");
397 goto err;
398 end;
399
400 call rldr_report_$online_output (rldr_datap, 0, myname, "Begin reload of volume^[s^] ^v(^a ^) at ^a",
401 (rldr_data_.npvs > 1), rldr_data_.npvs, rldr_data_.pvname (*), time_now_ ());
402
403 call reload_volume_ (rldr_datap, code);
404 if code ^= 0 then
405 call rldr_report_$error_output (rldr_datap, code, myname, "Error reloading volume ^a", rldr_data_.pvname (pvindex));
406 do pvindex = 1 to rldr_data_.npvs;
407 call rldr_vtoc_header_$build_vtoc_map (rldr_datap, pvindex, code);
408 if code ^= 0 then
409 call rldr_report_$error_output (rldr_datap, code, myname, "Unable to build VTOC map for pv ^a",
410 rldr_data_.pvname (pvindex));
411
412 call rldr_vtoc_header_$close (rldr_datap, pvindex, code);
413 if code ^= 0 then
414 call rldr_report_$error_output (rldr_datap, code, myname, "Error closing vtoc header for pv ^a",
415 rldr_data_.pvname (pvindex));
416
417 call rldr_volume_map_$close (rldr_datap, pvindex, code);
418 if code ^= 0 then
419 call rldr_report_$error_output (rldr_datap, code, myname, "Error closing volume map for pv ^a",
420 rldr_data_.pvname (pvindex));
421
422 call rldr_label_$close (rldr_datap, pvindex, code);
423 if code ^= 0 then
424 call rldr_report_$error_output (rldr_datap, code, myname, "Error closing volume label for pv ^a",
425 rldr_data_.pvname (pvindex));
426
427 call rldr_report_$online_output (rldr_datap, 0, myname, "End reload of volume ^a at ^a",
428 rldr_data_.pvname (pvindex), time_now_ ());
429 controlp = rldr_data_.controlp (pvindex);
430 call rldr_report_$online_output (rldr_datap, 0, myname,
431 "Reloaded on volume ^a ^d records of ^d directories and ^d records of ^d segments and ^d null vtoces",
432 rldr_data_.pvname (pvindex), rldr_control.dir_rec, rldr_control.dir_num, rldr_control.seg_rec,
433 rldr_control.seg_num, rldr_control.num_null_vtoce);
434
435 call hcs_$delentry_seg (rldr_data_.controlp (pvindex), ignore);
436 if hcs_$level_get () = 1 & get_group_id_ () = "Initializer.SysDaemon.z"
437 & rldr_data_.default_sys_dir ^= rldr_data_.sys_dir
438 then do;
439 call hcs_$delentry_seg (rldr_data_.bvlp (pvindex), ignore);
440 rldr_data_.bvlp (pvindex) = null ();
441 end;
442 end;
443
444
445
446 end_reload_volume: entry;
447 finish:
448
449 call rldr_finish_ (rldr_datap, areap, ignore);
450 return;
451
452 err:
453 do pvindex = 1 to rldr_data_.npvs;
454 if rldr_data_.controlp (pvindex) ^= null then call hcs_$delentry_seg (rldr_data_.controlp (pvindex), ignore);
455 end;
456 goto finish;
457
458
459 ^L
460
461
462
463 time_now_: proc returns (char (6));
464
465
466
467 call date_time_ (clock (), time_string);
468 return (substr (time_string, 11, 6));
469 end time_now_;
470
471
472
473
474 wdir_: proc returns (char (168) aligned);
475
476
477
478 dcl wdir char (168) aligned;
479 call hcs_$fs_search_get_wdir (addr (wdir), ignore);
480 return (wdir);
481 end wdir_;
482
483
484
485 update_control_seg: proc;
486
487
488
489
490
491 vtocep = addr (local_vtoce);
492 labelp, old_labelp = rldr_data_.labelp (pvindex);
493 if label.volmap_version = 1 | label.volmap_version = 2
494 then time_unmounted = label.time_unmounted;
495 else time_unmounted = old_label.time_unmounted;
496 controlp = rldr_data_.controlp (pvindex);
497 vtoc_headerp = rldr_data_.vtoc_headerp (pvindex);
498 do vtocx = 0 to vtoc_header.n_vtoce - 1;
499 call rldr_output_$read_vtoce (rldr_datap, pvindex, vtocep, vtocx, 1, code);
500 if code ^= 0 then do;
501 call rldr_report_$online_output (rldr_datap, 0, code, myname, "Unable to read VTOCE ^o on pv ^a", vtocx,
502 rldr_data_.pvname (pvindex));
503 goto err;
504 end;
505 rldr_control (vtocx).uid = vtoce.uid;
506 rldr_control (vtocx).time_dumped = time_unmounted;
507 end;
508
509 end update_control_seg;
510
511
512 ^L
513
514
515
516 find_volog: proc (i);
517
518
519 dcl i fixed bin;
520
521
522 call ioa_$rsnnl ("^a.^a", ename, enl, rldr_data_.pvname (i), "volog");
523 if enl > 32 then do;
524 code = error_table_$entlong;
525 goto vol_err;
526 end;
527
528 call hcs_$initiate ((rldr_data_.sys_dir), ename, "", 0, 1, bvlp, code);
529 if bvlp = null then do;
530 vol_err: call rldr_report_$online_output (rldr_datap, code, myname, "Unable to locate valid volume log ^a^[>^]^a",
531 rldr_data_.sys_dir, rldr_data_.sys_dir ^= ">", ename);
532 volog_missing = "1"b;
533 return;
534 end;
535
536 on seg_fault_error goto vol_err;
537 if (backup_volume_log.pvname = rldr_data_.pvname (i)) & ((backup_volume_log.version = backup_volume_log_version_1)
538 | (backup_volume_log.version = backup_volume_log_version_2)
539 | (backup_volume_log.version = backup_volume_log_version_3)) then
540 if ^version_1_found then version_1_found =
541 (backup_volume_log.version = backup_volume_log_version_1);
542 else do;
543 code = error_table_$improper_data_format;
544 goto vol_err;
545 end;
546 revert seg_fault_error;
547
548 code = 0;
549 rldr_data_.bvlp (i) = bvlp;
550 end find_volog;
551
552
553
554
555 get_max_pvs: proc (maxpvs, ec);
556
557 dcl ec fixed bin (35),
558 maxpvs fixed bin;
559
560 ec = -1;
561 end get_max_pvs;
562
563
564 ^L
565
566
567
568 fill_from_volog:
569 proc ();
570
571 dcl i fixed bin;
572
573 do i = 1 to rldr_data_.npvs;
574 bvlp = rldr_data_.per_pv (i).bvlp;
575 rldr_data_.per_pv (i).pvid = backup_volume_log.pvid;
576 rldr_data_.per_pv (i).disk_type = backup_volume_log.disk_type;
577 rldr_data_.per_pv (i).lvid = backup_volume_log.info.lvid;
578 rldr_data_.per_pv (i).lvname = backup_volume_log.info.lv_name;
579 end;
580
581 end fill_from_volog;
582
583
584
585
586 validate_all_vologs:
587 proc () returns (bit (1));
588
589 dcl i fixed bin;
590 dcl mismatch bit (1) init ("0"b);
591
592
593 do i = 1 to rldr_data_.npvs;
594 bvlp = rldr_data_.per_pv (i).bvlp;
595 if backup_volume_log.rpv_pvid ^= rldr_data_.rpv_pvid then do;
596 mismatch = "1"b;
597 call rldr_report_$error_output (rldr_datap, 0, myname,
598 "The RPV pvid for physical volume ^a does not match the determined RPV pvid.",
599 rldr_data_.per_pv (i).pvname);
600 end;
601 end;
602 return (^mismatch);
603 end validate_all_vologs;
604
605
606 ^L
607 %include rldr_data_;
608 ^L
609 %include backup_volume_log;
610 ^L
611 %include backup_volume_header;
612 ^L
613 %include backup_pvol_info;
614 %include rldr_control;
615 ^L
616 %include fs_dev_types;
617 ^L
618 %include fs_vol_label;
619 ^L
620 %include old_fs_vol_label;
621 ^L
622 %include vtoc_header;
623 %include vol_map;
624 ^L
625 %include vtoce;
626 ^L
627 %include query_info;
628 ^L
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941 end reloader;