Operating System - OpenVMS
1753500 Members
4104 Online
108794 Solutions
New Discussion юеВ

Re: INIT/SHADOW vs INIT off by one error?

 
SOLVED
Go to solution
Jon Pinkley
Honored Contributor

INIT/SHADOW vs INIT off by one error?

I am using Alpha VMS 7.3-2 with updates current as of May 6, 2007.

I was initializing two devices to be used as a HBVS shadowset, and used the following command:

$ init /shadow=($4$dkc207:,$1$dga3207:)/erase/system/header=1000/cluster=8/limit/index=begin/user=ils/own=[1,1] syslog_22

$4$dkc207: is an RZ29B (4.3 GB) on an HSZ40 controller pair, $1$DGA3207: is a 5 GB vdisk on an EVA6000.

I expected the logical volume size of the shadowset to be the size of the smaller device, in this case the RZ29B.

However, the logical volume size is 1 block smaller than the size of the RZ29B.

If I use init on the RZ29B without /shadow, then create a shadowset with the member, it is the full size.

Is this an off by one coding error in INIT/SHADOW (using the highest LBN instead of number of blocks) when setting the size of the device?

I am not worried about the loss of one block of disk space; in fact with a clustersize of 8 it makes no difference in number of available clusters, since 8378028 is not a multiple of 8.
However, it seems odd to me that the logical volume size is different based on whether /shadow is used.

And I tried the obvious solution:

Neither

$ set volume/size dsa3207:

nor

$ set volume/size=8378028 dsa3207:

changed the logical size from 8378027 to 8378028, even with dismounting/remounting.

So it looks to me like there are two inconsistencies, as the set volume meets all the requirements listed in the help for set volume/size. I noticed this earlier in another adventure with V7.3-2 BACKUP (id "AXP72R001") not preserving /limit or /size, when using backup/image/noinit.

I am attaching log file demonstrating my findings.
it depends
18 REPLIES 18
Jan van den Ende
Honored Contributor

Re: INIT/SHADOW vs INIT off by one error?

Jon,

it looks odd, but I can well live with it, except
>>>
I noticed this earlier in another adventure with V7.3-2 BACKUP (id "AXP72R001") not preserving /limit or /size, when using backup/image/noinit.
<<<
Do you mean, you INITed the volume /LIMIT=..
and then BACKUP/NOINIT does _NOT_ leave your /LIMIT in the target;
or do you mean
you have a BACKUP/INIT of a volume with /LIMIT, and upon restore /NOINIT that value gets lost?
I have not yet been in a position to do either, but if it is confirmed, that would be a nasty, and potentially troublesome bug indeed!!

Please clarify.

Proost.

Have one on me.

jpe

Don't rust yours pelled jacker to fine doll missed aches.
Volker Halle
Honored Contributor
Solution

Re: INIT/SHADOW vs INIT off by one error?

Jon,

I've tried this on a simple LD device with OpenVMS Alpha V8.2 and I don't see this behaviour:

$ LD CONN file LDA1:
$ INIT LDA1: TEST/LIMIT
$ MOUNT/OVER=ID LDA1:
$ SHOW DEV/FULL LDA1:

and same sequence with

$ INIT TEST/SHAD=(LDA1:)/LIMIT

In both cases, the Total Blocks and Logical Volume Size exactly match the size of the LD container file.

Volker.
Wim Van den Wyngaert
Honored Contributor

Re: INIT/SHADOW vs INIT off by one error?

Could it have siomething to do with the /erase ? You didn't use /erase on the single disk init. And there is an error on the disk. Could it be a bad block that is subtracted from the size while erasing ?

Wim (without anything higher than 7.3, so no test env)
Wim
Jon Pinkley
Honored Contributor

Re: INIT/SHADOW vs INIT off by one error?

Volker,

If it works in 8.2 then it must have been fixed.

Here's a small reproducer with LD v9 on 7.3-2

$ ld create disk$archive:[000000]disk1.dsk/size=10000/contig/nobackup
$ ld create disk$archive:[000000]disk2.dsk/size=11000/contig/nobackup
$ ld conn disk$archive:[000000]disk1.dsk lda1/share
$ ld conn disk$archive:[000000]disk2.dsk lda2/share
$ sho dev ld

Device Device Error Volume Free Trans Mnt
Name Status Count Label Blocks Count Cnt
$4$LDA0: (SIGMA) Online 0
$4$LDA1: (SIGMA) Online 0
$4$LDA2: (SIGMA) Online 0
$ init/shad=($4$lda1:,$4$lda2:)/erase itrc/cluster=1/system/index=begin/own=[1,1]/user=itrc
$ mou/sys/noassist dsa999: /shadow=($4$lda1:,$4$lda2:) itrc
%MOUNT-I-MOUNTED, ITRC mounted on _DSA999:
%MOUNT-I-SHDWMEMSUCC, _$4$LDA1: (SIGMA) is now a valid member of the shadow set
%MOUNT-I-SHDWMEMSUCC, _$4$LDA2: (SIGMA) is now a valid member of the shadow set
$ sho dev/ful dsa999

Disk DSA999:, device type Generic SCSI disk, is online, mounted, file-oriented
device, shareable, available to cluster, error logging is enabled, device
supports bitmaps (no bitmaps active).

Error count 0 Operations completed 25
Owner process "" Owner UIC [SYSTEM]
Owner process ID 00000000 Dev Prot S:RWPL,O:RWPL,G:R,W
Reference count 1 Default buffer size 512
Total blocks 10000 Sectors per track 10
Total cylinders 100 Tracks per cylinder 10
Logical Volume Size 9999 Expansion Size Limit 12288

