COMPILATION LISTING OF SEGMENT merge_volume_log Compiled by: Multics PL/I Compiler, Release 32f, of October 9, 1989 Compiled at: Bull HN, Phoenix AZ, System-M Compiled on: 10/10/89 1418.9 mst Tue Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 4* * * 5* * Copyright (c) 1972 by Massachusetts Institute of * 6* * Technology and Honeywell Information Systems, Inc. * 7* * * 8* *********************************************************** */ 9 10 11 merge_volume_log: proc; 12 13 /* This utility command merges two volume logs. Such a situation can occur if a volume log is deleted, then 14* a new one is created by the volume dumper, and subsequently the old one is recovered. This command will update the 15* newer volume log with the data in the older volume log. The older volume log will not be modified. */ 16 17 /* Modified 83-11-04 by SGH (UNCA) to improve merge strategy -- phx16302. */ 18 19 dcl arg char (argl) based (argp); 20 dcl argl fixed bin; 21 dcl argp ptr; 22 dcl old_lock bit (1); 23 dcl new_lock bit (1); 24 dcl temp_segs bit (1); 25 dcl update_lock bit (1); 26 dcl cycle_uid bit (36); 27 dcl tp (1) ptr; 28 dcl p (2) ptr; 29 dcl temp_bvlp ptr; 30 dcl update_bvlep ptr; 31 dcl new_bvlp ptr; 32 dcl copy_bvlp ptr; 33 dcl old_bvlep ptr; 34 dcl old_bvlp ptr; 35 dcl update_bvlp ptr; 36 dcl i fixed bin; 37 dcl j fixed bin; 38 dcl num char (12) ; 39 dcl relpn char (32); 40 dcl dn (3) char (168); 41 dcl en (3) char (32); 42 dcl code fixed bin (35); 43 dcl new_entry_count fixed bin; 44 dcl ignore fixed bin (35); 45 dcl myname char (32); 46 47 dcl cleanup condition; 48 49 dcl cu_$arg_count entry returns (fixed bin); 50 dcl hcs_$fs_get_path_name entry (ptr, char (*), fixed bin, char (*), fixed bin (35)); 51 dcl adjust_bit_count_ entry (char (*), char (*), bit (1), fixed bin, fixed bin (35)); 52 dcl hcs_$make_seg entry (char (*), char (*), char (*), fixed bin (5), ptr, fixed bin (35)); 53 dcl cu_$arg_ptr entry (fixed bin, ptr, fixed bin, fixed bin (35)); 54 dcl cv_oct_check_ entry (char (*), fixed bin (35)) returns (fixed bin); 55 dcl get_temp_segments_ entry (char (*), (*) ptr, fixed bin (35)); 56 dcl release_temp_segments_ entry (char (*), (*) ptr, fixed bin (35)); 57 dcl com_err_ entry options (variable); 58 dcl suffixed_name_$make entry (char (*), char (*), char (*), fixed bin (35)); 59 dcl expand_pathname_ entry (char (*), char (*), char (*), fixed bin (35)); 60 dcl hcs_$initiate entry (char (*), char (*), char (*), fixed bin, fixed bin, ptr, fixed bin (35)); 61 dcl set_lock_$lock entry (bit (36) aligned, fixed bin, fixed bin (35)); 62 dcl set_lock_$unlock entry (bit (36) aligned, fixed bin (35)); 63 dcl hcs_$terminate_noname entry (ptr, fixed bin (35)); 64 dcl ioa_ entry options (variable); 65 dcl date_time_ entry (fixed bin (71), char (*)); 66 67 dcl error_table_$invalid_lock_reset fixed bin (35) ext; 68 dcl unspec builtin; 69 dcl null builtin; 70 dcl addr builtin; 71 1 1 /* BEGIN INCLUDE FILE ... backup_volume_log.incl.pl1 ... Feb 1976 */ 1 2 1 3 1 4 /****^ HISTORY COMMENTS: 1 5* 1) change(88-03-03,GWMay), approve(89-10-03,MCR8135), 1 6* audit(89-10-04,Beattie), install(89-10-10,MR12.3-1089): 1 7* Added values for storing the number of incremental and consolidated dump 1 8* sets to retain in the volume log. Incremented version number to 3. 1 9* END HISTORY COMMENTS */ 1 10 1 11 1 12 /* Modified: 3/7/84 by GA Texada to change to version 2 */ 1 13 dcl bvlp ptr; 1 14 dcl bvlep ptr; 1 15 1 16 dcl backup_volume_log_version_1 fixed bin static init (1) options (constant); 1 17 dcl backup_volume_log_version_2 fixed bin init(2) int static options(constant); 1 18 dcl backup_volume_log_version_3 fixed bin init(3) int static options(constant); 1 19 1 20 dcl 1 backup_volume_log based (bvlp) aligned, 1 21 2 header like backup_volume_header aligned, 1 22 2 info like backup_pvol_info aligned, 1 23 2 version fixed bin, /* version number */ 1 24 2 lock bit (36), /* shared data base */ 1 25 2 pvname char (32), /* physical volume name */ 1 26 2 pvid bit (36), /* physical volume id */ 1 27 2 next fixed bin, /* next available dump record */ 1 28 2 reload_groups fixed bin, /* number of reload groups in log */ 1 29 2 purge_control (3), /* control selective purging by dump type */ 1 30 3 group (36) bit (1) unaligned, /* up to 36 reload groups */ 1 31 2 disk_type fixed bin unal, /* type of disk drive */ 1 32 2 half_word_pad bit(18) unal, /* MBZ */ 1 33 2 rpv_pvid bit(36), /* pvid of this volumes RPV */ 1 34 2 Nsaved_incr_sets fixed bin, /* number of incr cycles to retain */ 1 35 2 Nsaved_cons_sets fixed bin, /* number of incr cycles to retain */ 1 36 2 pad (31) bit (36), /* for future expansion (MBZ) */ 1 37 2 array (1:1 refer (backup_volume_log.next)) like bvle aligned; 1 38 1 39 dcl 1 bvle based (bvlep) aligned, 1 40 2 cycle_uid bit (36), /* uid of this dump cycle */ 1 41 2 dump_type fixed bin, /* type of dump */ 1 42 2 volname char (32), /* name of output volume */ 1 43 2 open_time fixed bin (71), /* opening time of dump pass on this physical volume */ 1 44 2 close_time fixed bin (71), /* ending time of dump pass */ 1 45 2 volid bit (36), /* uid of output volume */ 1 46 2 io_module char (32), /* outer module name that wrote this volume */ 1 47 2 flags, /* flags */ 1 48 3 purge_scan_logged bit (1) unaligned, /* if on object looged during purge scan */ 1 49 3 pad1 bit (35) unaligned, 1 50 2 pad (7) bit (36), /* for future expansion */ 1 51 (2 dir_num fixed bin, /* number of dirs dumped on this pass */ 1 52 2 dir_rec fixed bin, /* number of records of dirs */ 1 53 2 seg_num fixed bin, /* number of segs dumped on this pass */ 1 54 2 seg_rec fixed bin) unaligned; /* number of records of segs */ 1 55 1 56 /* END INCLUDE FILE ... backup_volume_log */ 72 2 1 /* BEGIN INCLUDE FILE ... backup_pvol_info.incl.pl1 */ 2 2 2 3 dcl bpvip ptr; 2 4 2 5 dcl 1 backup_pvol_info based (bpvip) aligned, 2 6 2 label like label aligned, 2 7 2 n_vtoce fixed bin, 2 8 2 n_free_vtoce fixed bin, 2 9 2 n_rec fixed bin, 2 10 2 baseadd fixed bin, 2 11 2 n_free_rec fixed bin; 2 12 2 13 /* END INCLUDE FILE ... backup_pvol_info.incl.pl1 */ 73 3 1 /* BEGIN INCLUDE FILE ... fs_vol_label.incl.pl1 .. last modified January 1982 for new volume map format */ 3 2 3 3 /****^ HISTORY COMMENTS: 3 4* 1) change(86-04-10,Fawcett), approve(86-04-10,MCR7383), 3 5* audit(86-05-12,Coppola), install(86-07-18,MR12.0-1098): 3 6* Add the subvolume info. 3 7* 2) change(88-05-27,GWMay), approve(88-05-27,MCR7883), 3 8* audit(88-06-14,Beattie), install(88-07-19,MR12.2-1061): 3 9* Added inconsistent_dbm bit used to determine consistency of volume 3 10* dumper bit maps. 3 11* END HISTORY COMMENTS */ 3 12 3 13 /* This is the label at fixed location of each physical volume. Length 1 page */ 3 14 /* Note: fsout_vol clears pad fields before writing the label */ 3 15 3 16 dcl labelp ptr; 3 17 3 18 dcl 1 label based (labelp) aligned, 3 19 3 20 /* First comes data not used by Multics.. for compatibility with GCOS */ 3 21 3 22 2 gcos (5*64) fixed bin, 3 23 3 24 /* Now we have the Multics label */ 3 25 3 26 2 Multics char (32) init ("Multics Storage System Volume"), /* Identifier */ 3 27 2 version fixed bin, /* Version 1 */ 3 28 2 mfg_serial char (32), /* Manufacturer's serial number */ 3 29 2 pv_name char (32), /* Physical volume name. */ 3 30 2 lv_name char (32), /* Name of logical volume for pack */ 3 31 2 pvid bit (36), /* Unique ID of this pack */ 3 32 2 lvid bit (36), /* unique ID of its logical vol */ 3 33 2 root_pvid bit (36), /* unique ID of the pack containing the root. everybody must agree. */ 3 34 2 time_registered fixed bin (71), /* time imported to system */ 3 35 2 n_pv_in_lv fixed bin, /* # phys volumes in logical */ 3 36 2 vol_size fixed bin, /* total size of volume, in records */ 3 37 2 vtoc_size fixed bin, /* number of recs in fixed area + vtoc */ 3 38 2 not_used bit (1) unal, /* used to be multiple_class */ 3 39 2 private bit (1) unal, /* TRUE if was registered as private */ 3 40 2 inconsistent_dbm bit (1) unal, /* TRUE if ESD-less crash */ 3 41 2 flagpad bit (33) unal, 3 42 2 max_access_class bit (72), /* Maximum access class for stuff on volume */ 3 43 2 min_access_class bit (72), /* Minimum access class for stuff on volume */ 3 44 2 password bit (72), /* not yet used */ 3 45 2 number_of_sv fixed bin, /* if = 0 not a subvolume else the number of svs */ 3 46 2 this_sv fixed bin, /* what subvolume number it is */ 3 47 2 sub_vol_name char (1), /* what subvolume name (a b c d) it is */ 3 48 2 pad1 (13) fixed bin, 3 49 2 time_mounted fixed bin (71), /* time mounted */ 3 50 2 time_map_updated fixed bin (71), /* time vmap known good */ 3 51 3 52 /* The next two words overlay time_unmounted on pre-MR10 systems. This 3 53* forces a salvage if an MR10 pack is mounted on an earlier system. 3 54* */ 3 55 2 volmap_version fixed bin, /* version of volume map (currently 1) */ 3 56 2 pad6 fixed bin, 3 57 3 58 2 time_salvaged fixed bin (71), /* time salvaged */ 3 59 2 time_of_boot fixed bin (71), /* time of last bootload */ 3 60 2 time_unmounted fixed bin (71), /* time unmounted cleanly */ 3 61 2 last_pvtx fixed bin, /* pvtx in that PDMAP */ 3 62 2 pad1a (2) fixed bin, 3 63 2 err_hist_size fixed bin, /* size of pack error history */ 3 64 2 time_last_dmp (3) fixed bin (71), /* time last completed dump pass started */ 3 65 2 time_last_reloaded fixed bin (71), /* what it says */ 3 66 2 pad2 (40) fixed bin, 3 67 2 root, 3 68 3 here bit (1), /* TRUE if the root is on this pack */ 3 69 3 root_vtocx fixed bin (35), /* VTOC index of root, if it is here */ 3 70 3 shutdown_state fixed bin, /* Status of hierarchy */ 3 71 3 pad7 bit (1) aligned, 3 72 3 disk_table_vtocx fixed bin, /* VTOC index of disk table on RPV */ 3 73 3 disk_table_uid bit (36) aligned, /* UID of disk table */ 3 74 3 esd_state fixed bin, /* State of esd */ 3 75 2 volmap_record fixed bin, /* Begin record of volume map */ 3 76 2 size_of_volmap fixed bin, /* Number of records in volume map */ 3 77 2 vtoc_map_record fixed bin, /* Begin record of VTOC map */ 3 78 2 size_of_vtoc_map fixed bin, /* Number of records in VTOC map */ 3 79 2 volmap_unit_size fixed bin, /* Number of words per volume map section */ 3 80 2 vtoc_origin_record fixed bin, /* Begin record of VTOC */ 3 81 2 dumper_bit_map_record fixed bin, /* Begin record of dumper bit-map */ 3 82 2 vol_trouble_count fixed bin, /* Count of inconsistencies found since salvage */ 3 83 2 pad3 (52) fixed bin, 3 84 2 nparts fixed bin, /* Number of special partitions on pack */ 3 85 2 parts (47), 3 86 3 part char (4), /* Name of partition */ 3 87 3 frec fixed bin, /* First record */ 3 88 3 nrec fixed bin, /* Number of records */ 3 89 3 pad5 fixed bin, 3 90 2 pad4 (5*64) fixed bin; 3 91 3 92 dcl Multics_ID_String char (32) init ("Multics Storage System Volume") static; 3 93 3 94 /* END INCLUDE FILE fs_vol_label.incl.pl1 */ 74 4 1 /* BEGIN INCLUDE FILE ... backup_volume_header ... Feb 1976 */ 4 2 4 3 dcl hdp ptr; /* ptr to header */ 4 4 4 5 dcl 1 backup_volume_header based (hdp) aligned, 4 6 2 pattern1 bit (36), /* unique word 1 */ 4 7 2 rec1_type fixed bin, /* record 1 type */ 4 8 2 rec1_len fixed bin, /* length in chars */ 4 9 2 pattern2 bit (36), /* unique word 2 */ 4 10 2 rec2_type fixed bin, /* record 2 type */ 4 11 2 rec2_len fixed bin, /* length in chars */ 4 12 2 pattern3 bit (36), /* unique word 3 */ 4 13 2 time_dumped bit (36); /* dump time of this record */ 4 14 4 15 dcl vtoce_type fixed bin static init (1) options (constant); /* type code for vtoce */ 4 16 dcl dir_type fixed bin static init (2) options (constant); /* type code for directory */ 4 17 dcl seg_type fixed bin static init (3) options (constant); /* type code for segment */ 4 18 dcl null_type fixed bin static init (4) options (constant); /* type code for null record */ 4 19 dcl volume_log_type fixed bin static init (5) options (constant); /* type code for volume log */ 4 20 dcl prev_output_log_type fixed bin static init (6) options (constant); /* type code for prev output log */ 4 21 dcl contents_type fixed bin static init (7) options (constant); /* type code for contents segment of previous volume */ 4 22 dcl info_type fixed bin static init (8) options (constant); /* type code for info structure */ 4 23 4 24 dcl pattern1 bit (36) int static init ("110111000011001100011101101010100101"b) options (constant); 4 25 dcl pattern2 bit (36) int static init ("101001010101101110001100110000111011"b) options (constant); 4 26 dcl pattern3 bit (36) int static init ("001000111100110011100010010101011010"b) options (constant); 4 27 4 28 /* END INCLUDE FILE ... backup_volume_header */ 75 5 1 /* BEGIN INCLUDE FILE ... backup_static_variables.incl.pl1 ... March 1976 */ 5 2 5 3 5 4 dcl incr fixed bin init (1) internal static options (constant); /* incremental dump mode */ 5 5 dcl cons fixed bin init (2) internal static options (constant); /* consolidated dump mode */ 5 6 dcl comp fixed bin init (3) internal static options (constant); /* complete dump mode */ 5 7 dcl backup_version_1 fixed bin init (1) static internal options (constant); /* backup_version_1 of input/output structures */ 5 8 5 9 5 10 5 11 /* END INCLUDE FILE ... backup_static_variables.incl.pl1 */ 76 77 78 /* init local variables */ 79 code = 0; 80 temp_segs = "0"b; 81 old_lock = "0"b; 82 new_lock = "0"b; 83 update_lock = "0"b; 84 new_entry_count = 0; 85 old_bvlp, update_bvlp, temp_bvlp, new_bvlp, tp (*) = null; 86 myname = "merge_volume_log"; 87 88 on cleanup call finish_; 89 /* pickup pathnames and convert to pointers */ 90 do i = 1, 2; 91 call cu_$arg_ptr (i, argp, argl, code); 92 if code ^= 0 then goto err; 93 94 call suffixed_name_$make (arg, "volog", relpn, code); 95 if code ^= 0 then goto err; 96 97 call expand_pathname_ (relpn, dn (i), en (i), code); 98 if code ^= 0 then goto err; 99 100 call hcs_$initiate (dn (i), en (i), "", 0, 0, p (i), code); 101 if p (i) = null then goto err; 102 end; 103 /* set local copies */ 104 old_bvlp = p (1); 105 update_bvlp = p (2); 106 107 if old_bvlp = update_bvlp then do; 108 call com_err_ (0, myname, "Same log specified as old and new"); 109 goto finish; 110 end; 111 /* create third seg if required */ 112 if cu_$arg_count () > 2 then do; 113 call cu_$arg_ptr (3, argp, argl, code); 114 if code ^= 0 then goto err; 115 call suffixed_name_$make (arg, "volog", relpn, code); 116 if code ^= 0 then goto err; 117 call expand_pathname_ (relpn, dn (3), en (3), code); 118 if code ^= 0 then goto err; 119 call hcs_$make_seg (dn (3), en (3), "", 1010b, new_bvlp, code); 120 if new_bvlp = null then goto err; 121 end; 122 /* set up temp segs */ 123 call get_temp_segments_ (myname, tp, code); 124 if code ^= 0 then goto err; 125 temp_segs = "1"b; 126 temp_bvlp = tp (1); 127 /* unlock logs if we abort */ 128 /* lock both logs - set flags indicating they're locked */ 129 call set_lock_$lock (old_bvlp -> backup_volume_log.lock, -1, code); 130 if code ^= 0 then do; 131 if code = error_table_$invalid_lock_reset then code = 0; 132 else goto err; 133 end; 134 old_lock = "1"b; 135 call set_lock_$lock (update_bvlp -> backup_volume_log.lock, -1, code); 136 if code ^= 0 then goto err; 137 update_lock = "1"b; 138 139 /* Compare each entry in each log and order the new log enties by which entry, if used, has 140* an earlier starting time. */ 141 142 i, j = 1; 143 do while (i <= old_bvlp -> backup_volume_log.next | j <= update_bvlp -> backup_volume_log.next); 144 old_bvlep = addr (old_bvlp -> backup_volume_log.array (i)); 145 update_bvlep = addr (update_bvlp -> backup_volume_log.array (j)); 146 147 /* If both cycle uids valid -> compare and take one with first open time. */ 148 149 if old_bvlep -> bvle.cycle_uid ^= "0"b & update_bvlep -> bvle.cycle_uid ^= "0"b then do; 150 if old_bvlep -> bvle.open_time < update_bvlep -> bvle.open_time then call log_entry (old_bvlep, i); 151 else if old_bvlep -> bvle.open_time > update_bvlep -> bvle.open_time then 152 call log_entry (update_bvlep, j); 153 154 /* If both open-times equal -> take only one if identical; otherwise, both */ 155 156 else do; /* equal open times */ 157 if unspec (old_bvlep -> bvle) = unspec (update_bvlep -> bvle) then do; 158 call log_entry (old_bvlep, i); 159 j = j + 1; 160 end; 161 else do; 162 call log_entry (old_bvlep, i); 163 call log_entry (update_bvlep, j); 164 end; 165 end; 166 end; 167 168 /* If old cycle uid valid but update invalid -> take old, discard update. */ 169 170 else if old_bvlep -> bvle.cycle_uid ^= "0"b then do; 171 call log_entry (old_bvlep, i); 172 j = j + 1; 173 end; 174 175 /* If update cycle uid valid but old invalid -> take update, discard old. */ 176 177 else if update_bvlep -> bvle.cycle_uid ^= "0"b then do; 178 call log_entry (update_bvlep, j); 179 i = i + 1; 180 end; 181 182 /* If both cycle uids invalid -> discard both with warning. */ 183 184 else do; 185 call com_err_ (0, myname, "null entry in both logs"); 186 i = i + 1; 187 j = j + 1; 188 end; 189 end; 190 /* if new copy wanted copy old log */ 191 if new_bvlp ^= null then do; 192 new_bvlp -> backup_volume_log = old_bvlp -> backup_volume_log; 193 if code ^= 0 then goto err; 194 copy_bvlp = new_bvlp; 195 new_lock = "1"b; 196 end; 197 else copy_bvlp = old_bvlp; 198 /* copy temp log entries into right place */ 199 do i = 1 to new_entry_count; 200 copy_bvlp -> backup_volume_log.array (i) = temp_bvlp -> backup_volume_log.array (i); 201 end; 202 /* Unlock all locked logs and set flags */ 203 copy_bvlp -> backup_volume_log.next = new_entry_count; 204 call set_lock_$unlock (old_bvlp -> backup_volume_log.lock, code); 205 if code ^= 0 then goto err; 206 old_lock = "0"b; 207 call set_lock_$unlock (update_bvlp -> backup_volume_log.lock, code); 208 if code ^= 0 then goto err; 209 update_lock = "0"b; 210 if new_bvlp ^= null then call set_lock_$unlock (new_bvlp -> backup_volume_log.lock, code); 211 if code ^= 0 then goto err; 212 new_lock = "0"b; 213 214 call ioa_ ("volume logs ^a and ^a merged", en (1), en (2)); 215 216 /* Unlock all locked logs and terminate all known logs. Also release temp segs */ 217 218 finish: 219 call finish_; 220 return; 221 222 err: call com_err_ (code, myname); 223 goto finish; 224 225 log_entry: proc (vlep, index); 226 227 /* This proc adds an entry to the new volume log */ 228 229 dcl vlep ptr; 230 dcl index fixed bin; 231 new_entry_count = new_entry_count + 1; 232 index = index + 1; 233 temp_bvlp -> backup_volume_log.array (new_entry_count) = vlep -> bvle; 234 end log_entry; 235 236 237 finish_: proc; 238 if old_lock & old_bvlp ^= null then call set_lock_$unlock (old_bvlp -> backup_volume_log.lock, code); 239 if new_lock & new_bvlp ^= null then call set_lock_$unlock (new_bvlp -> backup_volume_log.lock, code); 240 if update_lock & update_bvlp ^= null then 241 call set_lock_$unlock (update_bvlp -> backup_volume_log.lock, code); 242 if old_bvlp ^= null then call setbc_term (old_bvlp); 243 if update_bvlp ^= null then call setbc_term (update_bvlp); 244 if new_bvlp ^= null then call setbc_term (new_bvlp); 245 if temp_segs then call release_temp_segments_ (myname, tp, ignore); 246 return; 247 end finish_; 248 setbc_term: proc (p); 249 dcl p ptr; 250 dcl dn char (168); 251 dcl en char (32); 252 dcl dnl fixed bin; 253 call hcs_$fs_get_path_name (p, dn, dnl, en, (0)); 254 call adjust_bit_count_ (dn, en, "1"b, (0), (0)); 255 call hcs_$terminate_noname (p, (0)); 256 return; 257 end setbc_term; 258 end merge_volume_log; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 10/10/89 1359.3 merge_volume_log.pl1 >special_ldd>install>MR12.3-1089>merge_volume_log.pl1 72 1 10/10/89 1357.9 backup_volume_log.incl.pl1 >special_ldd>install>MR12.3-1089>backup_volume_log.incl.pl1 73 2 06/07/77 1233.6 backup_pvol_info.incl.pl1 >ldd>include>backup_pvol_info.incl.pl1 74 3 07/21/88 2036.0 fs_vol_label.incl.pl1 >ldd>include>fs_vol_label.incl.pl1 75 4 09/05/80 1136.5 backup_volume_header.incl.pl1 >ldd>include>backup_volume_header.incl.pl1 76 5 09/05/80 1136.5 backup_static_variables.incl.pl1 >ldd>include>backup_static_variables.incl.pl1 NAMES DECLARED IN THIS COMPILATION. IDENTIFIER OFFSET LOC STORAGE CLASS DATA TYPE ATTRIBUTES AND REFERENCES (* indicates a set context) NAMES DECLARED BY DECLARE STATEMENT. addr builtin function dcl 70 ref 144 145 adjust_bit_count_ 000014 constant entry external dcl 51 ref 254 arg based char packed unaligned dcl 19 set ref 94* 115* argl 000100 automatic fixed bin(17,0) dcl 20 set ref 91* 94 94 113* 115 115 argp 000102 automatic pointer dcl 21 set ref 91* 94 113* 115 array 2100 based structure array level 2 dcl 1-20 set ref 144 145 200* 200 233* backup_pvol_info based structure level 1 dcl 2-5 backup_volume_header based structure level 1 dcl 4-5 backup_volume_log based structure level 1 dcl 1-20 set ref 192* 192 bvle based structure level 1 dcl 1-39 ref 157 157 233 cleanup 000410 stack reference condition dcl 47 ref 88 code 000374 automatic fixed bin(35,0) dcl 42 set ref 79* 91* 92 94* 95 97* 98 100* 113* 114 115* 116 117* 118 119* 123* 124 129* 130 131 131* 135* 136 193 204* 205 207* 208 210* 211 222* 238* 239* 240* com_err_ 000026 constant entry external dcl 57 ref 108 185 222 copy_bvlp 000124 automatic pointer dcl 32 set ref 194* 197* 200 203 cu_$arg_count 000010 constant entry external dcl 49 ref 112 cu_$arg_ptr 000020 constant entry external dcl 53 ref 91 113 cycle_uid based bit(36) level 2 dcl 1-39 ref 149 149 170 177 dn 000146 automatic char(168) array packed unaligned dcl 40 in procedure "merge_volume_log" set ref 97* 100* 117* 119* dn 000106 automatic char(168) packed unaligned dcl 250 in procedure "setbc_term" set ref 253* 254* dnl 000170 automatic fixed bin(17,0) dcl 252 set ref 253* en 000344 automatic char(32) array packed unaligned dcl 41 in procedure "merge_volume_log" set ref 97* 100* 117* 119* 214* 214* en 000160 automatic char(32) packed unaligned dcl 251 in procedure "setbc_term" set ref 253* 254* error_table_$invalid_lock_reset 000046 external static fixed bin(35,0) dcl 67 ref 131 expand_pathname_ 000032 constant entry external dcl 59 ref 97 117 get_temp_segments_ 000022 constant entry external dcl 55 ref 123 hcs_$fs_get_path_name 000012 constant entry external dcl 50 ref 253 hcs_$initiate 000034 constant entry external dcl 60 ref 100 hcs_$make_seg 000016 constant entry external dcl 52 ref 119 hcs_$terminate_noname 000042 constant entry external dcl 63 ref 255 i 000134 automatic fixed bin(17,0) dcl 36 set ref 90* 91* 97 97 100 100 100 101* 142* 143 144 150* 158* 162* 171* 179* 179 186* 186 199* 200 200* ignore 000376 automatic fixed bin(35,0) dcl 44 set ref 245* index parameter fixed bin(17,0) dcl 230 set ref 225 232* 232 ioa_ 000044 constant entry external dcl 64 ref 214 j 000135 automatic fixed bin(17,0) dcl 37 set ref 142* 143 145 151* 159* 159 163* 172* 172 178* 187* 187 label based structure level 1 dcl 3-18 lock 2016 based bit(36) level 2 dcl 1-20 set ref 129* 135* 204* 207* 210* 238* 239* 240* myname 000377 automatic char(32) packed unaligned dcl 45 set ref 86* 108* 123* 185* 222* 245* new_bvlp 000122 automatic pointer dcl 31 set ref 85* 119* 120 191 192 194 210 210 239 239 244 244* new_entry_count 000375 automatic fixed bin(17,0) dcl 43 set ref 84* 199 203 231* 231 233 new_lock 000105 automatic bit(1) packed unaligned dcl 23 set ref 82* 195* 212* 239 next 2030 based fixed bin(17,0) level 2 dcl 1-20 set ref 143 143 192 203* null builtin function dcl 69 ref 85 101 120 191 210 238 239 240 242 243 244 old_bvlep 000126 automatic pointer dcl 33 set ref 144* 149 150 150* 151 157 158* 162* 170 171* old_bvlp 000130 automatic pointer dcl 34 set ref 85* 104* 107 129 143 144 192 197 204 238 238 242 242* old_lock 000104 automatic bit(1) packed unaligned dcl 22 set ref 81* 134* 206* 238 open_time 12 based fixed bin(71,0) level 2 dcl 1-39 ref 150 150 151 151 p 000112 automatic pointer array dcl 28 in procedure "merge_volume_log" set ref 100* 101 104 105 p parameter pointer dcl 249 in procedure "setbc_term" set ref 248 253* 255* release_temp_segments_ 000024 constant entry external dcl 56 ref 245 relpn 000136 automatic char(32) packed unaligned dcl 39 set ref 94* 97* 115* 117* set_lock_$lock 000036 constant entry external dcl 61 ref 129 135 set_lock_$unlock 000040 constant entry external dcl 62 ref 204 207 210 238 239 240 suffixed_name_$make 000030 constant entry external dcl 58 ref 94 115 temp_bvlp 000116 automatic pointer dcl 29 set ref 85* 126* 200 233 temp_segs 000106 automatic bit(1) packed unaligned dcl 24 set ref 80* 125* 245 tp 000110 automatic pointer array dcl 27 set ref 85* 123* 126 245* unspec builtin function dcl 68 ref 157 157 update_bvlep 000120 automatic pointer dcl 30 set ref 145* 149 150 151 151* 157 163* 177 178* update_bvlp 000132 automatic pointer dcl 35 set ref 85* 105* 107 135 143 145 207 240 240 243 243* update_lock 000107 automatic bit(1) packed unaligned dcl 25 set ref 83* 137* 209* 240 vlep parameter pointer dcl 229 ref 225 233 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. Multics_ID_String internal static char(32) initial packed unaligned dcl 3-92 backup_version_1 internal static fixed bin(17,0) initial dcl 5-7 backup_volume_log_version_1 internal static fixed bin(17,0) initial dcl 1-16 backup_volume_log_version_2 internal static fixed bin(17,0) initial dcl 1-17 backup_volume_log_version_3 internal static fixed bin(17,0) initial dcl 1-18 bpvip automatic pointer dcl 2-3 bvlep automatic pointer dcl 1-14 bvlp automatic pointer dcl 1-13 comp internal static fixed bin(17,0) initial dcl 5-6 cons internal static fixed bin(17,0) initial dcl 5-5 contents_type internal static fixed bin(17,0) initial dcl 4-21 cv_oct_check_ 000000 constant entry external dcl 54 cycle_uid automatic bit(36) packed unaligned dcl 26 date_time_ 000000 constant entry external dcl 65 dir_type internal static fixed bin(17,0) initial dcl 4-16 hdp automatic pointer dcl 4-3 incr internal static fixed bin(17,0) initial dcl 5-4 info_type internal static fixed bin(17,0) initial dcl 4-22 labelp automatic pointer dcl 3-16 null_type internal static fixed bin(17,0) initial dcl 4-18 num automatic char(12) packed unaligned dcl 38 pattern1 internal static bit(36) initial packed unaligned dcl 4-24 pattern2 internal static bit(36) initial packed unaligned dcl 4-25 pattern3 internal static bit(36) initial packed unaligned dcl 4-26 prev_output_log_type internal static fixed bin(17,0) initial dcl 4-20 seg_type internal static fixed bin(17,0) initial dcl 4-17 volume_log_type internal static fixed bin(17,0) initial dcl 4-19 vtoce_type internal static fixed bin(17,0) initial dcl 4-15 NAMES DECLARED BY EXPLICIT CONTEXT. err 001161 constant label dcl 222 ref 92 95 98 101 114 116 118 120 124 131 136 193 205 208 211 finish 001154 constant label dcl 218 ref 109 223 finish_ 001216 constant entry internal dcl 237 ref 88 218 log_entry 001177 constant entry internal dcl 225 ref 150 151 158 162 163 171 178 merge_volume_log 000063 constant entry external dcl 11 setbc_term 001373 constant entry internal dcl 248 ref 242 243 244 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 1746 2016 1514 1756 Length 2342 1514 50 310 231 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME merge_volume_log 350 external procedure is an external procedure. on unit on line 88 64 on unit log_entry internal procedure shares stack frame of external procedure merge_volume_log. finish_ 167 internal procedure is called by several nonquick procedures. setbc_term internal procedure shares stack frame of internal procedure finish_. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME finish_ 000106 dn setbc_term 000160 en setbc_term 000170 dnl setbc_term merge_volume_log 000100 argl merge_volume_log 000102 argp merge_volume_log 000104 old_lock merge_volume_log 000105 new_lock merge_volume_log 000106 temp_segs merge_volume_log 000107 update_lock merge_volume_log 000110 tp merge_volume_log 000112 p merge_volume_log 000116 temp_bvlp merge_volume_log 000120 update_bvlep merge_volume_log 000122 new_bvlp merge_volume_log 000124 copy_bvlp merge_volume_log 000126 old_bvlep merge_volume_log 000130 old_bvlp merge_volume_log 000132 update_bvlp merge_volume_log 000134 i merge_volume_log 000135 j merge_volume_log 000136 relpn merge_volume_log 000146 dn merge_volume_log 000344 en merge_volume_log 000374 code merge_volume_log 000375 new_entry_count merge_volume_log 000376 ignore merge_volume_log 000377 myname merge_volume_log THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out_desc call_ext_out call_int_this call_int_other return_mac enable_op ext_entry int_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. adjust_bit_count_ com_err_ cu_$arg_count cu_$arg_ptr expand_pathname_ get_temp_segments_ hcs_$fs_get_path_name hcs_$initiate hcs_$make_seg hcs_$terminate_noname ioa_ release_temp_segments_ set_lock_$lock set_lock_$unlock suffixed_name_$make THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$invalid_lock_reset LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 11 000062 79 000070 80 000071 81 000072 82 000073 83 000074 84 000075 85 000076 86 000116 88 000121 90 000143 91 000147 92 000164 94 000166 95 000220 97 000222 98 000253 100 000255 101 000327 102 000335 104 000343 105 000345 107 000347 108 000353 109 000400 112 000401 113 000413 114 000432 115 000434 116 000466 117 000470 118 000515 119 000517 120 000556 123 000562 124 000603 125 000605 126 000607 129 000611 130 000627 131 000631 134 000635 135 000637 136 000655 137 000657 142 000661 143 000664 144 000674 145 000700 149 000705 150 000711 151 000717 157 000723 158 000727 159 000731 160 000732 162 000733 163 000735 166 000737 170 000740 171 000742 172 000744 173 000745 177 000746 178 000750 179 000752 180 000753 185 000754 186 001004 187 001005 189 001006 191 001007 192 001013 193 001023 194 001025 195 001026 196 001030 197 001031 199 001032 200 001041 201 001051 203 001053 204 001056 205 001070 206 001072 207 001073 208 001105 209 001107 210 001110 211 001126 212 001130 214 001131 218 001154 220 001160 222 001161 223 001176 225 001177 231 001201 232 001202 233 001203 234 001214 237 001215 238 001223 239 001243 240 001264 242 001305 243 001320 244 001333 245 001346 246 001372 248 001373 253 001375 254 001427 255 001464 256 001477 ----------------------------------------------------------- Historical Background This edition of the Multics software materials and documentation is provided and donated to Massachusetts Institute of Technology by Group BULL including BULL HN Information Systems Inc. as a contribution to computer science knowledge. This donation is made also to give evidence of the common contributions of Massachusetts Institute of Technology, Bell Laboratories, General Electric, Honeywell Information Systems Inc., Honeywell BULL Inc., Groupe BULL and BULL HN Information Systems Inc. to the development of this operating system. Multics development was initiated by Massachusetts Institute of Technology Project MAC (1963-1970), renamed the MIT Laboratory for Computer Science and Artificial Intelligence in the mid 1970s, under the leadership of Professor Fernando Jose Corbato. Users consider that Multics provided the best software architecture for managing computer hardware properly and for executing programs. Many subsequent operating systems incorporated Multics principles. Multics was distributed in 1975 to 2000 by Group Bull in Europe , and in the U.S. by Bull HN Information Systems Inc., as successor in interest by change in name only to Honeywell Bull Inc. and Honeywell Information Systems Inc. . ----------------------------------------------------------- Permission to use, copy, modify, and distribute these programs and their documentation for any purpose and without fee is hereby granted,provided that the below copyright notice and historical background appear in all copies and that both the copyright notice and historical background and this permission notice appear in supporting documentation, and that the names of MIT, HIS, BULL or BULL HN not be used in advertising or publicity pertaining to distribution of the programs without specific prior written permission. Copyright 1972 by Massachusetts Institute of Technology and Honeywell Information Systems Inc. Copyright 2006 by BULL HN Information Systems Inc. Copyright 2006 by Bull SAS All Rights Reserved