COMPILATION LISTING OF SEGMENT fsout_vol Compiled by: Multics PL/I Compiler, Release 32f, of October 9, 1989 Compiled at: Bull HN, Phoenix AZ, System-M Compiled on: 11/11/89 1003.0 mst Sat Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Bull Inc., 1987 * 4* * * 5* * Copyright, (C) Honeywell Information Systems Inc., 1983 * 6* * * 7* *********************************************************** */ 8 9 /* format: style4 */ 10 11 fsout_vol: proc (tx, SHUT); 12 13 /* FSOUT_VOL - Update the volume map, VTOC header, and label 14* for one physical volume. 15* 16* This program is called at volume demount time, which includes shutdown, and 17* at the time that a volume is accepted. All calls except SHUT calls cause 18* the label to indicate that volume inconsistencies exist. 19* 20* WARNING: This program uses read_disk. 21* 22* First coding by Tom VanVleck. 23* 24* Modified by Greenberg for dynamic demount, large volume maps, cross-bootload 25* paging device management, and disk table location, at various times. 26* Modified by D. Vinograd 6/76 to write out volume dumper bit map into volume header 27* Modified by R. Holmstedt 10/80 to use fsdisk_error_message in syserr message. 28* Modified by J. Bongiovanni, March 1982, for record stocks and VTOCE stocks 29* Modified by J. Bongiovanni, August 1982, to update vol_trouble_count in label 30* always (for scavenger) 31* Modified '82 for english error codes 32* Modified by E. N. Kittlitz, September 1983, clear label pad fields. 33**/ 34 35 36 /****^ HISTORY COMMENTS: 37* 1) change(88-05-27,GWMay), approve(88-05-27,MCR7883), 38* audit(88-06-14,Beattie), install(88-07-19,MR12.2-1061): 39* Added assignment of the inconsistent volume dumper bit map flag. 40* 2) change(88-09-07,Beattie), approve(88-09-19,MCR7989), 41* audit(88-10-06,Farley), install(88-10-10,MR12.2-1155): 42* Fix so that PV label information is not displayed in error messages 43* until it is read from the disk. 44* END HISTORY COMMENTS */ 45 46 47 /* =================================================== */ 48 49 labelp, vtoc_headerp, vol_mapp = null; /* Init variables */ 50 have_pv_label = "0"b; /* Don't have a PV label to display. */ 51 pvt_arrayp = addr (pvt$array); 52 53 pvtep = addr (pvt_array (tx)); /* Get ptr to the subject pvte. */ 54 55 /* If shutting the volume down, write out maps and dumper bit map */ 56 57 if SHUT = 1 then do; 58 59 /* If the volmap_seg exists, update the header and write it to disk. 60* It may not exist because of crashes during mount/demount or 61* ESD failures */ 62 63 if pvte.volmap_astep ^= null () 64 then do; 65 66 astep = pvte.volmap_astep; 67 68 call pmut$swap_sdw (addr (volmap_abs_seg$), addr (pvte.volmap_seg_sdw)); 69 70 if pvte.vtoc_map_stock_ptr ^= null () 71 then do; 72 73 call vtoce_stock_man$drain_stock (pvtep); 74 vtoc_mapp = ptr (addr (volmap_abs_seg$), pvte.vtoc_map_offset); 75 76 on page_fault_error begin; 77 call dsker (WRITE, VTOC_MAP); 78 goto END_VTOC_MAP_UPDATE; 79 end; 80 81 vtoc_map.n_free_vtoce = pvte.n_free_vtoce; 82 END_VTOC_MAP_UPDATE: 83 vtoce_stockp = pvte.vtoc_map_stock_ptr; 84 call stock_man$free_vtoce_stock (pvtep, vtoce_stockp); 85 86 revert page_fault_error; 87 end; 88 89 if pvte.volmap_stock_ptr ^= null () 90 then do; 91 92 call page$drain_record_stock (pvtep); 93 vol_mapp = addr (volmap_abs_seg$); 94 95 on page_fault_error begin; 96 call dsker (WRITE, VOL_MAP); 97 goto END_VOLMAP_UPDATE; 98 end; 99 100 vol_map.n_free_rec = pvte.nleft; 101 vol_map.n_rec = pvte.totrec; 102 103 END_VOLMAP_UPDATE: 104 record_stockp = pvte.volmap_stock_ptr; 105 call stock_man$free_record_stock (pvtep, record_stockp); 106 107 revert page_fault_error; 108 end; 109 110 tsdw = 0; 111 call pmut$swap_sdw (addr (volmap_abs_seg$), addr (tsdw)); 112 113 end; 114 115 if pvte.volmap_astep ^= null () then do; 116 pvte.volmap_seg_sdw = 0; 117 astep = pvte.volmap_astep; 118 call page$cleanup (astep); 119 call lock$lock_ast; 120 call put_aste (astep); 121 call lock$unlock_ast; 122 aste.volmap_seg = "0"b; 123 pvte.volmap_astep = null (); 124 end; 125 126 /* Not get the dumber bit map back to disk */ 127 128 vtoc_headerp = addr (buffer); /* Re-use the buffer */ 129 call read_disk (tx, DUMPER_BIT_MAP_ADDR, vtoc_headerp, ec); /* Must read in old VTOC header */ 130 if ec = 0 then do; /* header successfully read, so merge new items */ 131 do i = 0, 1; 132 call dbm_man$free_map (tx, addr (buffer), i, ec); 133 call write_disk (tx, DUMPER_BIT_MAP_ADDR + i, addr (buffer), ec); 134 if ec ^= 0 then call dsker (WRITE, VOL_MAP); 135 clearbuf = "0"b; 136 end; 137 end; 138 139 else do; /* Otherwise, complain and discard old dumper maps */ 140 call dsker (READ, VTOC_HEADER); 141 call syserr (ANNOUNCE, "fsout_vol: Discarding old dumper bit maps for ^a_^a^[^a^;^1s^].", 142 pvte.devname, convert (p99, pvte.logical_area_number), pvte.is_sv, pvte.sv_name); 143 144 do i = 0, 1; 145 call dbm_man$free_map (tx, addr (buffer), i, ec); 146 clearbuf = "0"b; 147 end; 148 end; 149 vtoc_headerp = null; /* Done with VTOC head */ 150 end; 151 152 /* set the time map updated and the time unmounted in the label. */ 153 154 155 labelp = addr (buffer); /* Again re-use buffer */ 156 call read_disk (tx, LABEL_ADDR, labelp, ec); /* Read in old label. */ 157 if ec ^= 0 then call dsker (READ, VOL_LABEL); 158 else do; 159 have_pv_label = "1"b; /* Now we know what PV is mounted here. */ 160 label.flagpad = ""b; /* clear all pad fields */ 161 unspec (label.pad1) = ""b; 162 unspec (label.pad6) = ""b; 163 unspec (label.pad1a) = ""b; 164 unspec (label.pad2) = ""b; 165 label.root.pad7 = ""b; 166 unspec (label.pad3) = ""b; 167 do i = 1 to hbound (label.parts, 1); 168 unspec (label.parts (i).pad5) = ""b; 169 end; 170 unspec (label.pad4) = ""b; /* end pad clear */ 171 now = clock (); 172 if label.pvid ^= pvte.pvid then /* A simple check.. */ 173 call syserr (ANNOUNCE, "fsout_vol: label for ^a (^a_^a^[^a^;^1s^]) uid does not match pvt.", 174 label.pv_name, pvte.devname, convert (p99, pvte.logical_area_number), 175 pvte.is_sv, pvte.sv_name); 176 else do; 177 label.time_map_updated = now; /* unless vol_trouble later */ 178 if tx = pvt$root_pvtx then do; /* Root case */ 179 label.disk_table_vtocx = pvt$disk_table_vtocx; 180 label.disk_table_uid = pvt$disk_table_uid; 181 label.root.shutdown_state = pvt$shutdown_state; 182 label.root.esd_state = pvt$esd_state; 183 end; 184 label.time_of_boot = pvt$time_of_bootload; 185 label.vol_trouble_count = pvte.vol_trouble_count; 186 label.inconsistent_dbm = pvte.inconsistent_dbm; 187 188 if SHUT = 1 then do; /* If shutting down volume, */ 189 label.time_unmounted = now; 190 label.last_pvtx = 0; /* No need to salvage or flush pd */ 191 if (pvte.vol_trouble_count > 0) & (pvte.lvid = pvt$root_lvid) then do; 192 if pvte.nleft < MIN_RECORDS | pvte.n_vtoce < MIN_VTOCES 193 then severity = ANNOUNCE; 194 else severity = LOG; 195 call syserr (severity, "fsout_vol: ^d volume inconsistenc^[y^;ies^] on ^a (^a_^a^[^a^;^1s^]). ^d free records. ^d free VTOCEs", 196 pvte.vol_trouble_count, (pvte.vol_trouble_count = 1), label.pv_name, 197 pvte.devname, convert (p99, pvte.logical_area_number), pvte.is_sv, pvte.sv_name, 198 pvte.nleft, pvte.n_free_vtoce); 199 end; 200 end; 201 else label.last_pvtx = tx; /* Needed for pdflush */ 202 call write_disk (tx, LABEL_ADDR, labelp, ec); /* Write new label */ 203 if ec ^= 0 then call dsker (WRITE, VOL_LABEL); 204 end; 205 end; 206 labelp = null; /* Thru with buffer */ 207 return; 208 209 210 /* --------------------------------------------------- */ 211 212 dsker: proc (rw, database); 213 214 dcl rw fixed bin, /* 0 = read, 1 = write */ 215 database fixed bin; /* what data we failed on */ 216 217 dcl pv_name_from_label char (32); 218 dcl RW (0:1) char (4) static init ("read", "writ"); 219 dcl DATA (1:4) char (12) static init ("vol map", "vtoc header", "vol label", "vtoc map"); 220 221 if have_pv_label then pv_name_from_label = label.pv_name; 222 else pv_name_from_label = ""; /* prevent null ptr reference */ 223 call syserr$error_code (ANNOUNCE, ec, "fsout_vol: Error ^aing ^a for ^a_^a^[^a^;^1s^]^[ (^a)^;^s^]", 224 RW (rw), DATA (database), 225 pvte.devname, convert (p99, pvte.logical_area_number), pvte.is_sv, pvte.sv_name, have_pv_label, pv_name_from_label); 226 227 end; 228 229 dcl tx fixed bin, /* PVT index for disk to shut */ 230 SHUT fixed bin; /* INPUT argument. 1 to dismount all volumes */ 231 232 dcl ec fixed bin (35), /* errcode */ 233 now fixed bin (52), 234 tsdw fixed bin (71), 235 severity fixed bin, 236 p99 pic "99", 237 i fixed bin, 238 have_pv_label bit (1); 239 240 dcl (MIN_RECORDS init (200), 241 MIN_VTOCES init (100), 242 READ init (0), 243 WRITE init (1), 244 VOL_MAP init (1), 245 VTOC_HEADER init (2), 246 VOL_LABEL init (3), 247 VTOC_MAP init (4)) 248 fixed bin int static options (constant); 249 250 dcl pvt$disk_table_vtocx fixed bin external; 251 dcl pvt$disk_table_uid bit (36) aligned external; 252 dcl pvt$esd_state fixed bin external; 253 dcl pvt$root_lvid bit (36) aligned external; 254 dcl pvt$root_pvtx fixed bin external; 255 dcl pvt$shutdown_state fixed bin external; 256 dcl pvt$time_of_bootload fixed bin (71) external; 257 dcl volmap_abs_seg$ external; 258 259 dcl dbm_man$free_map entry (fixed bin, ptr, fixed bin, fixed bin (35)); 260 dcl lock$lock_ast entry; 261 dcl lock$unlock_ast entry; 262 dcl page$cleanup entry (ptr); 263 dcl page$drain_record_stock entry (ptr); 264 dcl pmut$swap_sdw entry (ptr, ptr); 265 dcl put_aste entry (ptr); 266 dcl read_disk entry (fixed bin, fixed bin (17), ptr, fixed bin (35)); 267 dcl stock_man$free_record_stock entry (ptr, ptr); 268 dcl stock_man$free_vtoce_stock entry (ptr, ptr); 269 dcl (syserr, syserr$error_code) ext entry options (variable); 270 dcl vtoce_stock_man$drain_stock entry (ptr); 271 dcl write_disk entry (fixed bin, fixed bin (17), ptr, fixed bin (35)); 272 273 dcl (addr, clock, convert, hbound, null, ptr, unspec) builtin; 274 275 dcl buffer (512) fixed bin (71) aligned; 276 dcl clearbuf bit (36864) aligned based (addr (buffer)); 277 278 dcl page_fault_error condition; 279 /* BEGIN INCLUDE FILE ...aste.incl.pl1 ... */ 1 2 1 3 /* Template for an AST entry. Length = 12 words. */ 1 4 1 5 /* Words 0 to 7, and 11 are read by PC; they are read and modified by SC. 1 6* Words 8, 9 and 10 are modified by PC; they should never be modified without locking the PC lock */ 1 7 /* Modified January 1985 by Keith Loepere for multi_class. */ 1 8 1 9 dcl astep ptr; 1 10 1 11 dcl 1 aste based (astep) aligned, 1 12 1 13 (2 fp bit (18), /* forward used list rel pointer */ 1 14 2 bp bit (18), /* backward used list rel pointer */ 1 15 1 16 2 infl bit (18), /* ptr to NEXT in list of ASTE's of my brothers */ 1 17 2 infp bit (18), /* ptr to FIRST in list of ASTE's of my children */ 1 18 1 19 2 strp bit (18), /* rel pointer to process trailer */ 1 20 2 par_astep bit (18), /* rel pointer to parent aste */ 1 21 1 22 2 uid bit (36), /* segment unique id */ 1 23 1 24 2 msl bit (9), /* maximum segment length in 1024 word units */ 1 25 2 pvtx fixed bin (8), /* physical volume table index */ 1 26 2 vtocx fixed bin (17), /* vtoc entry index */ 1 27 1 28 2 usedf bit (1), /* ast entry is being used if non-zero */ 1 29 2 init bit (1), /* used bit - insure 1 lap */ 1 30 2 gtus bit (1), /* global transparent usage switch */ 1 31 2 gtms bit (1), /* global transparent modified switch */ 1 32 2 hc bit (1), /* hard core segment */ 1 33 2 hc_sdw bit (1), /* aste with sdw for hardcore seg if non-zero */ 1 34 2 any_access_on bit (1), /* any sdw allows access, unless write_access_on */ 1 35 2 write_access_on bit (1), /* any sdw allows write access */ 1 36 2 inhibit_cache bit (1), /* flag not to reset above bits */ 1 37 2 explicit_deact_ok bit (1), /* set if user can deactivate seg */ 1 38 2 deact_error bit (1), /* set if error occurred while deactivating */ 1 39 2 hc_part bit (1), /* set if pages are in a hardcore partition */ 1 40 2 fm_damaged bit (1), /* set if filemap checksum was ever bad */ 1 41 2 multi_class bit (1), /* set if page_control should watch state changes to this segment */ 1 42 2 pad1 bit (2), /* OO */ 1 43 2 dius bit (1), /* dumper in use switch */ 1 44 2 nid bit (1), /* if on prevents addtion to incremental dump map */ 1 45 2 dmpr_pad bit (1), 1 46 2 ehs bit (1), /* entry hold switch */ 1 47 2 nqsw bit (1), /* no quota switch - no checking for pages of this seg */ 1 48 2 dirsw bit (1), /* directory switch */ 1 49 2 master_dir bit (1), /* master dir - a root for the log volume */ 1 50 2 volmap_seg bit (1), /* volmap_seg for some volume */ 1 51 2 tqsw (0:1) bit (1), /* terminal quota switch - (0) for non dir pages */ 1 52 2 pad_ic bit (10), /* Used to be aste.ic */ 1 53 1 54 2 dtu bit (36), /* date and time segment last used */ 1 55 1 56 2 dtm bit (36), /* date and time segment last modified */ 1 57 1 58 1 59 2 quota (0:1) fixed bin (18) unsigned, /* sec storage quota - (0) for non dir pages */ 1 60 1 61 2 used (0:1) fixed bin (18) unsigned, /* sec storage used - (0) for non dir pages */ 1 62 1 63 2 csl bit (9), /* current segment length in 1024 words units */ 1 64 2 fmchanged bit (1), /* turned on by page if file map changed */ 1 65 2 fms bit (1), /* file modified switch */ 1 66 2 npfs bit (1), /* no page fault switch */ 1 67 2 gtpd bit (1), /* global transparent paging device switch */ 1 68 2 dnzp bit (1), /* don't null out if zero page switch */ 1 69 2 per_process bit (1), /* use master quota for this entry */ 1 70 2 ddnp bit (1), /* don't deposit nulled pages */ 1 71 2 pad2 bit (2), 1 72 2 records bit (9), /* number of records used by the seg in sec storage */ 1 73 2 np bit (9), /* number of pages in core */ 1 74 1 75 1 76 2 ht_fp bit (18), /* hash table forward rel pointer */ 1 77 2 fmchanged1 bit (1), /* value of "fmchanged" saved by pc$get_file_map */ 1 78 2 damaged bit (1), /* PC declared segment unusable */ 1 79 2 pack_ovfl bit (1), /* page fault on seg would cause pack overflow */ 1 80 2 synchronized bit (1), /* Data Management synchronized segment */ 1 81 2 pad3 bit (6), /* OOOOOOOOO */ 1 82 2 ptsi bit (2), /* page table size index */ 1 83 2 marker bit (6)) unaligned; /* marker to indicate last word of ASTE */ 1 84 1 85 1 86 dcl asta (0 : 8000) bit (36*12 /* sst-> sst.astsize */) based aligned; 1 87 1 88 1 89 dcl 1 aste_part aligned based (astep), 1 90 1 91 2 one bit (36) unaligned, /* fp and bp */ 1 92 2 two bit (36*11 - 8) unaligned, /* part that has to be zeroed when ASTE is freed */ 1 93 2 three bit (8) unaligned; /* ptsi and marker */ 1 94 1 95 1 96 dcl 1 seg_aste based (astep) aligned, /* Overlay because quota is only for dirs */ 1 97 2 pad1 bit (8*36), 1 98 2 usage fixed bin (35), /* page fault count: overlays quota */ 1 99 2 pad2 bit (3*36); 1 100 1 101 /* END INCLUDE FILE ... aste.incl.pl1 */ 279 280 /* BEGIN INCLUDE FILE...disk_pack.incl.pl1 Last Modified January 1982 for new volume map */ 2 2 2 3 2 4 2 5 2 6 /****^ HISTORY COMMENTS: 2 7* 1) change(86-01-14,Fawcett), approve(86-05-13,MCR7383), 2 8* audit(86-05-14,LJAdams), install(86-07-18,MR12.0-1098): 2 9* Add vars PAGE_SIZE and VTOCE_SIZE, Also change the SECTORS_PER_VTOCE and 2 10* VTOCES_PER_RECORD form fixed bin constants to arrays of fixed bin 2 11* constants indexed by device type as defined in fs_dev_types.incl.pl1. 2 12* This was done for support of the 3380, and 3390 devices for 512_WORD_IO. 2 13* 2) change(86-10-21,Fawcett), approve(86-10-21,MCR7533), 2 14* audit(86-10-21,Farley), install(86-10-22,MR12.0-1193): 2 15* Change PAGE_SIZE and VTOCE_SIZE from automatic to static constants. 2 16* END HISTORY COMMENTS */ 2 17 2 18 2 19 /* 2 20* All disk packs have the standard layout described below: 2 21* 2 22* Record 0 : contains the label, as declared in fs_vol_label.incl.pl1. 2 23* Record 1 to 3 : contains the volume map, as declared in vol_map.incl.pl1 2 24* Record 4 to 5 : contains the dumper bit map, as declared in dumper_bit_map.incl.pl1 2 25* Record 6 : contains the vtoc map, as declared in vtoc_map.incl.pl1 2 26* Record 7 : formerly contained bad track list; no longer used. 2 27* Records 8 to n-1 : contain the array of vtoc entries; ( n is specified in the label) 2 28* each record contains 5 192-word vtoc entries. The last 64 words are unused. 2 29* Records n to N-1 : contain the pages of the Multics segments. ( N is specified in the label) 2 30* 2 31* Sundry partitions may exist within the region n to N-1, withdrawn or not as befits the meaning 2 32* of the particular partition. 2 33* 2 34* 2 35* 2 36* A conceptual declaration for a disk pack could be: 2 37* 2 38* dcl 1 disk_pack, 2 39* 2 label_record (0 : 0) bit(36 * 1024), 2 40* 2 volume_map_record (1 : 3) bit(36 * 1024), 2 41* 2 dumper_bit_map_record (4 : 5) bit(36 * 1024), 2 42* 2 vtoc_map_record (6 : 6) bit(36 * 1024), 2 43* 2 spare_record (7 : 7) bit(36 * 1024), 2 44* 2 vtoc_array_records (8 : n-1), 2 45* 3 vtoc_entry ( 5 ) bit(36 * 192), 2 46* 3 unused bit(36 * 64), 2 47* 2 Multics_pages_records (n : N-1) bit(36 * 1024); 2 48* 2 49* 2 50* 2 51* 2 52**/ 2 53 2 54 dcl (LABEL_ADDR init (0), /* Address of Volume Label */ 2 55 VOLMAP_ADDR init (1), /* Address of first Volume Map record */ 2 56 DUMPER_BIT_MAP_ADDR init (4), /* For initial release compaitiblity */ 2 57 VTOC_MAP_ADDR init (6), /* Address of first VTOC Map Record */ 2 58 VTOC_ORIGIN init (8), /* Address of first record of VTOC */ 2 59 DEFAULT_HCPART_SIZE init (1000), /* Size of Hardcore Partition */ 2 60 MAX_VTOCE_PER_PACK init (31774)) /* Limited by size of VTOC Map */ 2 61 fixed bin (17) int static options (constant); 2 62 2 63 /* SECTORS_PER_VTOCE & VTOCES_PER_RECORD are indexed via device type as */ 2 64 /* defined by fs_dev_types and extracted form the disk_table entry (dte) */ 2 65 /* or the physical volume table entry (pvte) device type. */ 2 66 2 67 dcl PAGE_SIZE fixed bin (17) init (1024) static options (constant); 2 68 dcl VTOCE_SIZE fixed bin (17) init (192) static options (constant); 2 69 2 70 dcl SECTORS_PER_VTOCE (9) fixed bin static options (constant) init 2 71 (0, 3, 3, 3, 3, 3, 3, 1, 1); 2 72 dcl VTOCES_PER_RECORD (9) fixed bin static options (constant) init 2 73 (0, 5, 5, 5, 5, 5, 5, 2, 2); 2 74 dcl SECTORS_PER_RECORD (9) fixed bin static options (constant) init 2 75 (0, 16, 16, 16, 16, 16, 16, 2, 2); 2 76 2 77 /* END INCLUDE FILE...disk_pack.incl.pl1 */ 280 281 /* 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 */ 281 282 /* START OF: pvte.incl.pl1 July 1982 * * * * * * * * * * * * * * * * */ 4 2 4 3 /* Added pc_vacating, Benson Margulies 84-10-17 */ 4 4 4 5 /****^ HISTORY COMMENTS: 4 6* 1) change(86-04-11,Fawcett), approve(86-04-11,MCR7383), 4 7* audit(86-05-29,GDixon), install(86-07-18,MR12.0-1098): 4 8* Add the support for subvolumes 4 9* 2) change(86-04-11,Lippard), approve(86-04-11,MCR7309), 4 10* audit(86-05-29,GDixon), install(86-07-18,MR12.0-1098): 4 11* Add root_lv flag to mount RLVs that do not have hardcore partitions. 4 12* 3) change(88-05-27,GWMay), approve(88-05-27,MCR7883), 4 13* audit(88-06-14,Beattie), install(88-07-19,MR12.2-1061): 4 14* Added inconsistent_dbm bit for determining the status of volume 4 15* dumper bit maps. 4 16* END HISTORY COMMENTS */ 4 17 4 18 dcl pvt$array aligned external; 4 19 dcl pvt$max_n_entries fixed bin external; 4 20 4 21 dcl pvt_arrayp ptr; 4 22 dcl pvtep ptr; 4 23 4 24 dcl 1 pvt_array (pvt$max_n_entries) aligned like pvte based (pvt_arrayp); 4 25 4 26 dcl 1 pvte based (pvtep) aligned, 4 27 4 28 2 pvid bit (36), /* physical volume ID */ 4 29 4 30 2 lvid bit (36), /* logical volume ID */ 4 31 4 32 2 dmpr_in_use (3) bit (1) unaligned, /* physical volume dumper interlock */ 4 33 2 is_sv bit (1) unaligned, /* true if this entry defines a subvolume */ 4 34 2 root_lv bit (1) unaligned, /* true if this is on the root LV */ 4 35 2 removable_pack bit (1) unaligned, /* true if packs are eremoveable */ 4 36 2 inconsistent_dbm bit (1) unaligned, /* true if trouble count is incremented */ 4 37 2 pad3 bit (2) unaligned, 4 38 2 brother_pvtx fixed bin (8) unaligned,/* next pvte in lv chain */ 4 39 2 skip_queue_count fixed bin (18) unsigned unaligned, /* number of times this pv skipped for per-proc allocation due to saturation */ 4 40 4 41 4 42 4 43 2 devname char (4), /* device name */ 4 44 4 45 (2 device_type fixed bin (8), /* device type */ 4 46 2 logical_area_number fixed bin (8), /* disk drive number */ 4 47 2 used bit (1), /* TRUE if this entry is used */ 4 48 2 storage_system bit (1), /* TRUE for storage system (vs io disk) */ 4 49 2 permanent bit (1), /* TRUE if cannot be demounted */ 4 50 2 testing bit (1), /* Protocol bit for read_disk$test */ 4 51 2 being_mounted bit (1), /* TRUE if the physical volume is being mounted */ 4 52 2 being_demounted bit (1), /* TRUE if the pysical volume is being demounted */ 4 53 2 check_read_incomplete bit (1), /* page control should check read incomplete */ 4 54 2 device_inoperative bit (1), /* TRUE if disk_control decides dev busted */ 4 55 2 rpv bit (1), /* TRUE if this is the root physical volume */ 4 56 2 scav_check_address 4 57 bit (1), /* TRUE is page control should check deposits/withdrawals against scavenger table */ 4 58 2 deposit_to_volmap bit (1), /* TRUE if deposits should got to volume map, not stock */ 4 59 2 being_demounted2 bit (1), /* No more vtoc I/O during demount */ 4 60 2 pc_vacating bit (1), /* No more withdraws from this volume -- for debugging */ 4 61 2 vacating bit (1), /* don't put new segs on this vol */ 4 62 2 hc_part_used bit (1), /* HC part set up by init_pvt */ 4 63 2 volmap_lock_notify bit (1) unal, /* TRUE if notify required when volmap lock is unlocked */ 4 64 2 volmap_idle_notify bit (1) unal, /* TRUE if notify required when volmap state is idle */ 4 65 2 vtoc_map_lock_notify bit (1) unal, /* TRUE if notify required when vtoc map lock is unlocked */ 4 66 4 67 4 68 2 n_free_vtoce fixed bin (17), /* number of free VTOC entries */ 4 69 2 vtoc_size fixed bin (17), /* size of the VTOC part of the disk - in records */ 4 70 4 71 2 dbmrp (2) bit (18), /* rel ptr to dumber bit maps for this volume */ 4 72 4 73 2 nleft fixed bin (17), /* number of records left */ 4 74 2 totrec fixed bin (17)) unaligned, /* Total records in this map */ 4 75 4 76 2 dim_info bit (36), /* Information peculiar to DIM */ 4 77 2 sv_num fixed bin, /* the number of this subvolume starting at 0 */ 4 78 2 num_of_svs fixed bin, /* number of subvolumes for this device */ 4 79 2 records_per_cyl fixed bin, 4 80 2 record_factor fixed bin, /* the record factor for logical to real seek calculation */ 4 81 2 sv_name char (2) aligned, 4 82 2 curn_dmpr_vtocx (3) fixed bin unaligned,/* current vtocx being dumped */ 4 83 2 n_vtoce fixed bin unaligned, /* number of vtoce on this volume */ 4 84 4 85 2 baseadd fixed bin (18) uns unaligned, /* Base of paging region */ 4 86 2 pad2 bit (18) unaligned, 4 87 4 88 2 pad_for_mod_2 fixed bin (35), /* Make volmap_seg_sdw double word aligned */ 4 89 4 90 2 volmap_seg_sdw fixed bin (71), /* SDW describing volmap_seg */ 4 91 4 92 2 volmap_astep ptr unal, /* Packed pointer to ASTE for volmap_seg */ 4 93 4 94 2 volmap_offset bit (18) unal, /* Offset in volmap_seg of volume map */ 4 95 2 vtoc_map_offset bit (18) unal, /* Offset in volmap_seg of VTOC map */ 4 96 4 97 4 98 2 volmap_lock bit (36) aligned, /* Lock on volume map operations */ 4 99 4 100 2 vtoc_map_lock bit (36) aligned, /* Lock on VTOC map operations */ 4 101 4 102 2 volmap_stock_ptr ptr unal, /* Packed pointer to record stock */ 4 103 4 104 2 vtoc_map_stock_ptr ptr unal, /* Packed pointer to VTOCE stock */ 4 105 4 106 2 volmap_async_state fixed bin (17) unaligned, /* Asynchronous update state of Volume Map */ 4 107 2 volmap_async_page fixed bin (17) unaligned, /* Page number for asynchronous update */ 4 108 4 109 2 vol_trouble_count fixed bin (17) unaligned, /* Count of inconsistencies since last salvage */ 4 110 2 scavenger_block_rel bit (18) unaligned; /* Offset to scavenger block, ^0 => scavenging */ 4 111 4 112 4 113 dcl (VOLMAP_ASYNC_IDLE init (0), /* for volmap_async_state */ 4 114 VOLMAP_ASYNC_READ init (1), 4 115 VOLMAP_ASYNC_WRITE init (2)) fixed bin int static options (constant); 4 116 4 117 4 118 /* END OF: pvte.incl.pl1 * * * * * * * * * * * * * * * * */ 282 283 /* START OF: stock_seg.incl.pl1 * * * * * * * * * * * * * * * * */ 5 2 5 3 dcl stock_segp ptr; 5 4 dcl record_stockp ptr; 5 5 dcl vtoce_stockp ptr; 5 6 dcl stock_seg$ ext; 5 7 5 8 dcl n_in_record_stock fixed bin; 5 9 dcl n_volmap_pages fixed bin; 5 10 dcl n_in_vtoce_stock fixed bin; 5 11 5 12 5 13 dcl 1 stock_seg aligned based (stock_segp), 5 14 5 15 2 meters aligned like rsmeters, 5 16 5 17 2 record_stock_entries fixed bin, /* Number of entries in a record stock */ 5 18 2 vtoce_stock_entries fixed bin, /* Number of entries in a VTOCE stock */ 5 19 2 record_stock_size fixed bin, /* Size of a record stock in words */ 5 20 2 vtoce_stock_size fixed bin, /* Size of a VTOCE stock in words */ 5 21 2 n_stock_entries fixed bin, /* Number of stocks of each type */ 5 22 2 record_stock_arrayp ptr, /* Record stock region */ 5 23 2 vtoce_stock_arrayp ptr; /* VTOCE stock region */ 5 24 5 25 5 26 dcl 1 record_stock aligned based (record_stockp), 5 27 5 28 2 pvtep ptr unal, /* PVTE for this stock */ 5 29 5 30 2 n_in_stock fixed bin (18) uns unal,/* Max number of addresses in stock */ 5 31 2 n_volmap_pages fixed bin (18) uns unal,/* Number of pages in Volume Map */ 5 32 5 33 2 n_free_in_stock fixed bin (18) uns unal,/* Number addresses currently free */ 5 34 2 n_os_in_stock fixed bin (18) uns unal,/* Number addresses currently out-of-service */ 5 35 5 36 2 low_threshold fixed bin (18) uns unal,/* Low threshold for withdrawing from volmap */ 5 37 2 high_threshold fixed bin (18) uns unal,/* High threshold for depositing to volmap */ 5 38 5 39 2 target fixed bin (18) uns unal,/* Target for stock */ 5 40 2 stock_offset bit (18) unal, /* Offset of stock in this structure */ 5 41 5 42 2 n_words_in_stock fixed bin (18) uns unal,/* Number of words = Number of entries / 2 */ 5 43 2 search_index fixed bin (18) uns unal,/* Roving pointer */ 5 44 5 45 2 old_volmap_page (3) aligned, /* N_OLD_VOLMAP_PAGES (cif) */ 5 46 3 last fixed bin (18) uns unal,/* Roving pointer */ 5 47 3 pad bit (18) unal, 5 48 5 49 2 volmap_page (n_volmap_pages refer (record_stock.n_volmap_pages)) aligned, 5 50 3 n_free fixed bin (18) uns unal,/* Number free records in this volmap page */ 5 51 3 baseadd fixed bin (17) unal, /* First record address described by this page */ 5 52 5 53 2 stock (n_in_record_stock refer (record_stock.n_in_stock)) bit (18) unal; /* Stock array of addresses */ 5 54 /* bit 0 ON => out-of-service */ 5 55 5 56 5 57 dcl 1 vtoce_stock aligned based (vtoce_stockp), 5 58 2 pvtep ptr unal, /* PVTE for this stock */ 5 59 2 n_in_stock fixed bin (18) uns unal,/* Max number indices in stock */ 5 60 2 n_free_in_stock fixed bin (18) uns unal,/* Number indices currently free */ 5 61 2 target fixed bin (18) uns unal,/* Target when withdrawing/depositing */ 5 62 2 search_index fixed bin (18) uns unal,/* Roving pointer */ 5 63 2 stock (n_in_vtoce_stock refer (vtoce_stock.n_in_stock)) fixed bin (17) unal; /* Stock array of VTOCE indices */ 5 64 5 65 5 66 dcl 1 rsmeters aligned based, 5 67 5 68 2 async_read_calls fixed bin (35), /* Number of asynchronous read attempts */ 5 69 2 async_page_reads fixed bin (35), /* Number of times page read was required */ 5 70 2 async_post_io_calls fixed bin (35), /* Number of times read or write posted */ 5 71 2 deposit_calls fixed bin (35), /* Number of times deposit called */ 5 72 2 async_post_io_time fixed bin (71), /* CPU time posting I/Os (interrupt side) */ 5 73 2 deposit_time fixed bin (71), /* CPU time in deposit (call side) */ 5 74 2 low_thresh_detected fixed bin (35), /* Number of times stock below low threshold */ 5 75 2 high_thresh_detected fixed bin (35), /* Number of times stock above high threshold */ 5 76 2 low_thresh_fails fixed bin (35), /* Number of times no records in volmap */ 5 77 2 withdraw_stock_steps fixed bin (35), /* Number steps thru stock in withdraw */ 5 78 2 withdraw_stock_losses fixed bin (35), /* Number lockless losses */ 5 79 2 n_withdraw_attempt fixed bin (35), /* Number attempts to withdraw a page */ 5 80 2 n_withdraw_range fixed bin (35), /* Number attempts to withdraw within range */ 5 81 2 n_pages_withdraw_stock fixed bin (35), /* Number pages withdrawn from stock */ 5 82 2 n_pages_withdraw_async fixed bin (35), /* Number pages withdrawn from volmap */ 5 83 2 n_v_withdraw_attempts fixed bin (35), /* Number attempts to withdraw from volmap */ 5 84 2 withdraw_volmap_steps fixed bin (35), /* Number steps thru volmap in withdraw */ 5 85 2 deposit_stock_steps fixed bin (35), /* Number steps thru stock in deposit */ 5 86 2 deposit_stock_losses fixed bin (35), /* Number lockless losses */ 5 87 2 n_deposit_attempt fixed bin (35), /* Number attempts to deposit a page */ 5 88 2 n_pages_deposit_stock fixed bin (35), /* Number pages deposited to stock */ 5 89 2 n_pages_deposit_volmap fixed bin (35), /* Number pages deposited to volmap */ 5 90 2 n_v_deposit_attempts fixed bin (35), /* Number attempts to deposit to volmap */ 5 91 2 reset_os_calls fixed bin (35), /* Number calls to reset_os */ 5 92 2 reset_os_losses fixed bin (35), /* Number lockless losses */ 5 93 2 withdraw_calls fixed bin (35), /* Number calls to withdraw */ 5 94 2 withdraw_time fixed bin (71), /* CPU time in withdraw (page-fault) */ 5 95 2 pc_deposit_time fixed bin (71), /* CPU time in pc_deposit */ 5 96 2 pc_deposit_calls fixed bin (35), /* Number calls to pc_deposit */ 5 97 2 pc_deposit_pages fixed bin (35), /* Number pages deposited by pc_deposit */ 5 98 2 get_free_vtoce_calls fixed bin (35), /* Number calls to get_free_vtoce */ 5 99 2 return_free_vtoce_call fixed bin (35), /* Number calls to return_free_vtoce */ 5 100 2 deposit_vstock_calls fixed bin (35), /* Number attempts to deposit to vtoce stock */ 5 101 2 deposit_vstock_fails fixed bin (35), /* Number times deposit failed */ 5 102 2 withdraw_vstock_calls fixed bin (35), /* Number attempts to withdraw from vtoce stock */ 5 103 2 withdraw_vstock_fails fixed bin (35), /* Number times withdraw failed */ 5 104 2 deposit_vtoc_map fixed bin (35), /* Number times vtoce deposited to map */ 5 105 2 withdraw_check_scav fixed bin (35), /* Number times withdraw checked an address for scavenge */ 5 106 2 withdraw_conflict fixed bin (35), /* Number times conflict found */ 5 107 2 pad (11) fixed bin (35); 5 108 5 109 5 110 dcl N_OLD_VOLMAP_PAGES fixed bin init (3) int static options (constant); 5 111 dcl DEFAULT_N_IN_RECORD_STOCK fixed bin init (104) int static options (constant); 5 112 dcl DEFAULT_N_IN_VTOCE_STOCK fixed bin init (10) int static options (constant); 5 113 5 114 5 115 /* END OF: stock_seg.incl.pl1 * * * * * * * * * * * * * * * * */ 283 284 /* BEGIN INCLUDE FILE syserr_constants.incl.pl1 ... 11/11/80 W. Olin Sibert */ 6 2 /* 85-02-12, EJ Sharpe - Added sorting class constants, removed AIM_MESSAGE, added new action code names. */ 6 3 /* 85-04-24, G. Palter - Renamed SYSERR_UNUSED_10 to SYSERR_RING1_ERROR to reflect its actual use. */ 6 4 6 5 /* This include file has an ALM version. Keep 'em in sync! */ 6 6 6 7 dcl ( 6 8 6 9 /* The following constants define the message action codes. This indicates 6 10*how a message is to be handled. */ 6 11 6 12 SYSERR_CRASH_SYSTEM init (1), 6 13 CRASH init (1), /* Crash the system, and bleat plaintively. */ 6 14 6 15 SYSERR_TERMINATE_PROCESS init (2), 6 16 TERMINATE_PROCESS init (2), /* Terminate the process, print the message, and beep. */ 6 17 6 18 SYSERR_PRINT_WITH_ALARM init (3), 6 19 BEEP init (3), /* Beep and print the message on the console. */ 6 20 6 21 SYSERR_PRINT_ON_CONSOLE init (0), 6 22 ANNOUNCE init (0), /* Just print the message on the console. */ 6 23 6 24 SYSERR_LOG_OR_PRINT init (4), 6 25 LOG init (4), /* Log the message, or print it if it can't be logged */ 6 26 6 27 SYSERR_LOG_OR_DISCARD init (5), 6 28 JUST_LOG init (5), /* Just try to log the message, and discard it if it can't be */ 6 29 6 30 6 31 /* The following constants are added to the normal severities to indicate 6 32*different sorting classes of messages. */ 6 33 6 34 SYSERR_SYSTEM_ERROR init (00), /* indicates a standard level system error */ 6 35 SYSERR_RING1_ERROR init (10), /* indicates an error detected in ring 1 (mseg_, RCP) */ 6 36 SYSERR_COVERT_CHANNEL init (20), /* indicates covert channel audit trail message */ 6 37 SYSERR_UNSUCCESSFUL_ACCESS init (30), /* indicates access denial audit trail message */ 6 38 SYSERR_SUCCESSFUL_ACCESS init (40) /* indicates access grant audit trail message */ 6 39 ) fixed bin internal static options (constant); 6 40 6 41 /* END INCLUDE FILE syserr_constants.incl.pl1 */ 284 285 /* BEGIN INCLUDE FILE ... vol_map.incl.pl1 */ 7 2 7 3 dcl vol_mapp ptr; 7 4 7 5 dcl 1 vol_map based (vol_mapp) aligned, 7 6 7 7 2 n_rec fixed bin(17), /* number of records represented in the map */ 7 8 2 base_add fixed bin(17), /* record number for first bit in bit map */ 7 9 2 n_free_rec fixed bin(17), /* number of free records */ 7 10 2 bit_map_n_words fixed bin(17), /* number of words of the bit map */ 7 11 2 pad (60) bit(36), /* pad to 64 words */ 7 12 2 bit_map (3*1024 - 64) bit(36) ; /* bit map - the entire vol map occupies 3 records */ 7 13 7 14 /* END INCLUDE ... vol_map */ 285 286 /* BEGIN INCLUDE FILE ... vtoc_header.incl.pl1 */ 8 2 8 3 dcl vtoc_headerp ptr; 8 4 8 5 dcl 1 vtoc_header based (vtoc_headerp) aligned, 8 6 8 7 2 version fixed bin (17), /* version number. The current version number is 1. * */ 8 8 2 n_vtoce fixed bin (17), /* number of vtoc entries */ 8 9 2 vtoc_last_recno fixed bin (17), /* record number of the last record of the vtoc */ 8 10 2 n_free_vtoce fixed bin (17), /* number of free vtoc entries */ 8 11 2 first_free_vtocx fixed bin (17), /* index of the first vtoce in the free list */ 8 12 2 pad (3) bit (36), 8 13 2 dmpr_bit_map (2048 - 8) bit (36); /* space for dmpr bit map */ 8 14 8 15 /* END INCLUDE ... vtoc_header */ 8 16 286 287 /* START OF: vtoc_map.incl.pl1 ... March 1982 ... * * * * * * * * * * * * * * * * */ 9 2 9 3 dcl vtoc_mapp ptr; 9 4 dcl bit_map_wordp ptr; 9 5 9 6 dcl 1 vtoc_map aligned based (vtoc_mapp), 9 7 2 n_vtoce fixed bin, /* Number of VTOCEs on the device */ 9 8 2 n_free_vtoce fixed bin, /* Number of free VTOCEs */ 9 9 2 bit_map_n_words fixed bin, /* Number of words in the bit map below */ 9 10 2 vtoc_last_recno fixed bin, /* Last record number in VTOC */ 9 11 2 pad (4) fixed bin, 9 12 2 bit_map (0:1024 - 9) bit (36); /* This structure consumes exactly 1 page */ 9 13 9 14 dcl 1 bit_map_word aligned based (bit_map_wordp), 9 15 2 pad1 bit (1) unal, 9 16 2 bits bit (32) unal, /* 32 VTOCES ON => free */ 9 17 2 pad2 bit (3) unal; 9 18 9 19 9 20 9 21 /* END OF: vtoc_map.incl.pl1 * * * * * * * * * * * * * * * * */ 287 288 289 /* BEGIN MESSAGE DOCUMENTATION 290* Message: 291* fsout_vol: Discarding old dumper bit maps for dskX_NNS. 292* 293* S: $info 294* 295* T: System shutdown and volume demounting. 296* 297* M: An error occurred attempting to read the VTOC header from physical volume 298* on dskX_NNS. Writing of the dumper bit maps to disk will be 299* bypassed. The dumper bit maps will be freed and the system will attempt 300* to continue, however, the dumper bit maps may not be accurate on disk. 301* 302* A: $inform 303* 304* Message: 305* fsout_vol: label for PVNAME (dskX_NNS) uid does not match pvt. 306* 307* S: $info 308* 309* T: System shutdown, volume mounting and demounting. 310* 311* M: The unique physical volume ID in the label of the pack on dskX_NNS 312* (PVNAME) does not compare with the value it had when the pack was first 313* mounted. Damage to the pack has probably occurred. 314* 315* A: Attempt to demount the volume if this has not already been done. 316* Save the pack for inspection and dumping by the system programming staff. 317* Initiate volume recovery procedures. 318* 319* Message: 320* fsout_vol: {REASON} Error OPERATION OBJECT_TYPE for dskX_NNS {(PVNAME)} 321* 322* S: $info 323* 324* T: System shutdown and volume mounting and demounting. 325* 326* M: A physical device error has occured while attempting 327* to read or write (OPERATION) volume header information (OBJECT_TYPE) of the 328* pack (PVNAME) on dskX_NNS. 329* 330* A: If this message occurs at volume mounting time, check 331* the drive specified for write-protect or standby status, and retry 332* the add_lv command for the logical volume. If this message occurs at 333* shutdown or demount time, the volume may contain inconsistencies 334* (lost free records or free VTOCEs). These inconsistencies can be 335* corrected by a physical volume salvage. 336* 337* Message: 338* fsout_vol: XXX volume inconsistenices on PVNAME (dskX_NNS). YYYYY free records. ZZZZZ free VTOCEs. 339* 340* S: Logged only if the number of free records and the number of free 341* VTOCEs are both above threshold values. Printed and logged if either 342* is below threshold. 343* 344* T: Volume demounting and system shutdown time. 345* 346* M: At some time during the use of volume PVNAME (on drive dskX_NNS), 347* the system encountered problems which left the volume in 348* an inconsistent state. The effect of this is that some free records 349* and/or free VTOCEs are unavailable (lost) to the system. These 350* inconsistencies can be corrected by a volume salvage. The number 351* of unused records and VTOCEs which are available for use is printed. 352* 353* A: If the number of free records or free vtoces is low, a physical 354* volume salvage should be done on the volume prior to mounting it 355* again to recover the lost items. 356* 357* END MESSAGE DOCUMENTATION */ 358 end fsout_vol; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 11/11/89 0838.7 fsout_vol.pl1 >special_ldd>install>MR12.3-1114>fsout_vol.pl1 279 1 01/30/85 1523.9 aste.incl.pl1 >ldd>include>aste.incl.pl1 280 2 10/22/86 1450.1 disk_pack.incl.pl1 >ldd>include>disk_pack.incl.pl1 281 3 07/21/88 2036.0 fs_vol_label.incl.pl1 >ldd>include>fs_vol_label.incl.pl1 282 4 07/21/88 2036.0 pvte.incl.pl1 >ldd>include>pvte.incl.pl1 283 5 10/25/82 1015.6 stock_seg.incl.pl1 >ldd>include>stock_seg.incl.pl1 284 6 05/17/85 0615.7 syserr_constants.incl.pl1 >ldd>include>syserr_constants.incl.pl1 285 7 04/29/76 1050.5 vol_map.incl.pl1 >ldd>include>vol_map.incl.pl1 286 8 05/23/77 0919.3 vtoc_header.incl.pl1 >ldd>include>vtoc_header.incl.pl1 287 9 05/27/82 1525.9 vtoc_map.incl.pl1 >ldd>include>vtoc_map.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. ANNOUNCE 000017 constant fixed bin(17,0) initial dcl 6-7 set ref 141* 172* 192 223* DATA 000012 internal static char(12) initial array packed unaligned dcl 219 set ref 223* DUMPER_BIT_MAP_ADDR 000020 constant fixed bin(17,0) initial dcl 2-54 set ref 129* 133 LABEL_ADDR 000017 constant fixed bin(17,0) initial dcl 2-54 set ref 156* 202* LOG constant fixed bin(17,0) initial dcl 6-7 ref 194 MIN_RECORDS constant fixed bin(17,0) initial dcl 240 ref 192 MIN_VTOCES constant fixed bin(17,0) initial dcl 240 ref 192 READ 000017 constant fixed bin(17,0) initial dcl 240 set ref 140* 157* RW 000010 internal static char(4) initial array packed unaligned dcl 218 set ref 223* SHUT parameter fixed bin(17,0) dcl 229 ref 11 57 188 VOL_LABEL 000005 constant fixed bin(17,0) initial dcl 240 set ref 157* 203* VOL_MAP 000022 constant fixed bin(17,0) initial dcl 240 set ref 96* 134* VTOC_HEADER 000021 constant fixed bin(17,0) initial dcl 240 set ref 140* VTOC_MAP 000020 constant fixed bin(17,0) initial dcl 240 set ref 77* WRITE 000022 constant fixed bin(17,0) initial dcl 240 set ref 77* 96* 134* 203* addr builtin function dcl 273 ref 51 53 68 68 68 68 74 93 111 111 111 111 128 132 132 133 133 135 145 145 146 155 aste based structure level 1 dcl 1-11 astep 002120 automatic pointer dcl 1-9 set ref 66* 117* 118* 120* 122 buffer 000112 automatic fixed bin(71,0) array dcl 275 set ref 128 132 132 133 133 135 145 145 146 155 clearbuf based bit(36864) dcl 276 set ref 135* 146* clock builtin function dcl 273 ref 171 convert builtin function dcl 273 ref 141 141 172 172 195 195 223 223 database parameter fixed bin(17,0) dcl 214 ref 212 223 dbm_man$free_map 000046 constant entry external dcl 259 ref 132 145 devname 3 based char(4) level 2 dcl 4-26 set ref 141* 172* 195* 223* disk_table_uid 705 based bit(36) level 3 dcl 3-18 set ref 180* disk_table_vtocx 704 based fixed bin(17,0) level 3 dcl 3-18 set ref 179* ec 000100 automatic fixed bin(35,0) dcl 232 set ref 129* 130 132* 133* 134 145* 156* 157 202* 203 223* esd_state 706 based fixed bin(17,0) level 3 dcl 3-18 set ref 182* flagpad 551(03) based bit(33) level 2 packed packed unaligned dcl 3-18 set ref 160* have_pv_label 000110 automatic bit(1) packed unaligned dcl 232 set ref 50* 159* 221 223* hbound builtin function dcl 273 ref 167 i 000107 automatic fixed bin(17,0) dcl 232 set ref 131* 132* 133* 144* 145* 167* 168* inconsistent_dbm 551(02) based bit(1) level 2 in structure "label" packed packed unaligned dcl 3-18 in procedure "fsout_vol" set ref 186* inconsistent_dbm 2(06) based bit(1) level 2 in structure "pvte" packed packed unaligned dcl 4-26 in procedure "fsout_vol" ref 186 is_sv 2(03) based bit(1) level 2 packed packed unaligned dcl 4-26 set ref 141* 172* 195* 223* label based structure level 1 dcl 3-18 labelp 002122 automatic pointer dcl 3-16 set ref 49* 155* 156* 160 161 162 163 164 165 166 167 168 170 172 172 177 179 180 181 182 184 185 186 189 190 195 201 202* 206* 221 last_pvtx 614 based fixed bin(17,0) level 2 dcl 3-18 set ref 190* 201* lock$lock_ast 000050 constant entry external dcl 260 ref 119 lock$unlock_ast 000052 constant entry external dcl 261 ref 121 logical_area_number 4(09) based fixed bin(8,0) level 2 packed packed unaligned dcl 4-26 ref 141 141 172 172 195 195 223 223 lvid 1 based bit(36) level 2 dcl 4-26 ref 191 n_free_rec 2 based fixed bin(17,0) level 2 dcl 7-5 set ref 100* n_free_vtoce 1 based fixed bin(17,0) level 2 in structure "vtoc_map" dcl 9-6 in procedure "fsout_vol" set ref 81* n_free_vtoce 5 based fixed bin(17,0) level 2 in structure "pvte" packed packed unaligned dcl 4-26 in procedure "fsout_vol" set ref 81 195* n_rec based fixed bin(17,0) level 2 dcl 7-5 set ref 101* n_vtoce 17(18) based fixed bin(17,0) level 2 packed packed unaligned dcl 4-26 ref 192 nleft 7 based fixed bin(17,0) level 2 packed packed unaligned dcl 4-26 set ref 100 192 195* now 000102 automatic fixed bin(52,0) dcl 232 set ref 171* 177 189 null builtin function dcl 273 ref 49 63 70 89 115 123 149 206 p99 automatic picture(2) packed unaligned dcl 232 ref 141 141 172 172 195 195 223 223 pad1 563 based fixed bin(17,0) array level 2 dcl 3-18 set ref 161* pad1a 615 based fixed bin(17,0) array level 2 dcl 3-18 set ref 163* pad2 630 based fixed bin(17,0) array level 2 dcl 3-18 set ref 164* pad3 717 based fixed bin(17,0) array level 2 dcl 3-18 set ref 166* pad4 1300 based fixed bin(17,0) array level 2 dcl 3-18 set ref 170* pad5 1007 based fixed bin(17,0) array level 3 dcl 3-18 set ref 168* pad6 605 based fixed bin(17,0) level 2 dcl 3-18 set ref 162* pad7 703 based bit(1) level 3 dcl 3-18 set ref 165* page$cleanup 000054 constant entry external dcl 262 ref 118 page$drain_record_stock 000056 constant entry external dcl 263 ref 92 page_fault_error 002112 stack reference condition dcl 278 ref 76 86 95 107 parts 1004 based structure array level 2 dcl 3-18 set ref 167 pmut$swap_sdw 000060 constant entry external dcl 264 ref 68 111 ptr builtin function dcl 273 ref 74 put_aste 000062 constant entry external dcl 265 ref 120 pv_name 521 based char(32) level 2 dcl 3-18 set ref 172* 195* 221 pv_name_from_label 000100 automatic char(32) packed unaligned dcl 217 set ref 221* 222* 223* pvid based bit(36) level 2 in structure "pvte" dcl 4-26 in procedure "fsout_vol" ref 172 pvid 541 based bit(36) level 2 in structure "label" dcl 3-18 in procedure "fsout_vol" ref 172 pvt$array 000102 external static fixed bin(17,0) dcl 4-18 set ref 51 pvt$disk_table_uid 000030 external static bit(36) dcl 251 ref 180 pvt$disk_table_vtocx 000026 external static fixed bin(17,0) dcl 250 ref 179 pvt$esd_state 000032 external static fixed bin(17,0) dcl 252 ref 182 pvt$root_lvid 000034 external static bit(36) dcl 253 ref 191 pvt$root_pvtx 000036 external static fixed bin(17,0) dcl 254 ref 178 pvt$shutdown_state 000040 external static fixed bin(17,0) dcl 255 ref 181 pvt$time_of_bootload 000042 external static fixed bin(71,0) dcl 256 ref 184 pvt_array based structure array level 1 dcl 4-24 set ref 53 pvt_arrayp 002124 automatic pointer dcl 4-21 set ref 51* 53 pvte based structure level 1 dcl 4-26 pvtep 002126 automatic pointer dcl 4-22 set ref 53* 63 66 68 68 70 73* 74 81 82 84* 89 92* 100 101 103 105* 115 116 117 123 141 141 141 141 141 172 172 172 172 172 172 185 186 191 191 192 192 195 195 195 195 195 195 195 195 195 223 223 223 223 223 read_disk 000064 constant entry external dcl 266 ref 129 156 record_stockp 002130 automatic pointer dcl 5-4 set ref 103* 105* root 700 based structure level 2 dcl 3-18 rsmeters based structure level 1 dcl 5-66 rw parameter fixed bin(17,0) dcl 214 ref 212 223 severity 000106 automatic fixed bin(17,0) dcl 232 set ref 192* 194* 195* shutdown_state 702 based fixed bin(17,0) level 3 dcl 3-18 set ref 181* stock_man$free_record_stock 000066 constant entry external dcl 267 ref 105 stock_man$free_vtoce_stock 000070 constant entry external dcl 268 ref 84 sv_name 15 based char(2) level 2 dcl 4-26 set ref 141* 172* 195* 223* syserr 000072 constant entry external dcl 269 ref 141 172 195 syserr$error_code 000074 constant entry external dcl 269 ref 223 time_map_updated 602 based fixed bin(71,0) level 2 dcl 3-18 set ref 177* time_of_boot 610 based fixed bin(71,0) level 2 dcl 3-18 set ref 184* time_unmounted 612 based fixed bin(71,0) level 2 dcl 3-18 set ref 189* totrec 7(18) based fixed bin(17,0) level 2 packed packed unaligned dcl 4-26 ref 101 tsdw 000104 automatic fixed bin(71,0) dcl 232 set ref 110* 111 111 tx parameter fixed bin(17,0) dcl 229 set ref 11 53 129* 132* 133* 145* 156* 178 201 202* unspec builtin function dcl 273 set ref 161* 162* 163* 164* 166* 168* 170* vol_map based structure level 1 dcl 7-5 vol_mapp 002134 automatic pointer dcl 7-3 set ref 49* 93* 100 101 vol_trouble_count 33 based fixed bin(17,0) level 2 in structure "pvte" packed packed unaligned dcl 4-26 in procedure "fsout_vol" set ref 185 191 195* 195 vol_trouble_count 716 based fixed bin(17,0) level 2 in structure "label" dcl 3-18 in procedure "fsout_vol" set ref 185* volmap_abs_seg$ 000044 external static fixed bin(17,0) dcl 257 set ref 68 68 74 93 111 111 volmap_astep 24 based pointer level 2 packed packed unaligned dcl 4-26 set ref 63 66 115 117 123* volmap_seg 5(23) based bit(1) level 2 packed packed unaligned dcl 1-11 set ref 122* volmap_seg_sdw 22 based fixed bin(71,0) level 2 dcl 4-26 set ref 68 68 116* volmap_stock_ptr 30 based pointer level 2 packed packed unaligned dcl 4-26 ref 89 103 vtoc_headerp 002136 automatic pointer dcl 8-3 set ref 49* 128* 129* 149* vtoc_map based structure level 1 dcl 9-6 vtoc_map_offset 25(18) based bit(18) level 2 packed packed unaligned dcl 4-26 ref 74 vtoc_map_stock_ptr 31 based pointer level 2 packed packed unaligned dcl 4-26 ref 70 82 vtoc_mapp 002140 automatic pointer dcl 9-3 set ref 74* 81 vtoce_stock_man$drain_stock 000076 constant entry external dcl 270 ref 73 vtoce_stockp 002132 automatic pointer dcl 5-5 set ref 82* 84* write_disk 000100 constant entry external dcl 271 ref 133 202 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. BEEP internal static fixed bin(17,0) initial dcl 6-7 CRASH internal static fixed bin(17,0) initial dcl 6-7 DEFAULT_HCPART_SIZE internal static fixed bin(17,0) initial dcl 2-54 DEFAULT_N_IN_RECORD_STOCK internal static fixed bin(17,0) initial dcl 5-111 DEFAULT_N_IN_VTOCE_STOCK internal static fixed bin(17,0) initial dcl 5-112 JUST_LOG internal static fixed bin(17,0) initial dcl 6-7 MAX_VTOCE_PER_PACK internal static fixed bin(17,0) initial dcl 2-54 Multics_ID_String internal static char(32) initial packed unaligned dcl 3-92 N_OLD_VOLMAP_PAGES internal static fixed bin(17,0) initial dcl 5-110 PAGE_SIZE internal static fixed bin(17,0) initial dcl 2-67 SECTORS_PER_RECORD internal static fixed bin(17,0) initial array dcl 2-74 SECTORS_PER_VTOCE internal static fixed bin(17,0) initial array dcl 2-70 SYSERR_COVERT_CHANNEL internal static fixed bin(17,0) initial dcl 6-7 SYSERR_CRASH_SYSTEM internal static fixed bin(17,0) initial dcl 6-7 SYSERR_LOG_OR_DISCARD internal static fixed bin(17,0) initial dcl 6-7 SYSERR_LOG_OR_PRINT internal static fixed bin(17,0) initial dcl 6-7 SYSERR_PRINT_ON_CONSOLE internal static fixed bin(17,0) initial dcl 6-7 SYSERR_PRINT_WITH_ALARM internal static fixed bin(17,0) initial dcl 6-7 SYSERR_RING1_ERROR internal static fixed bin(17,0) initial dcl 6-7 SYSERR_SUCCESSFUL_ACCESS internal static fixed bin(17,0) initial dcl 6-7 SYSERR_SYSTEM_ERROR internal static fixed bin(17,0) initial dcl 6-7 SYSERR_TERMINATE_PROCESS internal static fixed bin(17,0) initial dcl 6-7 SYSERR_UNSUCCESSFUL_ACCESS internal static fixed bin(17,0) initial dcl 6-7 TERMINATE_PROCESS internal static fixed bin(17,0) initial dcl 6-7 VOLMAP_ADDR internal static fixed bin(17,0) initial dcl 2-54 VOLMAP_ASYNC_IDLE internal static fixed bin(17,0) initial dcl 4-113 VOLMAP_ASYNC_READ internal static fixed bin(17,0) initial dcl 4-113 VOLMAP_ASYNC_WRITE internal static fixed bin(17,0) initial dcl 4-113 VTOCES_PER_RECORD internal static fixed bin(17,0) initial array dcl 2-72 VTOCE_SIZE internal static fixed bin(17,0) initial dcl 2-68 VTOC_MAP_ADDR internal static fixed bin(17,0) initial dcl 2-54 VTOC_ORIGIN internal static fixed bin(17,0) initial dcl 2-54 asta based bit(432) array dcl 1-86 aste_part based structure level 1 dcl 1-89 bit_map_word based structure level 1 dcl 9-14 bit_map_wordp automatic pointer dcl 9-4 n_in_record_stock automatic fixed bin(17,0) dcl 5-8 n_in_vtoce_stock automatic fixed bin(17,0) dcl 5-10 n_volmap_pages automatic fixed bin(17,0) dcl 5-9 pvt$max_n_entries external static fixed bin(17,0) dcl 4-19 record_stock based structure level 1 dcl 5-26 seg_aste based structure level 1 dcl 1-96 stock_seg based structure level 1 dcl 5-13 stock_seg$ external static fixed bin(17,0) dcl 5-6 stock_segp automatic pointer dcl 5-3 vtoc_header based structure level 1 dcl 8-5 vtoce_stock based structure level 1 dcl 5-57 NAMES DECLARED BY EXPLICIT CONTEXT. END_VOLMAP_UPDATE 000373 constant label dcl 103 ref 97 END_VTOC_MAP_UPDATE 000277 constant label dcl 82 set ref 78 dsker 001352 constant entry internal dcl 212 ref 77 96 134 140 157 203 fsout_vol 000152 constant entry external dcl 11 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 2022 2126 1504 2032 Length 2524 1504 104 361 315 16 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME fsout_vol 1268 external procedure is an external procedure. on unit on line 76 72 on unit on unit on line 95 72 on unit dsker 138 internal procedure is called by several nonquick procedures. STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000010 RW dsker 000012 DATA dsker STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME dsker 000100 pv_name_from_label dsker fsout_vol 000100 ec fsout_vol 000102 now fsout_vol 000104 tsdw fsout_vol 000106 severity fsout_vol 000107 i fsout_vol 000110 have_pv_label fsout_vol 000112 buffer fsout_vol 002120 astep fsout_vol 002122 labelp fsout_vol 002124 pvt_arrayp fsout_vol 002126 pvtep fsout_vol 002130 record_stockp fsout_vol 002132 vtoce_stockp fsout_vol 002134 vol_mapp fsout_vol 002136 vtoc_headerp fsout_vol 002140 vtoc_mapp fsout_vol THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_e_as call_ext_out_desc call_ext_out call_int_this call_int_other return_mac tra_ext_1 enable_op ext_entry int_entry clock_mac THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. dbm_man$free_map lock$lock_ast lock$unlock_ast page$cleanup page$drain_record_stock pmut$swap_sdw put_aste read_disk stock_man$free_record_stock stock_man$free_vtoce_stock syserr syserr$error_code vtoce_stock_man$drain_stock write_disk THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. pvt$array pvt$disk_table_uid pvt$disk_table_vtocx pvt$esd_state pvt$root_lvid pvt$root_pvtx pvt$shutdown_state pvt$time_of_bootload volmap_abs_seg$ LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 11 000146 49 000157 50 000163 51 000164 53 000166 57 000173 63 000176 66 000201 68 000203 70 000217 73 000223 74 000232 76 000242 77 000256 78 000267 81 000272 82 000277 84 000302 86 000313 89 000314 92 000320 93 000327 95 000332 96 000346 97 000357 100 000362 101 000367 103 000373 105 000376 107 000407 110 000410 111 000412 115 000427 116 000433 117 000435 118 000437 119 000446 120 000453 121 000462 122 000467 123 000472 128 000475 129 000477 130 000515 131 000517 132 000522 133 000542 134 000565 135 000577 136 000603 137 000611 140 000612 141 000622 144 000700 145 000703 146 000723 147 000727 149 000735 155 000737 156 000741 157 000757 159 000772 160 000774 161 000777 162 001002 163 001003 164 001006 165 001011 166 001012 167 001015 168 001023 169 001026 170 001030 171 001034 172 001036 177 001125 178 001127 179 001134 180 001136 181 001140 182 001142 184 001144 185 001146 186 001152 188 001157 189 001163 190 001165 191 001166 192 001173 194 001207 195 001211 200 001313 201 001314 202 001316 203 001334 206 001346 207 001350 212 001351 221 001357 222 001370 223 001373 227 001500 ----------------------------------------------------------- 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