Operating System - OpenVMS
1752567 Members
5161 Online
108788 Solutions
New Discussion юеВ

Re: Device already allocated

 
SOLVED
Go to solution
Oleg Mikhailov
Advisor

Device already allocated

In systartup_vms.com I call my procedure @MGR$COMMON:[DISK]MOUNT_SHARED_SHDWS.COM

In this procedure I read list of all shadow sets from text file, that contains shadow sets descriptions:
(DSA_NUMER=(DEVICE_NAME1,DEVICE_NAME2,DEVICE_NAME3)=LABEL)

Further I call another procedure for mounting an individual shadow set:
$ SPAWN/NOWAIT @MGR$COMMON:[DISK]CLU_MOUNT_SHDW 'SHDW_NUMBER' 'DEVICE_NAME1' 'DEVICE_NAME2' 'DEVICE_NAME3' 'VOL_LABEL'

After startup complete almost all shadow sets are mounted.
But always remains not mounted one shadow set (usually from beginning of the list, total number of shadow sets is 88)

In console output I see the message:
07/11/22_06:45:17 %MOUNT-I-ISAMBR, _$1$DGA352: (VYATKA) is a member of the shadow set
07/11/22_06:45:17 %MOUNT-I-ISAMBR, _$1$DGA1376: (VYATKA) is a member of the shadow set
07/11/22_06:45:17 %MOUNT-F-DEVALLOC, device already allocated to another user
07/11/22_06:45:18 %DCL-I-SUPERSEDE, previous value of WB$ALL_DISKS_MOUNTED has been superseded
07/11/22_06:45:18 %MOUNT-I-MOUNTED, D8611_DB21 mounted on _DSA34:

It probably concerns to that shadow set which was not mounted.

Little bit more in detail about MGR$COMMON:[DISK]CLU_MOUNT_SHDW.COM:

Before mounting I check:

$ SHADOW_SET_NAME = "DSA" + SHDW_NUMBER + ":"
$ IF F$GETDVI("''SHADOW_SET_NAME'", "EXISTS")
$ THEN
$ IF F$GETDVI("''SHADOW_SET_NAME'", "MNT") THEN GOTO MOUNTED
$ ELSE
$ GOTO PREPARE_CMD_STRING
$ ENDIF
$!
$PREPARE_CMD_STRING:
$ MOUNT_CMD_STRING = "MOUNT/SYSTEM/NOASS/NOCOPY/NOREBUILD " + SHADOW_SET_NAME + " /SHADOW=("
$!
$CHECK_FOR_DEVICE_1:
$ SET NOON
$ WAIT_FOR_DEVICE_COUNT = 0
$WAIT_FOR_DEVICE_1:
$ WAIT_FOR_DEVICE_COUNT = WAIT_FOR_DEVICE_COUNT + 1
$ IF F$GETDVI("''DEVICE_NAME1'", "EXISTS")
$ THEN
$ IF F$GETDVI("''DEVICE_NAME1'", "MNT")
$ THEN
$ SHADOW_SET_MEMBER = DEVICE_NAME1
$ GOTO MEMBER_MOUNTED
$ ENDIF
$ MOUNT_CMD_STRING = MOUNT_CMD_STRING + DEVICE_NAME1
$ GOTO CHECK_FOR_DEVICE_2
$ ELSE
$ WRITE SYS$OUTPUT "****************************************************"
$ WRITE SYS$OUTPUT "***** WAITING FOR SHADOW SET MEMBER: ''DEVICE_NAME1' *****"
$ WRITE SYS$OUTPUT "****************************************************"
$ WAIT ::5
$ IF (WAIT_FOR_DEVICE_COUNT .LE. 4) THEN GOTO WAIT_FOR_DEVICE_1
$ WRITE SYS$OUTPUT "*****************************************************************************"
$ WRITE SYS$OUTPUT "**** SHADOW SET MEMBER: ''DEVICE_NAME1' IS NOT AVAILABLE - MOUNT FAILED!!! ****"
$ WRITE SYS$OUTPUT "*****************************************************************************"
$ GOTO DONE
$ ENDIF
$!
$CHECK_FOR_DEVICE_2:
...

Such checks I do for each shadow set member.

...
$TRY_TO_MOUNT_SHADOW:
$ MOUNT_CMD_STRING = MOUNT_CMD_STRING + ") " + VOL_LABEL
$ MOUNT_CMD_STRING
$!
$ error_code = $status
$ IF error_code .and. %X00000001
$ THEN
$ GOTO SET_SHDW_CHAR
$ ELSE
$ DEFINE/SYSTEM/EXECUTIVE "WB$ALL_DISKS_MOUNTED" "NO"
$ GOTO DONE
$ ENDIF
$!
$DONE:
$! VERIFY = 'F$VERIFY(VERIFY)'
$ EXIT


I tried before mounting to check for all devices:
IF F$GETDVI(DEVICE_NAME1,"ALL") THEN sho proc/id='F$GETDVI(DEVICE_NAME1,"PID")
With no results...

Are there any ideas how to find out who allocate and which device allocated?

