Article 2930 of vmsnet.sysmgt:
Path: nntpd.lkg.dec.com!pa.dec.com!news1.digital.com!uunet!in2.uu.net!news.sprintlink.net!sunic!sunic.sunet.se!seunet!mn4.swip.net!satt!satt!nntp
Newsgroups: vmsnet.sysmgt
Subject: Re: Mount HostUnavailable
Message-ID: <1995Aug7.133718.142@satt>
From: irh@automation.alfalaval.se (Ingemar Hansson)
Date: Mon, 07 Aug 1995 11:37:07 GMT
References: <3vdtg2$1qp@austin.aus.sig.net>
Organization: Alfa Laval Automation AB
Nntp-Posting-Host: bmw
X-Newsreader: Forte Free Agent 1.0.82
Lines: 129

dkindler@comland.com (David Kindler) wrote:

>Hi,

>Does anyone know a way to reset a system WITHOUT having to reboot to
>get rid of Mount VerifyTimeout and Mount HostUnavailable conditions?

I'll forward a mail a picked up a couple of years ago. I've added a
command procedure which will automate the program function. As always, use
at your own risk. (I've done it without any problems so far :-)

--------------------------------------------------------
From:	CBS%UK.AC.ULCC.NCDLAB::GOV.ANL.CMT::OSUDAR 27-JUN-1992 23:15:56.96
To:	A.Harper
CC:	
Subj:	RE: MncVerifyTimeout status - any cure?

The program that's attached below has worked for me when I've had disks go
into
MntVerifyTimeout.  (We try to avoid having that situation, by setting the 
MVTIMEOUT parameter to its maximum of 64000 seconds -- but there have been
times when nobody's noticed that a disk has gone away for more than 17
hours!)
This program requires that you look up the disk's UCB address using
ANALYZE/SYSTEM -- mainly because I was too lazy to write the code required
to
track down the UCB given the device name.

As always, there are no guarantees that this will work correctly for you
-- use
at your own risk.  (Of course, at worst it will trigger that system reboot
you
were going to do anyway! :-)

All this does is (1) set the volume-valid bit in the UCB; and (2) set the
mount-verify bit in the VCB.  That seems to do the trick.

					John
-----------------------------------------

	.title		unmvt -- undo mount-verify timeout
	.library	/sys$share:lib.mlb/
	$ucbdef
	$vcbdef
;
ucbat:	.blkl		1
cmdlin:	.ascid		/????????/
cmdlen:	.blkw		1
prompt:	.ascid		/UCB address: /
done:	.ascid		/Done/
error:	.ascid		/Error/
;
	.entry	unmvt,0
	pushaw	cmdlen
	pushaq	prompt
	pushaq	cmdlin
	calls	#3,g^lib$get_foreign
	blbc	r0,8$
	cmpw	#8,cmdlen
	bneq	8$
	pushal	ucbat
	pushl	cmdlin+4
	movzwl	cmdlen,-(sp)
	calls	#3,g^lib$cvt_htb
	tstl	ucbat
	bgeq	8$
	clrl	-(sp)
	pushab	doit
	calls	#2,g^sys$cmkrnl
	pushaq	done
	blbs	r0,9$
	tstl	(sp)+
8$:	pushaq	error
9$:	calls	#1,g^lib$put_output
	movl	#1,r0
	ret
;
	.entry	doit,^m<r4,r5>
	movl	ucbat,r5
	bisl	#ucb$m_valid,ucb$l_sts(r5)
	movl	ucb$l_vcb(r5),r4
	bisb	#1@vcb$v_mountver,vcb$b_status2(r4)
	movl	#1,r0
	ret
	.end	unmvt

------------------------------------------------------------------------

$	on warning then goto E
$	on control_y then goto E
$	if f$mode() .eqs. "BATCH" then q=f$setprv( "all" )
$	SCR = f$trnlnm( "sys$scratch" )
$	TMP1 = "''SCR'D__" + f$getjpi( "", "pid" ) + ".TMP"
$	TMP2 = "''SCR'M__" + f$getjpi( "", "pid" ) + ".TMP"
$	show device/mounted/output='TMP1'
$	search 'TMP1' MntVerifyTimeout/output='TMP2'
$	open FI 'TMP2'
$ L:
$	read/end=E FI L
$	DEV = f$element( 0, " ", L )
$	open/wri FU 'TMP1'
$	WRI FU "$analyze/system"
$	WRI FU "show device ''dev'"
$	close FU
$	@'TMP1/output='TMP2'
$	search 'TMP2' UCB/output='TMP1'
$	open FI2 'TMP1'
$	read FI2 L
$	close FI2
$	L = f$edit( L, "trim, compress" )
$	UCB = f$element( 4, " ", L )
$	UNMVT = "$''f$parse( ".EXE;", f$environment( "procedure" ) )'"
$	write sys$output "Clearing device ''DEV'"
$	UNMVT 'UCB'
$	goto L
$ E:
$	set noon
$	close/nolog FI
$	close/nolog FI2
$	close/nolog FU
$	delete/nolog/noconfirm 'TMP1';*,'TMP2';*


+--------------------------------------------------------------------+
| Ingemar Hansson, Alfa Laval Automation AB, S-205 22  Malmo, SWEDEN |
| System and application manager             PHONE: +46 40 226251    |
| Internet: irh@automation.alfalaval.se      FAX:   +46 40 226893    |
+--------------------------------------------------------------------+



