Google
 

Trailing-Edge - PDP-10 Archives - bb-l014q-bm_tops20_v6_1_atpch17 - autopatch/mountr.c17
There is 1 other file named mountr.c17 in the archive. Click here to see a list.
 REP 7/2	;17C1
		MTRMAN==335		;Maintenance edit level
 WIT
		MTRMAN==336		;Maintenance edit level
 INS 470/4	;17C2

	336	5.1247		Oct-13-87
		In routine STRFND: when MOUNTR detects a -1 for the address of a SSB in
	the DSB, go to STRFN3 to find out why.  There are three cases that this might
	happen: if two identical structures are put online, if a disk drive switches
	paths while the MONITOR is doing HOM block checking on that drive, and if two
	structures with identical bad HOM blocks are put online.  The first case MOUNTR
	will create two structure status blocks for each structure.  The second case,
	MOUNTR will delete the path (DSB) that is doing the HOM block checking.  The
	third case will be treated like the first but the DSB will state that the disk
	has bad HOM blocks.  Since the MONITOR will no longer returns two accessible
	paths to a disk drive, MOUNTR will no longer crash.
 REP 24/101	;17C3
		JRST [LOAD STR,DSKSSA,(DSK) ;No structure,
		      JUMPE STR,R	;If no pointer forget about this disk
		      CALL CHKDSK	;Is it due to disk errors?
		      RET		;Yes, bad data on disk drive
 WIT
	;[336]At DDSCHK:+7L change 4 lines JYCW 10/13/87
		JRST [CALL CHKDSK	;[336]Is it due to disk errors?
		      RET		;[336]Yes, bad data on disk drive
		      LOAD STR,DSKSSA,(DSK) ;[336]No structure,
		      JUMPE STR,R	;[336]If no pointer forget about this disk
 REP 19/107	;17C4
		CALL SSBCRE		;Get a new SSB entry
 WIT
	STRGS0:	CALL SSBCRE		;Get a new SSB entry
 REP 32/107	;17C5
		JRST [CAMN T2,DSK	;Yes, is it the same as this one?
		      JRST STRFN0	;Yes, still ok.
		      LOAD T1,DSKSSA,(DSK) ;Get the disk structure address
		      CAIN T1,-1	;Have we already been here?
		      $STOP <Disk Port switch case detected twice>
		      SETONE DSKSSA,(DSK) ;Set the case
		      SETOM AGAIN	;Say we should try again
		      RET]
 WIT
		IFNSK.
		 CAMN T2,DSK		;Yes, is it the same as this one?
		 JRST STRFN0		;Yes, still ok.
		 LOAD T1,DSKSSA,(DSK)	;Get the disk structure address
		 CAIN T1,-1		;Have we already been here?
	;[336]At STRFND:+8L change 1 line JYCW 10/13/87
		 JRST STRFN3		;[336]Yes, go do some analyzing
		 SETONE DSKSSA,(DSK)	;Set the case
		 SETOM AGAIN		;Say we should try again
		 RET
		ENDIF.
 INS 1/108	;17C6

	;[336] STRFN3 - Find out why we have a -1 in DSKSSA.
	;Accepts T2/disk status block
	;	 DSK/disk status block with -1 for SSB address.  
	;	 STR/SSB

	STRFN3:	MOVE T1,DSKFLG(DSK)	;[336]Get status flag of coming online disk
		TXNE T1,MS%IAC+MS%OFL	;[336]HOM block checking?
		 IFNSK.
		  MOVE T2,DSK		;[336]Move DSB into AC T2
		  JRST STRFN5		;[336]Delete DSB
		 ENDIF.
		MOVE T3,DSKFLG(T2)	;[336]Get disk status flag of existing disk
		TXNE T3,MS%IAC+MS%OFL	;[336][336]HOM block checking?
		 JRST STRFN5		;[336]Yes, delete DSB

	;  Not result from a force offline due to HOM block checking
	;  Is it due to bad HOM block informaton

		TXNN T1,MS%HBB		;[336]Bad HOM block?
		 IFSKP.		        ;[336]Yes
		  SETZM DSKP2(DSK)	;[336]Clear pointer to SSB (zeros DSKSSA)
		  RET			;[336]Yes, no need to add SSB
		 ENDIF.
		
	;  Not result from bad HOM block
	;  Must be identical structures coming online

		JRST STRGS0		;[336]Go create a new SSB

	;T2/DSB address

	STRFN5:	SETZM DSKSTN(T2)	;[336]Zero structure name
		SETZM DSKSTA(T2)	;[336]Zero structure alias
		SETZM DSKNS(T2)		;[336]Zero structure unit information
		SETZM DSKP2(T2)		;[336]Clear pointer to SSB (zeros DSKSSA)
		RET
 REP 11/109	;17C7
		SETONE STR%DE,STRFL1(STR) ;Yes, set the disk error flag
		MOVE T1,DSKCKU(DSK)	;Get CKU
		MOVE T2,DSKSTN(DSK)	;Get Alias
		TMCT <%IDevice error on %1K%_Structure name %2S: cannot be used>
 WIT
	;[336]At CHKDSK:+2L delete 1 line JYCW 10/13/87
		MOVE T1,DSKCKU(DSK)	;Get CKU
	;[336]At CHKDSK:+4L replace 2 lines with 1 line JYCW 10/13/87
		TMCT <%IDevice error on %1K%_Drive cannot be used.> ;[336]
 INS 35/109	;17C8
	;[336]At CHKDSK:+26L Add 3 lines JYCW 10/13/87
		LOAD STR,DSKSSA,(DSK)	;[336]No structure,
		JUMPE STR,R		;[336]If no pointer forget about this disk
		SETONE STR%DE,STRFL1(STR) ;[336]Yes, set the disk error flag
 SUM 157096