[Info-vax] Difficulty mounting new disk

Robert A. Brooks FIRST.LAST at vmssoftware.com
Thu Jun 6 16:39:19 EDT 2019


On 6/6/2019 4:23 PM, gwilliams at cfa.harvard.edu wrote:
> I've not experienced this problem before.  A newly-installed disk in
> an external disk box attached to a XP1000 workstation running V8.3 in
> a small cluster was initialized with no errors.
> 
> INIT/
> 
> But when I try to mount it clusterwide, I get:
> 
> $ mount/sys/cluster/noassist $223$DKB100: RECOVERY
> %MOUNT-F-DEVBUSYVOL, mount or dismount in progress on device, VOL$ lock failure
 
It's a failure to get a lock on the resource named VOL$RECOVERY

>From [MOUNT96]GETDEV.B32

!
! Build the resource name and acquire the lock. Note that for
! historical reasons the label lock is an exec mode lock.
!
RES_NAME<0, 32> = 'VOL$';
CH$MOVE (.VOLUME_LABEL [.J, DSC$W_LENGTH],
         .VOLUME_LABEL [.J, DSC$A_POINTER],
         RES_NAME [4]);
RES_DESC [DSC$W_LENGTH] = .VOLUME_LABEL [.J, DSC$W_LENGTH] + 4;
RES_DESC [DSC$A_POINTER] = RES_NAME;

!
! If this lock name is greater than 31 charaters, truncate it and set up to
! take out the secondary VOL$2ND lock with the remainder of the label.
!
RES_DESC_2ND [DSC$W_LENGTH] = 0;
IF (.RES_DESC [DSC$W_LENGTH] GTRU 31)
THEN
  BEGIN
    RES_DESC [DSC$W_LENGTH] = 31;
    CH$MOVE(7, UPLIT BYTE ('VOL$2ND'), RES_NAME_2ND);
    CH$MOVE(.VOLUME_LABEL [.J, DSC$W_LENGTH] - 27,
            .VOLUME_LABEL [.J, DSC$A_POINTER] + 27,
            RES_NAME_2ND [7]);
    RES_DESC_2ND [DSC$W_LENGTH] = .VOLUME_LABEL [.J, DSC$W_LENGTH] - 27 + 7;
    RES_DESC_2ND [DSC$A_POINTER] = RES_NAME_2ND;
  END;

STATUS = $ENQW (LKMODE = LCK$K_EXMODE,
                LKSB   = LOCK_STATUS,
                FLAGS  = LCK$M_SYSTEM OR LCK$M_NOQUEUE OR LCK$M_SYNCSTS,
                ACMODE = PSL$C_EXEC,
                RESNAM = RES_DESC,
                EFN    = MOUNT_EFN);
!
! Save the lock ID if we got it. Return device busy status if we failed
! to get the lock; bounce back other unexpected errors.
!
IF .STATUS
THEN
    BEGIN
%IF %VARIANT EQL 1
%THEN
KERNEL_CALL (TRACE_IT, 3, .LOCK_STATUS[1]);
%FI
    LAB_LOCK_ID [.J] = .LOCK_STATUS [1];
    STATUS = SS$_NORMAL;
    END
ELSE
    BEGIN
    IF .STATUS EQL SS$_NOTQUEUED
%IF %DECLARED (MOUN$_DEVBUSYVOL)
%THEN
    THEN STATUS = MOUN$_DEVBUSYVOL;
%ELSE
    THEN STATUS = MOUN$_DEVBUSY;
%FI
    END;

-- 

                      -- Rob



More information about the Info-vax mailing list