P.S. All works fine from interactive session.
5 REPLIES 5
Oleg Mikhailov
Advisor

Re: Device already allocated

Oops...

------------------------------------ ----------- ----------- --- -----------
PRODUCT KIT TYPE OPERATION VAL DATE
------------------------------------ ----------- ----------- --- -----------
HP AXPVMS DP A6.0-333 Full LP Install (U) 04-NOV-2007
HP AXPVMS DP A5.10-12 Full LP Remove - 04-NOV-2007
CPQ AXPVMS ADVANCEDSERVER V7.3-B Full LP Install Val 02-SEP-2007
CPQ AXPVMS ADVANCEDSERVER V7.3-A4 Full LP Remove - 02-SEP-2007
HP VMS AVAIL_MAN_COL V2.6-AV Full LP Install Val 21-AUG-2007
DEC AXPVMS TCPIP V5.6-9ECO1 Full LP Install Val 21-AUG-2007
DEC AXPVMS TCPIP V5.6-9 Full LP Remove - 21-AUG-2007
DEC AXPVMS DWMOTIF_ECO02 V1.6 Patch Install Val 21-AUG-2007
DEC AXPVMS VMS83A_RMS V3.0 Patch Install Val 21-AUG-2007
DEC AXPVMS VMS83A_FIBRE_SCSI V2.0 Patch Install Val 21-AUG-2007
DEC AXPVMS VMS83A_BACKUP V3.0 Patch Install Val 21-AUG-2007
DEC AXPVMS VMS83A_MOUNT96 V3.0 Patch Install Val 21-AUG-2007
DEC AXPVMS VMS83A_ACRTL V3.0 Patch Install Val 21-AUG-2007
DEC AXPVMS VMS83A_FORRTL V1.0 Patch Install Val 21-AUG-2007
DEC AXPVMS VMS83A_DRIVER V1.0 Patch Install Val 21-AUG-2007
DEC AXPVMS VMS83A_PASRTL V1.0 Patch Install Val 21-AUG-2007
DEC AXPVMS VMS83A_SYS V1.0 Patch Install Val 21-AUG-2007
DEC AXPVMS VMS83A_UPDATE V3.0 Patch Install Val 21-AUG-2007
CPQ AXPVMS CDSA V2.2-271 Full LP Install (C) 21-AUG-2007
DEC AXPVMS DWMOTIF V1.6 Full LP Install (C) 21-AUG-2007
DEC AXPVMS DWMOTIF_SUPPORT V8.3 Full LP Install (U) 21-AUG-2007
DEC AXPVMS OPENVMS V8.3 Platform Install (U) 21-AUG-2007
DEC AXPVMS TCPIP V5.6-9 Full LP Install (C) 21-AUG-2007
DEC AXPVMS VMS V8.3 Oper System Install (U) 21-AUG-2007

...
Volker Halle
Honored Contributor
Solution

Re: Device already allocated

Oleg,

you didn't tell us your OpenVMS architecture and version.

You may want to have a look at the problem description for VMS83I_SHADOWING-V0100:

5.2.2 SS$_DEVALLOC and MOU$_DEVALLOC Failures Mounting Shadow Sets

Occasional DEVALLOC errors are returned when attempting to MOUNT shadow sets. The error appears to be transient, and a retry of the MOUNT command always succeeds.

This problem occurs more frequently on MSA1000 hardware when command procedures attempt to mount many shadowsets in quick succession.


Does this problem description seem to apply to your problem ? I would think so, even if you're not mounting MSA1000 disks.

This problem is also solved in VMS82A_SHADOWING-V0200 and even VMS732_SHADOWING-V0600

Volker.
Volker Halle
Honored Contributor

Re: Device already allocated

Oleg,

> you didn't tell us your OpenVMS architecture and version

Sorry, you did provide the PROD SHOW HIST output. But the VMS83A_SHADOWING-V0100 patch is not installed, so you might want to install that patch as well.

Volker.
Oleg Mikhailov
Advisor

Re: Device already allocated

Hi all!

Installing the patch is planned.
Until temporary solution ...


$ MOUNT_CMD_STRING
$!
$ error_code = $status
$ IF error_code .and. %X00000001
$ THEN
$ GOTO SET_SHDW_CHAR
$ ELSE
$ IF error_code .EQ. %X00000840 .OR. error_code .EQ. %X10720844
$ THEN
$ WAIT 00:00:10
$ MOUNT_CMD_STRING
$ error_code = $status
$ IF error_code .and. %X00000001
$ THEN
$ GOTO SET_SHDW_CHAR
$ ELSE
$ DEFINE/SYSTEM/EXECUTIVE "WB$ALL_DISKS_MOUNTED" "NO"
$ GOTO DONE
$ ENDIF
$ ELSE
$ DEFINE/SYSTEM/EXECUTIVE "WB$ALL_DISKS_MOUNTED" "NO"
$ GOTO DONE
$ ENDIF
$ ENDIF
$!

wbr Oleg M.
Oleg Mikhailov
Advisor

Re: Device already allocated

closed...