Volume label "ITRC" Relative volume number 0
Cluster size 1 Transaction count 1
Free blocks 9966 Maximum files allowed 2750
Extend quantity 5 Mount count 1
Mount status System Cache name "_$4$DKA407:XQPCACHE"
Extent cache size 64 Maximum blocks in extent cache 996
File ID cache size 64 Blocks in extent cache 0
Quota cache size 0 Maximum buffers in FCP cache 4475
Volume owner UIC [FILSYS] Vol Prot S:RWCD,O:RWCD,G:RWCD,W:RWCD

Volume Status: ODS-2, subject to mount verification, erase on delete, file
high-water marking, write-back caching enabled.

Disk $4$LDA1:, device type Generic SCSI disk, is online, member of shadow set
DSA999:, shadow set virtual unit.

Error count 0 Shadow member operation count 141
Allocation class 4

Disk $4$LDA2:, device type Generic SCSI disk, is online, member of shadow set
DSA999:, shadow set virtual unit.

Error count 0 Shadow member operation count 145
Allocation class 4

$
it depends
Jon Pinkley
Honored Contributor

Re: INIT/SHADOW vs INIT off by one error?

Jan,

In VMS 7.3-2 you can initialize a volume with a /SIZE less than the physical size of the device. You would normally do this so you could shadow with a smaller device. In my case, I wanted to shadow an EVA vdisk that has 1GB size granularity with an RZ29B, so I initialized the vdisk with /SIZE=8378028 and /LIMIT. I then did a backup/image/noinit from the RZ29 to the vdisk, planning to convert the vdisk into a shadowset, and then add the RZ29 back into the shadowset with copy.

However, that backup (with VMS 7.3-2) results in the warning
%BACKUP-I-LOGNOTPRES, logical volume size of volume $1$DGA3205: not preserved
%BACKUP-I-LIMITNOTPRES, expansion size limit of volume $1$DGA3205: not preserved

I came up with a work around, thanks to Jur's LDDRIVER

$ ld connect $1$DGA3205 /LBN=(start:0,size:8378028) LDA3205:

Followed by init of LDA3205 with clustersize, etc. followed by backup/image/noinit to LD3205: (still doesn't preserve SIZE, but now SIZE is preserved by LDDRIVER). After backup is complete, dismount LDA3205, mount LDA3205 private, set volume/limit lda3205, dismount LDA3205:; disconnect LDA3205: Mount DGA3205 and it is nearly how you would like it. You are still limited in how large a value MAX_FILES can be set to.

The best solution is to upgrade to 8.3, where BACKUP has been taught about dynamic volume expansion. However, we still have some products that aren't ready for 8.3.

I am attaching a log file showing a reproducer using the LDA1 and LDA2 from my response to Volker.
it depends
Jon Pinkley
Honored Contributor

Re: INIT/SHADOW vs INIT off by one error?

Wim,

I don't believe is has anything to do with errors on the SCSI devices. Same thing happens on an LD device, see my response to Volker.

The errors on the SCSI devices have to do with shared SCSI and the HSZ contollers, they are "normal" for us especially when we shutdown/reboot a node on the shared SCSI bus.

BTW, I just inited the device without /shadow and then added in the other device and let the shadowing synchronize. These were "small" 4.3 GB devices, so it doesn't take two days.
it depends
Volker Halle
Honored Contributor

Re: INIT/SHADOW vs INIT off by one error?

Jon,

I've now repeated your test on V8.2 and ... the error is still there !

$ ld create disk1.dsk/size=10000/contig/nobackup
$ ld create disk2.dsk/size=11000/contig/nobackup
$ ld conn disk1.dsk lda1/share
$ ld conn disk2.dsk lda2/share
$ init/shad=(lda1:,lda2:)/erase itrc/cluster=1/system/index=begin
%INIT-I-LIMITCHANGED, value for /LIMIT increased to 1048576
%INIT-I-LIMITCHANGED, value for /LIMIT increased to 1048576
$ mou/sys/noassist dsa999: /shadow=($1$lda1:,$1$lda2:) itrc
%MOUNT-I-MOUNTED, ITRC mounted on _DSA999:
%MOUNT-I-SHDWMEMSUCC, _$1$LDA1: (AXPVMS) is now a valid member of the shadow set
%MOUNT-I-SHDWMEMSUCC, _$1$LDA2: (AXPVMS) is now a valid member of the shadow set
$ sho dev/full dsa999

Disk DSA999:, device type Foreign disk type 1, is online, mounted, file-oriented
device, shareable, available to cluster, error logging is enabled, device
supports bitmaps (no bitmaps active).

Error count 0 Operations completed 25
Owner process "" Owner UIC [SYSTEM]
Owner process ID 00000000 Dev Prot S:RWPL,O:RWPL,G:R,W
Reference count 1 Default buffer size 512
Total blocks 10000 Sectors per track 10
Total cylinders 100 Tracks per cylinder 10
Logical Volume Size 9999 Expansion Size Limit 1048576

So this problem is introduced by some combination and values of qualifiers:

If I just do an INIT/SHADOW=(LDA1:), then I get the correct Logical Volume Size !

Volker.
Volker Halle
Honored Contributor

Re: INIT/SHADOW vs INIT off by one error?

Jon,

same problem on OpenVMS Alpha V8.3 with ALL current patches installed.

So it seems to be some bug in the INIT/SHADOW code. Worth a low-priority call to HP...

Volker.
Jan van den Ende
Honored Contributor

Re: INIT/SHADOW vs INIT off by one error?

Jon,

thanks for finding this out!

Now that I know about it, we can deal around it if neede, but I REALLY would hate to have to find out in a real recovery situation!
For the foreseeable future we are stuck on 7.3-2, so will have to keep this int the back of our heads.

Proost.

Have one on me.

jpe
Don't rust yours pelled jacker to fine doll missed aches.