COMPILATION LISTING OF SEGMENT scavenge_vol Compiled by: Multics PL/I Compiler, Release 30, of February 16, 1988 Compiled at: Honeywell Bull, Phoenix AZ, SysM Compiled on: 07/20/88 1042.4 mst Wed Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Bull Inc., 1987 * 4* * * 5* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 6* * * 7* *********************************************************** */ 8 9 10 /****^ HISTORY COMMENTS: 11* 1) change(87-10-22,Parisek), approve(87-10-29,MCR7790), 12* audit(88-02-03,GDixon), install(88-05-04,MR12.2-1045): 13* A. Change com_err_ call to an ioa_ call for reporting "No volumes found" 14* message, so call_ec_ will not complain about it. 15* B. Change non-existent error_table_$no_arg to error_table_$noarg. 16* END HISTORY COMMENTS */ 17 18 19 /* format: style3 */ 20 scavenge_vol: 21 procedure options (variable); 22 23 24 /* User-ring program to trigger a volume scavenge. 25* 26* scavenge_vol {pvname} {-control_args} 27* 28* Arguments accepted: 29* 30* -lv lvname scavenges all volumes in logical volume lvname 31* 32* -all, -a scavenges all mounted volumes 33* 34* -auto used with -all or -lv, scavenges only those volumes 35* with volume inconsistencies 36* 37* -long, -lg print metering data for the scavenge 38* 39* -debug, -db enables various ring-0 debugging options, 40* mainly dumping more information into the 41* syserr log 42* 43* -trap traps to BOS at the end of the scavenge 44* 45* -meter dumps metering information into the syserr 46* log at the end of the scavenge 47* 48* -dump dumps VTOCEs damaged during the scavenge into 49* the syserr log 50* 51* -nopt inhibits the VTOCE read-ahead optimization and 52* drops CPU priority periodically 53* 54* -check validates arguments and prints a list of PVs 55* which would be scavenged, but doesn't scavenge. 56* 57* -fault_under_AST_lock faults under AST lock for debugging. 58* 59* -fault_under_volmap_lock faults under volmap lock for debugging. 60* 61* -fault_under_PTL faults under global PTL for debugging. 62* 63* If invoked as an active function, -check is assumed, and a list of 64* PVs is returned. 65* 66* -fault control arguments not permitted in -check mode to avoid 67* operator crazyness. 68* 69* Written July 1982 by J. Bongiovanni 70* Modified October 1982 by J. Bongiovanni for fm_damaged and associated meters 71* Modified 83-12-13 by BIM for faults control arguments. 72**/ 73 74 /* Automatic */ 75 76 dcl af_invocation bit (1) aligned; 77 dcl af_return_len fixed bin (21); 78 dcl af_return_ptr ptr; 79 dcl all_vols bit (1) aligned; 80 dcl auto_fl bit (1) aligned; 81 dcl arg_no fixed bin; 82 dcl 1 arg_options aligned like scavenger_options; 83 dcl argl fixed bin (21); 84 dcl argp ptr; 85 dcl check_sw bit (1) aligned; 86 dcl clock_sec float; 87 dcl code fixed bin (35); 88 dcl 1 copy_sc_meters aligned like sc_meters; 89 dcl dtx fixed bin; 90 dcl error_proc entry options (variable) variable; 91 dcl first_arg fixed bin; 92 dcl inconsistency_count fixed bin; 93 dcl have_lvname bit (1) aligned; 94 dcl have_pvname bit (1) aligned; 95 dcl long_sw bit (1) aligned; 96 dcl lvname char (32); 97 dcl lvx fixed bin; 98 dcl n_args fixed bin; 99 dcl n_pvs fixed bin; 100 dcl pv_found bit (1) aligned; 101 dcl pvx fixed bin; 102 dcl pvname char (32); 103 dcl scavenge_in_progress 104 bit (1) aligned; 105 dcl temp_segs (2) ptr; 106 dcl vcpu_sec float; 107 108 /* Static */ 109 110 dcl MYNAME char (12) int static options (constant) init ("scavenge_vol"); 111 112 /* Based */ 113 114 dcl af_return char (af_return_len) varying based (af_return_ptr); 115 dcl arg char (argl) based (argp); 116 dcl 1 pv_struct (n_pvs) aligned based (temp_segs (2)), 117 2 pvtx fixed bin, 118 2 pvid bit (36) aligned, 119 2 pvname char (32), 120 2 lvname char (32); 121 122 123 /* External */ 124 125 dcl error_table_$badopt fixed bin (35) external; 126 dcl error_table_$duplicate_request 127 fixed bin (35) external; 128 dcl error_table_$inconsistent 129 fixed bin (35) external; 130 dcl error_table_$logical_volume_not_defined 131 fixed bin (35) external; 132 dcl error_table_$noarg fixed bin (35) external; 133 dcl error_table_$not_act_fnc 134 fixed bin (35) external; 135 dcl error_table_$not_privileged 136 fixed bin (35) external; 137 dcl error_table_$pvid_not_found 138 fixed bin (35) external; 139 dcl scavenge_vol_severity_ 140 fixed bin external static; 141 142 /* Entry */ 143 144 dcl active_fnc_err_ entry options (variable); 145 dcl com_err_ entry options (variable); 146 dcl cu_$af_return_arg entry (fixed bin, ptr, fixed bin (21), fixed bin (35)); 147 dcl cu_$arg_ptr entry (fixed bin, ptr, fixed bin (21), fixed bin (35)); 148 dcl get_temp_segments_ entry (char (*), (*) ptr, fixed bin (35)); 149 dcl hphcs_$scavenge_volume 150 entry (fixed bin, bit (36) aligned, ptr, ptr, fixed bin (35)); 151 dcl ioa_ entry options (variable); 152 dcl mdc_$read_disk_table 153 entry (ptr, fixed bin (35)); 154 dcl release_temp_segments_ 155 entry (char (*), (*) ptr, fixed bin (35)); 156 dcl ring_zero_peek_$by_definition 157 entry (char (*), char (*), fixed bin (18), ptr, fixed bin (19), fixed bin (35)); 158 159 160 /* Builtin */ 161 162 dcl addr builtin; 163 dcl char builtin; 164 dcl float builtin; 165 dcl null builtin; 166 dcl size builtin; 167 dcl unspec builtin; 168 169 /* Condition */ 170 171 dcl cleanup condition; 172 dcl linkage_error condition; 173 174 /* Pick up arguments and validate them */ 175 176 177 unspec (arg_options) = ""b; 178 long_sw, have_pvname, have_lvname, all_vols, auto_fl, af_invocation, check_sw = "0"b; 179 error_proc = com_err_; 180 181 n_pvs = 0; 182 scavenge_vol_severity_ = 1; 183 184 call cu_$af_return_arg (n_args, af_return_ptr, af_return_len, code); 185 if code = 0 186 then do; 187 af_invocation = "1"b; 188 check_sw = "1"b; 189 error_proc = active_fnc_err_; 190 end; 191 else if code ^= error_table_$not_act_fnc 192 then do; 193 call error_proc (code, MYNAME); 194 return; 195 end; 196 197 if n_args = 0 198 then do; 199 USAGE_IS: 200 call error_proc (0, MYNAME, "Usage is: ^a {pvname} {-lv LVNAME} {-all} {-auto} {-nopt} {-dump}", 201 MYNAME); 202 call RETURN_AF ("0"b); 203 return; 204 end; 205 206 call cu_$arg_ptr (1, argp, argl, code); 207 if char (arg, 1) = "-" 208 then first_arg = 1; 209 else do; 210 pvname = arg; 211 have_pvname = "1"b; 212 first_arg = 2; 213 end; 214 215 do arg_no = first_arg to n_args; 216 call cu_$arg_ptr (arg_no, argp, argl, code); 217 if arg = "-long" | arg = "-lg" 218 then long_sw = "1"b; 219 else if arg = "-debug" | arg = "-db" 220 then arg_options.debug = "1"b; 221 else if arg = "-trap" 222 then arg_options.trap = "1"b; 223 else if arg = "-meter" 224 then arg_options.print_meters = "1"b; 225 else if arg = "-dump" 226 then arg_options.dump = "1"b; 227 else if arg = "-no_optimize" | arg = "-nopt" 228 then arg_options.no_optimize = "1"b; 229 else if arg = "-check" 230 then check_sw = "1"b; 231 else if arg = "-all" | arg = "-a" 232 then all_vols = "1"b; 233 else if arg = "-auto" 234 then auto_fl = "1"b; 235 else if arg = "-lv" 236 then do; 237 if have_lvname 238 then do; 239 call error_proc (error_table_$duplicate_request, MYNAME, "-lv"); 240 return; 241 end; 242 arg_no = arg_no + 1; 243 call cu_$arg_ptr (arg_no, argp, argl, code); 244 if code ^= 0 245 then do; 246 LV_ERROR: 247 call error_proc (code, MYNAME, "Logical volume name"); 248 call RETURN_AF ("0"b); 249 return; 250 end; 251 if char (arg, 1) = "-" 252 then do; 253 code = error_table_$noarg; 254 goto LV_ERROR; 255 end; 256 have_lvname = "1"b; 257 lvname = arg; 258 end; 259 else if arg = "-fault_under_AST_lock" 260 then arg_options.fault_under_ast = "1"b; 261 else if arg = "-fault_under_volmap_lock" 262 then arg_options.fault_under_volmap = "1"b; 263 else if arg = "-fault_under_PTL" 264 then arg_options.fault_under_pt = "1"b; 265 else do; 266 call error_proc (error_table_$badopt, MYNAME, arg); 267 call RETURN_AF ("0"b); 268 return; 269 end; 270 end; 271 272 273 /* Check arguments for consistency */ 274 275 276 if check_sw 277 & (arg_options.fault_under_ast | arg_options.fault_under_volmap | arg_options.fault_under_pt 278 | arg_options.debug | arg_options.dump) 279 then do; 280 scavenge_vol_severity_ = 1; 281 call error_proc (error_table_$inconsistent, MYNAME, 282 "The debugging options (-debug, -dump, -fault_*) are not valid with -check."); 283 call RETURN_AF ("0"b); 284 end; 285 if (have_pvname & have_lvname) | (have_pvname & all_vols) | (have_lvname & all_vols) 286 then do; 287 call error_proc (error_table_$inconsistent, MYNAME, "^[pvname ^]^[-lv ^]^[-all^]", have_pvname, 288 have_lvname, all_vols); 289 call RETURN_AF ("0"b); 290 return; 291 end; 292 if ^(have_lvname | all_vols) & auto_fl 293 then do; 294 call error_proc (error_table_$inconsistent, MYNAME, "-all or -lv must be used with -auto"); 295 call RETURN_AF ("0"b); 296 return; 297 end; 298 299 300 /* Build list of physical volumes to scavenge. */ 301 302 303 on cleanup call CLEAN_OUT; 304 305 call get_temp_segments_ (MYNAME, temp_segs, code); 306 if code ^= 0 307 then do; 308 call error_proc (code, MYNAME, "Getting temp segments."); 309 call RETURN_AF ("0"b); 310 return; 311 end; 312 313 dtp = temp_segs (1); 314 call mdc_$read_disk_table (dtp, code); 315 if code ^= 0 316 then do; 317 call error_proc (code, MYNAME, "Reading disk table."); 318 call CLEAN_OUT; 319 call RETURN_AF ("0"b); 320 return; 321 end; 322 323 324 if have_pvname 325 then do; 326 pv_found = "0"b; 327 do dtx = 1 to dt.n_entries while (^pv_found); 328 dtep = addr (dt.array (dtx)); 329 if dte.used & (dte.pvname = pvname) 330 then do; 331 pv_found = "1"b; 332 call ADD_PVTX (dtx); 333 end; 334 end; 335 if ^pv_found 336 then do; 337 call error_proc (error_table_$pvid_not_found, MYNAME, pvname); 338 call CLEAN_OUT; 339 call RETURN_AF ("0"b); 340 return; 341 end; 342 end; 343 else if have_lvname 344 then do; 345 do lvx = 1 to dt.n_lv_entries; 346 lvep = addr (dt.lv_array (lvx)); 347 if lve.used & (lve.lvname = lvname) 348 then goto LV_FOUND; 349 end; 350 call error_proc (error_table_$logical_volume_not_defined, MYNAME, lvname); 351 call CLEAN_OUT; 352 call RETURN_AF ("0"b); 353 return; 354 355 LV_FOUND: 356 do dtx = 1 to dt.n_entries; 357 dtep = addr (dt.array (dtx)); 358 if dte.used & (dte.lvx = lvx) 359 then call ADD_PVTX (dtx); 360 end; 361 end; 362 else if all_vols 363 then do; 364 do dtx = 1 to dt.n_entries; 365 dtep = addr (dt.array (dtx)); 366 if dte.used 367 then call ADD_PVTX (dtx); 368 end; 369 end; 370 371 if n_pvs = 0 372 then do; 373 if ^af_invocation 374 then call ioa_ ("^a: No volumes found", MYNAME); 375 call CLEAN_OUT; 376 call RETURN_AF ("0"b); 377 return; 378 end; 379 380 scavenge_vol_severity_ = 0; 381 382 if check_sw 383 then do; /* Don't really want scavenge */ 384 call RETURN_AF ("1"b); 385 call CLEAN_OUT; 386 return; 387 end; 388 389 /* Scavenge each volume. */ 390 391 392 do pvx = 1 to n_pvs; 393 inconsistency_count = INCONSISTENCY_COUNT (pv_struct (pvx).pvtx, scavenge_in_progress); 394 395 if auto_fl 396 then if inconsistency_count <= 0 397 then goto NEXT_PV; 398 399 call ioa_ ("Scavenging volume ^a of logical volume ^a", pv_struct (pvx).pvname, pv_struct (pvx).lvname); 400 401 on linkage_error goto LINKAGE_ERROR; 402 403 call hphcs_$scavenge_volume (pv_struct (pvx).pvtx, pv_struct (pvx).pvid, addr (arg_options), 404 addr (copy_sc_meters), code); 405 406 revert linkage_error; 407 408 if code ^= 0 409 then call error_proc (code, MYNAME, "Scavenging ^a.^[ Another scavenge is in progress for the volume.", 410 pv_struct (pvx).pvname, scavenge_in_progress); 411 412 if long_sw & (code = 0) 413 then do; /* Wants print of meters */ 414 clock_sec = float (copy_sc_meters.clock_time) / 1.0e6; 415 vcpu_sec = float (copy_sc_meters.vcpu) / 1.0e6; 416 417 call ioa_ ("^/Scavenge of ^a took ^7.1f seconds ^7.1f VCPU seconds ^4d page faults^/", 418 pv_struct (pvx).pvname, clock_sec, vcpu_sec, copy_sc_meters.pf); 419 call ioa_ ("^5xVTOCES: ^d examined ^d per-process ^d per-bootload ^d FMDamaged ^d freed^/", 420 copy_sc_meters.n_vtoces, copy_sc_meters.n_vtoces_per_proc, copy_sc_meters.n_vtoces_per_boot, 421 copy_sc_meters.n_vtoces_fmd, copy_sc_meters.n_vtoces_freed); 422 call ioa_ ( 423 "^5xRecords: ^d examined ^d pot. conflicts ^d FMD conflicts ^d conflicts ^d lost^/", 424 copy_sc_meters.n_records, copy_sc_meters.n_conflicts, copy_sc_meters.n_fmd_conflicts, 425 copy_sc_meters.n_real_conflicts, copy_sc_meters.n_lost_records); 426 end; 427 428 NEXT_PV: 429 end; 430 431 GLOBAL_RETURN: 432 call CLEAN_OUT; 433 return; 434 435 436 LINKAGE_ERROR: 437 call error_proc (error_table_$not_privileged, MYNAME, "hphcs_"); 438 call CLEAN_OUT; 439 return; 440 441 442 /* Internal Procedure to add a volume to the scavenge table */ 443 444 ADD_PVTX: 445 proc (Pvtx); 446 447 dcl Pvtx fixed bin; 448 449 if auto_fl 450 then if INCONSISTENCY_COUNT (Pvtx, ("0"b)) <= 0 451 then return; 452 453 n_pvs = n_pvs + 1; 454 pv_struct (n_pvs).pvtx = Pvtx; 455 pv_struct (n_pvs).pvid = dt.array (Pvtx).pvid; 456 pv_struct (n_pvs).pvname = dt.array (Pvtx).pvname; 457 pv_struct (n_pvs).lvname = dt.lv_array (dt.array (Pvtx).lvx).lvname; 458 459 end ADD_PVTX; 460 461 /* Internal Procedure to return the volume inconsistency count for a specified 462* physical volume. Also checks whether a scavenge is likely in progress. */ 463 464 INCONSISTENCY_COUNT: 465 proc (Pvtx, Scavenge_In_Progress) returns (fixed bin); 466 467 dcl Pvtx fixed bin; 468 dcl Scavenge_In_Progress 469 bit (1) aligned; 470 471 dcl 1 local_pvte aligned like pvte; 472 473 call ring_zero_peek_$by_definition ("pvt", "array", ((Pvtx - 1) * size (pvte)), addr (local_pvte), size (pvte), 474 code); 475 if code ^= 0 476 then do; 477 call error_proc (code, MYNAME, "^a", dt.array (Pvtx).pvname); 478 goto GLOBAL_RETURN; 479 end; 480 Scavenge_In_Progress = (local_pvte.scavenger_block_rel ^= ""b); 481 return (local_pvte.vol_trouble_count); 482 483 end INCONSISTENCY_COUNT; 484 485 /* Internal Procedure to return string of PVs if invoked as an active function, 486* or to print (non-empty) list of PVs if invoked with -check. */ 487 488 RETURN_AF: 489 proc (Have_Pvs); 490 491 dcl Have_Pvs bit (1) aligned; 492 493 dcl pvx fixed bin; 494 495 if af_invocation 496 then do; 497 af_return = ""; 498 if Have_Pvs 499 then do pvx = 1 to n_pvs; 500 af_return = af_return || pv_struct (pvx).pvname || " "; 501 end; 502 end; 503 else if check_sw 504 then do; 505 if Have_Pvs & (n_pvs > 0) 506 then do; 507 call ioa_ ("^/Volumes to be Scavenged:^/"); 508 do pvx = 1 to n_pvs; 509 call ioa_ ("^3x^a^-(^a)", pv_struct (pvx).pvname, pv_struct (pvx).lvname); 510 end; 511 call ioa_ (""); 512 end; 513 end; 514 515 end RETURN_AF; 516 517 518 519 520 /* Internal Procedure to clean up */ 521 522 CLEAN_OUT: 523 proc; 524 525 if temp_segs (1) ^= null () 526 then call release_temp_segments_ (MYNAME, temp_segs, code); 527 temp_segs (1) = null (); 528 529 end CLEAN_OUT; 530 531 532 /* format: off */ 533 /* BEGIN INCLUDE FILE ... disk_table.incl.pl1 ... Created Oct 75 for NSS */ 1 2 1 3 1 4 /****^ HISTORY COMMENTS: 1 5* 1) change(86-01-14,Fawcett), approve(86-05-13,MCR7383), 1 6* audit(86-05-14,LJAdams), install(86-07-18,MR12.0-1098): 1 7* Add support for subvolumes. 1 8* END HISTORY COMMENTS */ 1 9 1 10 1 11 /* Modified July 1977 by T. Casey to add pdirs_ok switch in lve */ 1 12 /* Modified April 1981 by J. Bongiovanni to add shared_spindle_flip */ 1 13 /* Modified 831122 by E. A. Ranzenbach to add vacate_pdirs bit to lve. */ 1 14 1 15 /* The disk table lives in ring 1. Its entries parallel the PVT */ 1 16 1 17 dcl dtp ptr, 1 18 dtep ptr, 1 19 lvep ptr; 1 20 1 21 1 22 1 23 dcl 1 dt based (dtp) aligned, 1 24 1 25 2 n_entries fixed bin (17), /* number of disk table entries */ 1 26 2 max_n_entries fixed bin (17), /* max number of disk table entries */ 1 27 2 n_in_use fixed bin (17), /* number of disk table entries in use */ 1 28 2 rpvx fixed bin, /* index (pvtx, too) of the RPV */ 1 29 2 version fixed bin init (1), 1 30 2 n_lv_entries fixed bin, /* Number of LV entries */ 1 31 2 pad (2) bit (36), 1 32 2 array (0 refer (dt.max_n_entries)) like dte, 1 33 2 lv_array (0 refer (dt.max_n_entries)) like lve; 1 34 1 35 dcl 1 dte based (dtep) aligned, 1 36 2 drive_name char (8), /* device name */ 1 37 (2 device_type fixed bin (8), /* device type */ 1 38 2 used bit (1), /* TRUE if this entry is used for paging */ 1 39 2 known bit (1), /* TRUE if label has been read and checked */ 1 40 2 storage_system bit (1), /* TRUE for storage system (vs io disk) */ 1 41 2 permanent bit (1), /* TRUE if cannot be demounted */ 1 42 2 deleted bit (1), /* TRUE if deleted by "deld" */ 1 43 2 rpv bit (1), /* TRUE if the root physical volume */ 1 44 2 demounted bit (1), /* TRUE if was here or was assumed here */ 1 45 2 need_salvage bit (1), /* TRUE if this vol was volsalv'd automatic */ 1 46 2 hc_accepted bit (1), /* TRUE if vol accepted by ring 0 init */ 1 47 2 shared_spindle_flip bit (1), /* used by ring-4 for shared spindle allocation */ 1 48 2 is_sub_vol bit (1), 1 49 2 pad bit (3), 1 50 2 lvx fixed bin (11), /* index in lv_array of lve */ 1 51 2 pre_accepted bit (1)) unaligned, /* TRUE if was used in previous bootload */ 1 52 2 sv_num fixed bin unal, /* this sv number */ 1 53 2 num_of_sv fixed bin unal, /* number of sv for this pv */ 1 54 2 sv_name char (2) aligned, 1 55 2 pvid bit (36), /* physical volume ID */ 1 56 2 pvname char (32); /* Physical volume name. */ 1 57 1 58 dcl 1 lve based (lvep) aligned, 1 59 2 lvid bit (36), /* logical volume ID */ 1 60 (2 used bit (1), /* TRUE if entry used */ 1 61 2 hv_mounted bit (1), /* TRUE if hvol is really OK */ 1 62 2 public bit (1), /* TRUE for public vol */ 1 63 2 mounting bit (1), /* TRUE if mhv is in progress */ 1 64 2 demounting bit (1), /* TRUE if dhv is in progress */ 1 65 2 good_candidate bit (1) unal, /* used for auto dhv */ 1 66 2 demounted_only bit (1) unal, /* lve here only to warm demounted pve's */ 1 67 2 pdirs_ok bit (1) unal, /* TRUE if process directory segments can be on this lv */ 1 68 2 prev_bootload bit (1) unal, /* TRUE if can auto-accept pvs */ 1 69 2 vacate_pdirs bit (1) unal, /* if TRUE we will demand move all perprocess segs */ 1 70 2 pad bit (26)) unal, 1 71 2 lvname char (32), /* Logical volume name */ 1 72 2 min_access_class bit (72), /* Security stuff */ 1 73 2 max_access_class bit (72); /* .. */ 1 74 1 75 /* END INCLUDE FILE ...disk_table.incl.pl1 */ 533 534 /* START OF: pvte.incl.pl1 July 1982 * * * * * * * * * * * * * * * * */ 2 2 2 3 /* Added pc_vacating, Benson Margulies 84-10-17 */ 2 4 2 5 /****^ HISTORY COMMENTS: 2 6* 1) change(86-04-11,Fawcett), approve(86-04-11,MCR7383), 2 7* audit(86-05-29,GDixon), install(86-07-18,MR12.0-1098): 2 8* Add the support for subvolumes 2 9* 2) change(86-04-11,Lippard), approve(86-04-11,MCR7309), 2 10* audit(86-05-29,GDixon), install(86-07-18,MR12.0-1098): 2 11* Add root_lv flag to mount RLVs that do not have hardcore partitions. 2 12* 3) change(88-05-27,GWMay), approve(88-05-27,MCR7883), 2 13* audit(88-06-14,Beattie), install(88-07-19,MR12.2-1061): 2 14* Added inconsistent_dbm bit for determining the status of volume 2 15* dumper bit maps. 2 16* END HISTORY COMMENTS */ 2 17 2 18 dcl pvt$array aligned external; 2 19 dcl pvt$max_n_entries fixed bin external; 2 20 2 21 dcl pvt_arrayp ptr; 2 22 dcl pvtep ptr; 2 23 2 24 dcl 1 pvt_array (pvt$max_n_entries) aligned like pvte based (pvt_arrayp); 2 25 2 26 dcl 1 pvte based (pvtep) aligned, 2 27 2 28 2 pvid bit (36), /* physical volume ID */ 2 29 2 30 2 lvid bit (36), /* logical volume ID */ 2 31 2 32 2 dmpr_in_use (3) bit (1) unaligned, /* physical volume dumper interlock */ 2 33 2 is_sv bit (1) unaligned, /* true if this entry defines a subvolume */ 2 34 2 root_lv bit (1) unaligned, /* true if this is on the root LV */ 2 35 2 removable_pack bit (1) unaligned, /* true if packs are eremoveable */ 2 36 2 inconsistent_dbm bit (1) unaligned, /* true if trouble count is incremented */ 2 37 2 pad3 bit (2) unaligned, 2 38 2 brother_pvtx fixed bin (8) unaligned,/* next pvte in lv chain */ 2 39 2 skip_queue_count fixed bin (18) unsigned unaligned, /* number of times this pv skipped for per-proc allocation due to saturation */ 2 40 2 41 2 42 2 43 2 devname char (4), /* device name */ 2 44 2 45 (2 device_type fixed bin (8), /* device type */ 2 46 2 logical_area_number fixed bin (8), /* disk drive number */ 2 47 2 used bit (1), /* TRUE if this entry is used */ 2 48 2 storage_system bit (1), /* TRUE for storage system (vs io disk) */ 2 49 2 permanent bit (1), /* TRUE if cannot be demounted */ 2 50 2 testing bit (1), /* Protocol bit for read_disk$test */ 2 51 2 being_mounted bit (1), /* TRUE if the physical volume is being mounted */ 2 52 2 being_demounted bit (1), /* TRUE if the pysical volume is being demounted */ 2 53 2 check_read_incomplete bit (1), /* page control should check read incomplete */ 2 54 2 device_inoperative bit (1), /* TRUE if disk_control decides dev busted */ 2 55 2 rpv bit (1), /* TRUE if this is the root physical volume */ 2 56 2 scav_check_address 2 57 bit (1), /* TRUE is page control should check deposits/withdrawals against scavenger table */ 2 58 2 deposit_to_volmap bit (1), /* TRUE if deposits should got to volume map, not stock */ 2 59 2 being_demounted2 bit (1), /* No more vtoc I/O during demount */ 2 60 2 pc_vacating bit (1), /* No more withdraws from this volume -- for debugging */ 2 61 2 vacating bit (1), /* don't put new segs on this vol */ 2 62 2 hc_part_used bit (1), /* HC part set up by init_pvt */ 2 63 2 volmap_lock_notify bit (1) unal, /* TRUE if notify required when volmap lock is unlocked */ 2 64 2 volmap_idle_notify bit (1) unal, /* TRUE if notify required when volmap state is idle */ 2 65 2 vtoc_map_lock_notify bit (1) unal, /* TRUE if notify required when vtoc map lock is unlocked */ 2 66 2 67 2 68 2 n_free_vtoce fixed bin (17), /* number of free VTOC entries */ 2 69 2 vtoc_size fixed bin (17), /* size of the VTOC part of the disk - in records */ 2 70 2 71 2 dbmrp (2) bit (18), /* rel ptr to dumber bit maps for this volume */ 2 72 2 73 2 nleft fixed bin (17), /* number of records left */ 2 74 2 totrec fixed bin (17)) unaligned, /* Total records in this map */ 2 75 2 76 2 dim_info bit (36), /* Information peculiar to DIM */ 2 77 2 sv_num fixed bin, /* the number of this subvolume starting at 0 */ 2 78 2 num_of_svs fixed bin, /* number of subvolumes for this device */ 2 79 2 records_per_cyl fixed bin, 2 80 2 record_factor fixed bin, /* the record factor for logical to real seek calculation */ 2 81 2 sv_name char (2) aligned, 2 82 2 curn_dmpr_vtocx (3) fixed bin unaligned,/* current vtocx being dumped */ 2 83 2 n_vtoce fixed bin unaligned, /* number of vtoce on this volume */ 2 84 2 85 2 baseadd fixed bin (18) uns unaligned, /* Base of paging region */ 2 86 2 pad2 bit (18) unaligned, 2 87 2 88 2 pad_for_mod_2 fixed bin (35), /* Make volmap_seg_sdw double word aligned */ 2 89 2 90 2 volmap_seg_sdw fixed bin (71), /* SDW describing volmap_seg */ 2 91 2 92 2 volmap_astep ptr unal, /* Packed pointer to ASTE for volmap_seg */ 2 93 2 94 2 volmap_offset bit (18) unal, /* Offset in volmap_seg of volume map */ 2 95 2 vtoc_map_offset bit (18) unal, /* Offset in volmap_seg of VTOC map */ 2 96 2 97 2 98 2 volmap_lock bit (36) aligned, /* Lock on volume map operations */ 2 99 2 100 2 vtoc_map_lock bit (36) aligned, /* Lock on VTOC map operations */ 2 101 2 102 2 volmap_stock_ptr ptr unal, /* Packed pointer to record stock */ 2 103 2 104 2 vtoc_map_stock_ptr ptr unal, /* Packed pointer to VTOCE stock */ 2 105 2 106 2 volmap_async_state fixed bin (17) unaligned, /* Asynchronous update state of Volume Map */ 2 107 2 volmap_async_page fixed bin (17) unaligned, /* Page number for asynchronous update */ 2 108 2 109 2 vol_trouble_count fixed bin (17) unaligned, /* Count of inconsistencies since last salvage */ 2 110 2 scavenger_block_rel bit (18) unaligned; /* Offset to scavenger block, ^0 => scavenging */ 2 111 2 112 2 113 dcl (VOLMAP_ASYNC_IDLE init (0), /* for volmap_async_state */ 2 114 VOLMAP_ASYNC_READ init (1), 2 115 VOLMAP_ASYNC_WRITE init (2)) fixed bin int static options (constant); 2 116 2 117 2 118 /* END OF: pvte.incl.pl1 * * * * * * * * * * * * * * * * */ 534 535 /* START OF: scavenger_data.incl.pl1 November 1982 * * * * * * * * * * * * * * * * */ 3 2 3 3 /* format: style3 */ 3 4 dcl scavenger_data$ external; 3 5 3 6 dcl scavenger_datap ptr; 3 7 dcl sc_metersp ptr; 3 8 dcl sc_process_tablep ptr; 3 9 dcl scavenger_blockp ptr; 3 10 dcl record_blockp ptr; 3 11 dcl scavenger_optionsp ptr; 3 12 3 13 dcl sc_n_processes fixed bin; 3 14 dcl scavenger_n_records fixed bin; 3 15 dcl scavenger_n_ovfl fixed bin; 3 16 3 17 3 18 dcl 1 scavenger_data aligned based (scavenger_datap), 3 19 2 lock aligned, /* Lock on scavenger_data */ 3 20 3 lock_word bit (36) aligned, 3 21 3 wait_event bit (36) aligned, 3 22 3 notify_sw bit (1) aligned, 3 23 2 process_table_ptr 3 24 ptr, /* Pointer to scavenger process table */ 3 25 2 error_severity fixed bin, /* Severity of unexpected error condition */ 3 26 2 meters aligned like sc_meters, 3 27 2 free bit (1) aligned; /* Available region */ 3 28 3 29 3 30 dcl 1 sc_meters aligned based (sc_metersp), /* Meters */ 3 31 2 n_scavenge fixed bin (35), /* Number of volume scavenges */ 3 32 2 pf fixed bin (35), /* Total page faults */ 3 33 2 vcpu fixed bin (71), /* Total virtual CPU time */ 3 34 2 clock_time fixed bin (71), /* Total clock time */ 3 35 2 n_vtoces fixed bin (35), /* Number VTOCEs examined */ 3 36 2 n_vtoces_damaged 3 37 fixed bin (35), /* Number VTOCEs damaged by scavenge */ 3 38 2 n_vtoces_per_proc 3 39 fixed bin (35), /* Number per-process VTOCEs freed */ 3 40 2 n_vtoces_per_boot 3 41 fixed bin (35), /* Number per-bootload VTOCEs freed */ 3 42 2 n_vtoces_freed fixed bin (35), /* Total number VTOCEs freed */ 3 43 2 n_vtoces_fmd fixed bin (35), /* Number VTOCEs with fm_damaged reset */ 3 44 2 n_records fixed bin (35), /* Number non-null filemap entries examined */ 3 45 2 n_conflicts fixed bin (35), /* Number potential conflicts detected */ 3 46 2 n_fmd_conflicts fixed bin (35), /* Number potential conflicts due to fm_damaged */ 3 47 2 n_real_conflicts 3 48 fixed bin (35), /* Number real conflicts */ 3 49 2 n_lost_records fixed bin (35); /* Number lost records freed */ 3 50 3 51 3 52 dcl 1 sc_process_table aligned based (sc_process_tablep), 3 53 2 max_n_processes fixed bin, /* Number of table entries */ 3 54 2 n_processes fixed bin, /* Number active entries */ 3 55 2 process (sc_n_processes refer (sc_process_table.max_n_processes)) aligned, 3 56 3 processid bit (36) aligned, /* Owner. 0=>empty */ 3 57 3 pvtep ptr unal, /* PVTE of volume being scavenged */ 3 58 3 blockp ptr unal, /* Block w/i scavenger_data */ 3 59 3 first_block_page 3 60 fixed bin, /* Index of first page of block */ 3 61 3 n_block_pages fixed bin; /* Number of pages in block */ 3 62 3 63 3 64 dcl 1 scavenger_block aligned based (scavenger_blockp), 3 65 2 n_records fixed bin, /* Number of record addresses */ 3 66 2 n_ovfl fixed bin, /* Number of overflow blocks */ 3 67 2 ovfl_free_ix fixed bin, /* Index of first free overflow block */ 3 68 2 records (scavenger_n_records refer (scavenger_block.n_records)) aligned like record_block, 3 69 2 overflow (scavenger_n_ovfl refer (scavenger_block.n_ovfl)) aligned like record_block; 3 70 3 71 3 72 dcl 1 record_block aligned based (record_blockp),/* One per record address */ 3 73 2 vtocx fixed bin (15) uns unal, /* Owning VTOCE index */ 3 74 2 pageno fixed bin (8) uns unal, /* Owning page number */ 3 75 2 state fixed bin (2) uns unal, /* State */ 3 76 2 lock bit (1) unal, /* Lock bit on this block */ 3 77 2 ovflx fixed bin (10) uns unal; /* Index of first overflow block on chain */ 3 78 3 79 dcl 1 scavenger_data_pages 3 80 aligned based (scavenger_datap), 3 81 2 page (0:255) aligned, 3 82 3 word (1024) bit (36) aligned; 3 83 3 84 dcl 1 scavenger_options aligned based (scavenger_optionsp), 3 85 2 print_meters bit (1) unaligned, /* ON => meter each scavenge into the log */ 3 86 2 debug bit (1) unaligned, /* ON => do special debugging things */ 3 87 2 dump bit (1) unaligned, /* ON => dump bad VTOCEs into syserr log */ 3 88 2 trap bit (1) unaligned, /* ON => trap to BOS for debug */ 3 89 2 no_optimize bit (1) unaligned, /* ON => no VTOCE read-ahead */ 3 90 2 fault_under_ast bit (1) unaligned, /* ON => fault under AST lock, benign */ 3 91 2 fault_under_volmap bit (1) unaligned, /* ON => fault under volmap lock, benign */ 3 92 2 fault_under_pt bit (1) unaligned; /* ON => fault inder PTL, NOT BENIGN */ 3 93 3 94 dcl ( 3 95 STATE_UNSEEN init (0), 3 96 STATE_FREE init (1), 3 97 STATE_IN_USE init (2), 3 98 STATE_CONFLICT init (3) 3 99 ) fixed bin int static options (constant); 3 100 3 101 3 102 3 103 3 104 /* END OF: scavenger_data.incl.pl1 * * * * * * * * * * * * * * * * */ 535 536 537 end scavenge_vol; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 07/19/88 1533.3 scavenge_vol.pl1 >special_ldd>install>MR12.2-1061>scavenge_vol.pl1 533 1 07/24/86 2051.9 disk_table.incl.pl1 >ldd>include>disk_table.incl.pl1 534 2 07/19/88 1523.2 pvte.incl.pl1 >special_ldd>install>MR12.2-1061>pvte.incl.pl1 535 3 02/27/84 1141.4 scavenger_data.incl.pl1 >ldd>include>scavenger_data.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. Have_Pvs parameter bit(1) dcl 491 ref 488 498 505 MYNAME 000000 constant char(12) initial packed unaligned dcl 110 set ref 193* 199* 199* 239* 246* 266* 281* 287* 294* 305* 308* 317* 337* 350* 373* 408* 436* 477* 525* Pvtx parameter fixed bin(17,0) dcl 467 in procedure "INCONSISTENCY_COUNT" ref 464 473 477 Pvtx parameter fixed bin(17,0) dcl 447 in procedure "ADD_PVTX" set ref 444 449* 454 455 456 457 Scavenge_In_Progress parameter bit(1) dcl 468 set ref 464 480* active_fnc_err_ 000032 constant entry external dcl 144 ref 189 addr builtin function dcl 162 ref 328 346 357 365 403 403 403 403 473 473 af_invocation 000100 automatic bit(1) dcl 76 set ref 178* 187* 373 495 af_return based varying char dcl 114 set ref 497* 500* 500 af_return_len 000101 automatic fixed bin(21,0) dcl 77 set ref 184* 497 500 af_return_ptr 000102 automatic pointer dcl 78 set ref 184* 497 500 500 all_vols 000104 automatic bit(1) dcl 79 set ref 178* 231* 285 285 287* 292 362 arg based char packed unaligned dcl 115 set ref 207 210 217 217 219 219 221 223 225 227 227 229 231 231 233 235 251 257 259 261 263 266* arg_no 000106 automatic fixed bin(17,0) dcl 81 set ref 215* 216* 242* 242 243* arg_options 000107 automatic structure level 1 dcl 82 set ref 177* 403 403 argl 000110 automatic fixed bin(21,0) dcl 83 set ref 206* 207 210 216* 217 217 219 219 221 223 225 227 227 229 231 231 233 235 243* 251 257 259 261 263 266 266 argp 000112 automatic pointer dcl 84 set ref 206* 207 210 216* 217 217 219 219 221 223 225 227 227 229 231 231 233 235 243* 251 257 259 261 263 266 array 10 based structure array level 2 dcl 1-23 set ref 328 357 365 auto_fl 000105 automatic bit(1) dcl 80 set ref 178* 233* 292 395 449 char builtin function dcl 163 ref 207 251 check_sw 000114 automatic bit(1) dcl 85 set ref 178* 188* 229* 276 382 503 cleanup 000210 stack reference condition dcl 171 ref 303 clock_sec 000115 automatic float bin(27) dcl 86 set ref 414* 417* clock_time 4 000120 automatic fixed bin(71,0) level 2 dcl 88 set ref 414 code 000116 automatic fixed bin(35,0) dcl 87 set ref 184* 185 191 193* 206* 216* 243* 244 246* 253* 305* 306 308* 314* 315 317* 403* 408 408* 412 473* 475 477* 525* com_err_ 000034 constant entry external dcl 145 ref 179 copy_sc_meters 000120 automatic structure level 1 dcl 88 set ref 403 403 cu_$af_return_arg 000036 constant entry external dcl 146 ref 184 cu_$arg_ptr 000040 constant entry external dcl 147 ref 206 216 243 debug 0(01) 000107 automatic bit(1) level 2 packed packed unaligned dcl 82 set ref 219* 276 dt based structure level 1 dcl 1-23 dte based structure level 1 dcl 1-35 dtep 000226 automatic pointer dcl 1-17 set ref 328* 329 329 357* 358 358 365* 366 dtp 000224 automatic pointer dcl 1-17 set ref 313* 314* 327 328 345 346 355 357 364 365 455 456 457 457 477 dtx 000141 automatic fixed bin(17,0) dcl 89 set ref 327* 328 332* 355* 357 358* 364* 365 366* dump 0(02) 000107 automatic bit(1) level 2 packed packed unaligned dcl 82 set ref 225* 276 error_proc 000142 automatic entry variable dcl 90 set ref 179* 189* 193 199 239 246 266 281 287 294 308 317 337 350 408 436 477 error_table_$badopt 000010 external static fixed bin(35,0) dcl 125 set ref 266* error_table_$duplicate_request 000012 external static fixed bin(35,0) dcl 126 set ref 239* error_table_$inconsistent 000014 external static fixed bin(35,0) dcl 128 set ref 281* 287* 294* error_table_$logical_volume_not_defined 000016 external static fixed bin(35,0) dcl 130 set ref 350* error_table_$noarg 000020 external static fixed bin(35,0) dcl 132 ref 253 error_table_$not_act_fnc 000022 external static fixed bin(35,0) dcl 133 ref 191 error_table_$not_privileged 000024 external static fixed bin(35,0) dcl 135 set ref 436* error_table_$pvid_not_found 000026 external static fixed bin(35,0) dcl 137 set ref 337* fault_under_ast 0(05) 000107 automatic bit(1) level 2 packed packed unaligned dcl 82 set ref 259* 276 fault_under_pt 0(07) 000107 automatic bit(1) level 2 packed packed unaligned dcl 82 set ref 263* 276 fault_under_volmap 0(06) 000107 automatic bit(1) level 2 packed packed unaligned dcl 82 set ref 261* 276 first_arg 000146 automatic fixed bin(17,0) dcl 91 set ref 207* 212* 215 float builtin function dcl 164 ref 414 415 get_temp_segments_ 000042 constant entry external dcl 148 ref 305 have_lvname 000150 automatic bit(1) dcl 93 set ref 178* 237 256* 285 285 287* 292 343 have_pvname 000151 automatic bit(1) dcl 94 set ref 178* 211* 285 285 287* 324 hphcs_$scavenge_volume 000044 constant entry external dcl 149 ref 403 inconsistency_count 000147 automatic fixed bin(17,0) dcl 92 set ref 393* 395 ioa_ 000046 constant entry external dcl 151 ref 373 399 417 419 422 507 509 511 linkage_error 000216 stack reference condition dcl 172 ref 401 406 local_pvte 000254 automatic structure level 1 dcl 471 set ref 473 473 long_sw 000152 automatic bit(1) dcl 95 set ref 178* 217* 412 lv_array based structure array level 2 dcl 1-23 set ref 346 lve based structure level 1 dcl 1-58 lvep 000230 automatic pointer dcl 1-17 set ref 346* 347 347 lvname 12 based char(32) array level 2 in structure "pv_struct" dcl 116 in procedure "scavenge_vol" set ref 399* 457* 509* lvname based char(32) array level 3 in structure "dt" dcl 1-23 in procedure "scavenge_vol" set ref 457 lvname 2 based char(32) level 2 in structure "lve" dcl 1-58 in procedure "scavenge_vol" ref 347 lvname 000153 automatic char(32) packed unaligned dcl 96 in procedure "scavenge_vol" set ref 257* 347 350* lvx 12(23) based fixed bin(11,0) array level 3 in structure "dt" packed packed unaligned dcl 1-23 in procedure "scavenge_vol" set ref 457 lvx 2(23) based fixed bin(11,0) level 2 in structure "dte" packed packed unaligned dcl 1-35 in procedure "scavenge_vol" ref 358 lvx 000163 automatic fixed bin(17,0) dcl 97 in procedure "scavenge_vol" set ref 345* 346* 358 max_n_entries 1 based fixed bin(17,0) level 2 dcl 1-23 ref 346 457 mdc_$read_disk_table 000050 constant entry external dcl 152 ref 314 n_args 000164 automatic fixed bin(17,0) dcl 98 set ref 184* 197 215 n_conflicts 15 000120 automatic fixed bin(35,0) level 2 dcl 88 set ref 422* n_entries based fixed bin(17,0) level 2 dcl 1-23 ref 327 355 364 n_fmd_conflicts 16 000120 automatic fixed bin(35,0) level 2 dcl 88 set ref 422* n_lost_records 20 000120 automatic fixed bin(35,0) level 2 dcl 88 set ref 422* n_lv_entries 5 based fixed bin(17,0) level 2 dcl 1-23 ref 345 n_pvs 000165 automatic fixed bin(17,0) dcl 99 set ref 181* 371 392 453* 453 454 455 456 457 498 505 508 n_real_conflicts 17 000120 automatic fixed bin(35,0) level 2 dcl 88 set ref 422* n_records 14 000120 automatic fixed bin(35,0) level 2 dcl 88 set ref 422* n_vtoces 6 000120 automatic fixed bin(35,0) level 2 dcl 88 set ref 419* n_vtoces_fmd 13 000120 automatic fixed bin(35,0) level 2 dcl 88 set ref 419* n_vtoces_freed 12 000120 automatic fixed bin(35,0) level 2 dcl 88 set ref 419* n_vtoces_per_boot 11 000120 automatic fixed bin(35,0) level 2 dcl 88 set ref 419* n_vtoces_per_proc 10 000120 automatic fixed bin(35,0) level 2 dcl 88 set ref 419* no_optimize 0(04) 000107 automatic bit(1) level 2 packed packed unaligned dcl 82 set ref 227* null builtin function dcl 165 ref 525 527 pf 1 000120 automatic fixed bin(35,0) level 2 dcl 88 set ref 417* print_meters 000107 automatic bit(1) level 2 packed packed unaligned dcl 82 set ref 223* pv_found 000166 automatic bit(1) dcl 100 set ref 326* 327 331* 335 pv_struct based structure array level 1 dcl 116 pvid 15 based bit(36) array level 3 in structure "dt" dcl 1-23 in procedure "scavenge_vol" set ref 455 pvid 1 based bit(36) array level 2 in structure "pv_struct" dcl 116 in procedure "scavenge_vol" set ref 403* 455* pvname 2 based char(32) array level 2 in structure "pv_struct" dcl 116 in procedure "scavenge_vol" set ref 399* 408* 417* 456* 500 509* pvname 16 based char(32) array level 3 in structure "dt" dcl 1-23 in procedure "scavenge_vol" set ref 456 477* pvname 000170 automatic char(32) packed unaligned dcl 102 in procedure "scavenge_vol" set ref 210* 329 337* pvname 6 based char(32) level 2 in structure "dte" dcl 1-35 in procedure "scavenge_vol" ref 329 pvte based structure level 1 dcl 2-26 ref 473 473 473 pvtep automatic pointer dcl 2-22 ref 473 473 473 pvtx based fixed bin(17,0) array level 2 dcl 116 set ref 393* 403* 454* pvx 000167 automatic fixed bin(17,0) dcl 101 in procedure "scavenge_vol" set ref 392* 393 399 399 403 403 408 417* pvx 000316 automatic fixed bin(17,0) dcl 493 in procedure "RETURN_AF" set ref 498* 500* 508* 509 509* record_block based structure level 1 dcl 3-72 release_temp_segments_ 000052 constant entry external dcl 154 ref 525 ring_zero_peek_$by_definition 000054 constant entry external dcl 156 ref 473 sc_meters based structure level 1 dcl 3-30 scavenge_in_progress 000200 automatic bit(1) dcl 103 set ref 393* 408* scavenge_vol_severity_ 000030 external static fixed bin(17,0) dcl 139 set ref 182* 280* 380* scavenger_block_rel 33(18) 000254 automatic bit(18) level 2 packed packed unaligned dcl 471 set ref 480 scavenger_options based structure level 1 dcl 3-84 size builtin function dcl 166 ref 473 473 473 temp_segs 000202 automatic pointer array dcl 105 set ref 305* 313 393 399 399 403 403 408 417 454 455 456 457 500 509 509 525 525* 527* trap 0(03) 000107 automatic bit(1) level 2 packed packed unaligned dcl 82 set ref 221* unspec builtin function dcl 167 set ref 177* used 2(09) based bit(1) level 2 in structure "dte" packed packed unaligned dcl 1-35 in procedure "scavenge_vol" ref 329 358 366 used 1 based bit(1) level 2 in structure "lve" packed packed unaligned dcl 1-58 in procedure "scavenge_vol" ref 347 vcpu 2 000120 automatic fixed bin(71,0) level 2 dcl 88 set ref 415 vcpu_sec 000206 automatic float bin(27) dcl 106 set ref 415* 417* vol_trouble_count 33 000254 automatic fixed bin(17,0) level 2 packed packed unaligned dcl 471 set ref 481 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. STATE_CONFLICT internal static fixed bin(17,0) initial dcl 3-94 STATE_FREE internal static fixed bin(17,0) initial dcl 3-94 STATE_IN_USE internal static fixed bin(17,0) initial dcl 3-94 STATE_UNSEEN internal static fixed bin(17,0) initial dcl 3-94 VOLMAP_ASYNC_IDLE internal static fixed bin(17,0) initial dcl 2-113 VOLMAP_ASYNC_READ internal static fixed bin(17,0) initial dcl 2-113 VOLMAP_ASYNC_WRITE internal static fixed bin(17,0) initial dcl 2-113 pvt$array external static fixed bin(17,0) dcl 2-18 pvt$max_n_entries external static fixed bin(17,0) dcl 2-19 pvt_array based structure array level 1 dcl 2-24 pvt_arrayp automatic pointer dcl 2-21 record_blockp automatic pointer dcl 3-10 sc_metersp automatic pointer dcl 3-7 sc_n_processes automatic fixed bin(17,0) dcl 3-13 sc_process_table based structure level 1 dcl 3-52 sc_process_tablep automatic pointer dcl 3-8 scavenger_block based structure level 1 dcl 3-64 scavenger_blockp automatic pointer dcl 3-9 scavenger_data based structure level 1 dcl 3-18 scavenger_data$ external static fixed bin(17,0) dcl 3-4 scavenger_data_pages based structure level 1 dcl 3-79 scavenger_datap automatic pointer dcl 3-6 scavenger_n_ovfl automatic fixed bin(17,0) dcl 3-15 scavenger_n_records automatic fixed bin(17,0) dcl 3-14 scavenger_optionsp automatic pointer dcl 3-11 NAMES DECLARED BY EXPLICIT CONTEXT. ADD_PVTX 002442 constant entry internal dcl 444 ref 332 358 366 CLEAN_OUT 003037 constant entry internal dcl 522 ref 303 318 338 351 375 385 431 438 GLOBAL_RETURN 002405 constant label dcl 431 ref 478 INCONSISTENCY_COUNT 002527 constant entry internal dcl 464 ref 393 449 LINKAGE_ERROR 002412 constant label dcl 436 ref 401 LV_ERROR 001022 constant label dcl 246 ref 254 LV_FOUND 001705 constant label dcl 355 ref 347 NEXT_PV 002403 constant label dcl 428 ref 395 RETURN_AF 002651 constant entry internal dcl 488 ref 202 248 267 283 289 295 309 319 339 352 376 384 USAGE_IS 000503 constant label dcl 199 scavenge_vol 000406 constant entry external dcl 20 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 3406 3464 3112 3416 Length 3752 3112 56 252 273 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME scavenge_vol 406 external procedure is an external procedure. on unit on line 303 64 on unit on unit on line 401 64 on unit ADD_PVTX internal procedure shares stack frame of external procedure scavenge_vol. INCONSISTENCY_COUNT internal procedure shares stack frame of external procedure scavenge_vol. RETURN_AF internal procedure shares stack frame of external procedure scavenge_vol. CLEAN_OUT 78 internal procedure is called by several nonquick procedures. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME scavenge_vol 000100 af_invocation scavenge_vol 000101 af_return_len scavenge_vol 000102 af_return_ptr scavenge_vol 000104 all_vols scavenge_vol 000105 auto_fl scavenge_vol 000106 arg_no scavenge_vol 000107 arg_options scavenge_vol 000110 argl scavenge_vol 000112 argp scavenge_vol 000114 check_sw scavenge_vol 000115 clock_sec scavenge_vol 000116 code scavenge_vol 000120 copy_sc_meters scavenge_vol 000141 dtx scavenge_vol 000142 error_proc scavenge_vol 000146 first_arg scavenge_vol 000147 inconsistency_count scavenge_vol 000150 have_lvname scavenge_vol 000151 have_pvname scavenge_vol 000152 long_sw scavenge_vol 000153 lvname scavenge_vol 000163 lvx scavenge_vol 000164 n_args scavenge_vol 000165 n_pvs scavenge_vol 000166 pv_found scavenge_vol 000167 pvx scavenge_vol 000170 pvname scavenge_vol 000200 scavenge_in_progress scavenge_vol 000202 temp_segs scavenge_vol 000206 vcpu_sec scavenge_vol 000224 dtp scavenge_vol 000226 dtep scavenge_vol 000230 lvep scavenge_vol 000254 local_pvte INCONSISTENCY_COUNT 000316 pvx RETURN_AF THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_ne_as alloc_char_temp cat_realloc_chars call_ent_var_desc call_ext_out_desc call_ext_out call_int_this call_int_other return_mac tra_ext_1 enable_op shorten_stack ext_entry int_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. active_fnc_err_ com_err_ cu_$af_return_arg cu_$arg_ptr get_temp_segments_ hphcs_$scavenge_volume ioa_ mdc_$read_disk_table release_temp_segments_ ring_zero_peek_$by_definition THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$badopt error_table_$duplicate_request error_table_$inconsistent error_table_$logical_volume_not_defined error_table_$noarg error_table_$not_act_fnc error_table_$not_privileged error_table_$pvid_not_found scavenge_vol_severity_ LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 20 000405 177 000413 178 000414 179 000423 181 000427 182 000430 184 000432 185 000446 187 000450 188 000452 189 000453 190 000460 191 000461 193 000464 194 000500 197 000501 199 000503 202 000532 203 000536 206 000537 207 000555 210 000571 211 000575 212 000577 215 000601 216 000611 217 000626 219 000643 221 000656 223 000665 225 000674 227 000703 229 000716 231 000725 233 000740 235 000747 237 000753 239 000756 240 001001 242 001002 243 001003 244 001020 246 001022 248 001050 249 001054 251 001055 253 001066 254 001071 256 001072 257 001074 258 001100 259 001101 261 001110 263 001117 266 001126 267 001152 268 001156 270 001157 276 001161 280 001174 281 001177 283 001222 285 001226 287 001250 289 001306 290 001312 292 001313 294 001323 295 001347 296 001353 303 001354 305 001376 306 001417 308 001421 309 001444 310 001450 313 001451 314 001453 315 001464 317 001466 318 001511 319 001515 320 001521 324 001522 326 001525 327 001526 328 001537 329 001543 331 001552 332 001554 334 001556 335 001560 337 001562 338 001603 339 001607 340 001613 342 001614 343 001615 345 001620 346 001631 347 001642 349 001651 350 001653 351 001674 352 001700 353 001704 355 001705 357 001715 358 001721 360 001733 361 001735 362 001736 364 001741 365 001751 366 001755 368 001762 371 001764 373 001766 375 002013 376 002017 377 002023 380 002024 382 002026 384 002030 385 002034 386 002040 392 002041 393 002047 395 002063 399 002067 401 002121 403 002140 406 002166 408 002167 412 002231 414 002235 415 002244 417 002253 419 002313 422 002347 428 002403 431 002405 433 002411 436 002412 438 002435 439 002441 444 002442 449 002444 453 002465 454 002466 455 002475 456 002502 457 002507 459 002526 464 002527 473 002531 475 002602 477 002604 478 002637 480 002640 481 002645 488 002651 495 002653 497 002655 498 002656 500 002671 501 002731 502 002734 503 002735 505 002737 507 002744 508 002760 509 002767 510 003022 511 003024 515 003035 522 003036 525 003044 527 003071 529 003074 ----------------------------------------------------------- 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