MULTICS TECHNICAL BULLETIN MTB-731-01
To: MTB Distribution
From: Rich Fawcett
Date: 03/26/86
Subject: FIPS Disk Support
This MTB describes the plans for supporting the FIPS disk drives
on the Multics File System. The FIPS disk are MSU3380 and
MSU3390, these are IBM devices 3380D and 3380E respectively.
This plan will allow support of any large disk with the correct
format and PSIA hardware interface. The two problems addressed
are: disk size too large for volume map, and the performance of
the hardware read-alter-rewrite (RAR). These problems are solved
by dividing the large disk into "subvolumes" and eliminating 64
word IO to these drives.
This is the first revision, and reflects the results of the |
proto-type code testing. Also minor problems were found and |
corrected. This revision has change bars to indicate the changes |
from the original MTB. |
Comments on this MTB should be placed in the Disk_Support forum
on System M:
>udd>m>mtgs>Disk_Support (disks) or directed by Multics mail
to:
System M: Fawcett.Multics
or by phone to:
Rich Fawcett
HVN: 249-6777
DDD: 602-249-6777
_________________________________________________________________
Multics Project internal working documentation. Not to be
reproduced or distributed outside the Multics Project.
MTB-731-01 FIPS Disk Support
CONTENTS
Page
Introduction . . . . . . . . . . . . . . . . . . . 1
Problems . . . . . . . . . . . . . . . . . . . . 1
Solutions . . . . . . . . . . . . . . . . . . . 2
Seek_512 Implementation . . . . . . . . . . . . . . 3
| Subvolume Implementation . . . . . . . . . . . . . 4
| Naming convention . . . . . . . . . . . . . . . 5
Configuration cards and device types . . . . . . 6
IOI and RCP . . . . . . . . . . . . . . . . . . . . 7
Volume Reloader and Rdisk_ . . . . . . . . . . . . 7
Prototype software results . . . . . . . . . . . . 9
Detail software changes . . . . . . . . . . . . . . 10
New include file . . . . . . . . . . . . . . . . 10
| Include file changes . . . . . . . . . . . . . . 10
| Hardcore code changes . . . . . . . . . . . . . 12
| bound_bce_dump_ . . . . . . . . . . . . . . . 12
| bound_bce_paged . . . . . . . . . . . . . . . 12
bound_bce_wired . . . . . . . . . . . . . . . 12
bound_bootload_0 . . . . . . . . . . . . . . 13
| bound_bce_probe_ . . . . . . . . . . . . . . 13
| bound_disk_util_1 . . . . . . . . . . . . . . 13
| bound_disk_util_2 . . . . . . . . . . . . . . 13
| bound_hc_backup . . . . . . . . . . . . . . . 14
bound_library_1_ . . . . . . . . . . . . . . 14
bound_mdxhdx_ . . . . . . . . . . . . . . . . 14
bound_multics_bce_ . . . . . . . . . . . . . 14
bound_page_control . . . . . . . . . . . . . 15
bound_rcp_ . . . . . . . . . . . . . . . . . 15
bound_salvager . . . . . . . . . . . . . . . 15
bound_scavenger . . . . . . . . . . . . . . . 15
bound_segment_control . . . . . . . . . . . . 16
bound_temp_1 . . . . . . . . . . . . . . . . 16
bound_temp_2 . . . . . . . . . . . . . . . . 17
bound_volume_rldr_ut_ . . . . . . . . . . . . 17
bound_volume_reloader_ . . . . . . . . . . . 17
bound_vtoc_man . . . . . . . . . . . . . . . 18
| Tools code changes . . . . . . . . . . . . . . . 18
bound_admin_rtnes_ . . . . . . . . . . . . . 18
bound_hc_display_ . . . . . . . . . . . . . . 18
bound_io_tools_ . . . . . . . . . . . . . . . 18
| bound_meter_util_ . . . . . . . . . . . . . . 18
FIPS Disk Support MTB-731-01
CONTENTS (cont)
Page
bound_metering_cmds_ . . . . . . . . . . . . 19 |
bound_priv_ss_ . . . . . . . . . . . . . . . 19
FIPS Disk Support MTB-731-01
INTRODUCTION
When the dipper (IMU) support effort started it was assumed that
it would be a simple task to use a device number 0 for the FIPS
devices. This turned out to be true. It was also assumed that
the 3380A model drive would be the device to support and some
time in the distant future a 3390 model would be announced. It
was assumed that the size of the 3380A would not be a big problem
and it would be some time before the 3390 was announced. These
last two assumptions turned out to be false. IBM has announced
3380D and 3380E models. The size problem is larger than first
considered. Also, a performance problem was discovered.
First a view of the new disks. One IBM 3380D cabinet is made up
of two physical rotating spindles, each spindle has two
independent actuator arms. Each arm has its own device number
and surface area. The surface area for recording is not shared.
For the rest of this MTB a device will be referred to as one of
the independent arms. Each cylinder has 15 recording heads or
tracks. The device can appear to the software to be formatted
with 64 word sectors or 512 word sectors. Due to the required
size of sector gaps the 64 word format has 50% less capacity than
the 512 word format, therefore the 64 word format is not being
considered for Multics. With the 512 word format there are 255
sectors per cylinder (127 usable records). Each device (arm) of
a 3380 accesses 885 cylinders (112395 usable records), Each
device (arm) of a 3390 accesses 1770 cylinders (224790 usable
records).
Problems
The current implementation of the Multics disk modules treat all
devices as having a 64 word format. As is the case with the
MSU501 drive, the hardware will perform a read-alter-rewrite
(RAR) cycle to insert 64 or 192 words of a VTOC into the 512 word
sector. The FIPS channel performs the RAR for IBM devices, for
MSU501s this is done by the controller. The hardware will accept
two types of seek commands, seek_64 and seek_512. If the device
is formatted with 512 word sectors and the seek command is
seek_64 the RAR function is done when needed (less than 512
words). This will be the case with every VTOC write. The RAR
cycle reads the 512 word sector into a buffer, inserts the new
data and rewrites the sector back to the disk. This of course
cannot be done on one revolution of the spindle, it will take at
least two. If the VTOC spans two sectors, as does the third VTOC
in a record, this must be done twice and could go over 4
revolutions. The RAR function is not needed for page writes.
The channel time measured by disk_meters for this cycle on the
IBM drives is much greater than for the MSU501 drives. The
longer channel time for read-alter-rewrites (RAR) of VTOCS alone
is not a major problem, however this has an undesirable effect on
MTB-731-01 FIPS Disk Support
the paging IO. While the channel is busy with the RAR all other
IO is held up, this increases the channel time for page reads,
and decreases total system performance.
The second problem is that the storage system defines the free
and used records of a disk volume by use of the volume map, one
bit per record. The volume map is 3 pages - 64 words in size,
only 32 bits of each word are used. Each bit defines a record as
being used or free, 96256 paging records can be defined. The
file map array elements that define the record numbers on the
disk volume for a segment are 18 bits in length, with the high
order bit indicating a null page address. These two entities are
too small to define a 3380E and the volume map will not define
the entire 3380D.
Solutions
The solution to the performance problem will be to replace the 64
word IO with 512 word IO, thus eliminating the need for the
hardware read-alter-rewrite. To implement the 512 word IO only
one 192 word VTOC will be stored per one 512 word sector. The
seek command for these devices is seek_512 and the DCW tally is
192. This requires making the disk dim and vtoc manager more
device dependent. It also requires software read-alter-rewrites
when less than all of the VTOC is to be written.
The volume map and file map size problem can be resolved by
increasing the size of the data bases used. That is, by
rewriting the entire file system to understand these larger
sizes. It then is a matter of converting labels on 451s, 500s,
and 501s at each site and reloading the data. If a larger disk
needs to be supported, we can do it all again. This is not a
small task, and would take many man years to implement.
This same problem could be solved by using the hardware function
that divides the 3380D arm into two devices. The device is
divided such that the first half of the cylinders are for device
0 and the next half is for device 32. If the seek is issued to
device 32 the channel adds to the seek address. However there is
no upper bound protection for seeks to device 0. There would be
no hope for seek optimization or user security. The 3380E may be
divided into four devices but as yet this support has not been
defined.
The most reasonable solution is to have the Multics software
divide this large disk into subvolumes. The disk will be
subdivided into smaller parts called physical subvolumes, each
subvolume would have a label and VTOC area and logically look
much like the physical volume. In the past a physical volume has
defined an entire physical device. With this implementation the
old definition is device dependent. If the device is a 451 then
FIPS Disk Support MTB-731-01
the physical volume defines the entire physical device. If the
device is subdivided then a physical volume defines a subvolume
of the physical device. The subvolumes would be interleaved by
cylinder. The subvolume logical addresses are converted to the
real device addresses and placed in the queue per device. The
seek optimization for a device would work the same as for the 451
drives with no need to keep track of a "buddy" device as with the
501 drives.
This implementation will not take many man years. It should be
viewed as a better choice than changing the world, and may be
expanded in the future. Prototype software that includes the
seek_512 and subvolumes has been tested.
SEEK_512 IMPLEMENTATION
There are two basic considerations to use 512 word IO for the
3380 drives. The first is the seek command used by disk_control,
dctl and rdisk_. The second is the conversions of record and
sector offset to a real device seek address, and the calculations
of VTOC and page record numbers. The disk_dim uses a hardcoded
16 (sixteen sectors per record) to convert devadd to sector
number. This changes to look at the device type, and use 16 or
2.
The programs that calculate VTOC IO record and sector numbers
will change. The 512 word IO will not do hardware
read-alter-rewrites. Therefore on this type of device a sector
will contain only one VTOCE, starting at the beginning of the
sector for 192 valid words. The DCW tally of 192 will take care
of the extra words, both reading and writing. These calculations
are currently made by referencing two constants in the disk_pack
include file, SECTORS_PER_VTOCE and VTOCES_PER_RECORD. These two
constants change to array constants indexed by device type. The
elements of these arrays contain the correct value for that
device. There are a few programs that use hardcoded numbers.
For these programs a new include file
fs_dev_types_sector.incl.pl1 has been created. There are other
programs that use hardcoded numbers and also uses fs_dev_types,
therefore the new include file is included in fs_dev_types as an
include statement.
There are times when the Multics storage system writes less than
all three parts of a VTOCE. This will cause a software RAR
controlled by vtoc_man. This involves a small change in
philosophy as well as the calculation of the correct record
number and sector offset. Vtoc_man must look for a write of less
than a complete VTOCE to a FIPS device. When this condition is
true a check is made to see if the VTOCE is in the vtoc buffer,
if not it is read. The parts to be written are copied to the
VTOCE in the buffer and then the VTOC is written. This RAR is
MTB-731-01 FIPS Disk Support
| metered by vtoc_buffer_meters.
| SUBVOLUME IMPLEMENTATION
The disk is logically subdivided into smaller parts or
subvolumes. Each subvolume has a label and VTOC area and
logically look much like a physical volume. The physical
subdivision of the device will a fixed number of interleaved
cylinders, as opposed to dividing the device into groups of
contiguous cylinders. The term interleaved cylinders implies:
o 3380D will be divided into two subvolumes, A and B.
The A subvolume will use cylinders 0, 2, 4, 6, and so
on. While the B subvolume will use cylinders 1, 3, 5,
7, and so on.
o 3380E will be divided into three subvolumes, A, B, and
C. The A subvolume will use cylinders 0, 3, 6, 9, and
so on. B will be 1, 4, 7,... and C will be 2, 5,
8,...
The number of cylinders per subvolume will be determined by the
device type.
This will cause the seek distance of a non-full drive to be less
than they would be for the contiguous cylinder concept. On the
3380D the last cylinder will not be usable, wasting 127 records
or .11% of the total. The entire 3380E will be usable. If the
3380D was divided into thirds it would all be usable, but each
subvolume would be smaller that a 451. Such small subvolumes
would not be large enough for use as an RPV drive and are
therefore not considered.
The system treats these subvolumes in much the same way as it
treats a physical volume. A subvolume is a physical volume that
resides on a device that has been subdivided. The primary change
is to the PVTE. When the PVTE is built by init_pvt for these
subdivided devices, there will be a PVTE made for each subvolume.
The PVTE will contain the primary device index (pdi), a flag
indicating that this defines a device divided into subvolumes,
this subvolume's number, the number of subvolumes for this
device, and a record_factor to be used in the conversion from
logical seek address to real seek address. If the PVTE defines a
device that is not divided into subvolumes the subvolume flag is
reset, the number of subvolumes is zero and only one PVTE will be
generated.
At the point that disk_init gets invoked for this device, only
the PVTE for the first subvolume will be passed. This will be
the PVTX stored in disk_data. This allows other parts of the
system to convert a path name to a PVTX and a VTOCX. The
FIPS Disk Support MTB-731-01
difference is when the disk dim is called the PVTX will be for
the subvolume, and the device address is a relative address
rather than a real one. It is the job of dctl to convert this
relative device address to a real device sector address using the
data in the PVTE. The algorithm, stated in pl1 expressions, is:
record_offset = mod (devadd, pvte.records_per_cyl);
devadd = ((devadd - record_offset) * pvte.num_of_svs) +
pvte.record_factor + record_offset;
This is done with 7 alm instructions in dctl. With the real
devadd (record number), the real seek address is calculated as
before. Using the real device number and seek address the seek
optimization, device metering, and io-queuing are unchanged.
This will not degrade the system any more than if all the bit map
changes were made and the same amount of data were stored on one
very large physical device. |
The device is metered as one entity, however disk_meters displays |
the volume info for each of the physical volumes that are on the |
device. No meters are reported or kept on each subvolume's |
activity. |
Naming convention |
Until these changes, a physical volume could be related directly
to a physical device even though they are two different entities.
The subvolume implementation allows multiple physical volumes on
one physical device. There is no restriction that these physical
volumes be for the same logical volume, or related in any other
way. When physical disk space is assigned for a logical entity,
physical volumes or partitions, the correct subvolume of the disk
must be indicated. This is done by appending the subvolume name
to the disk drive name. For 3380D the valid subvolume names are:
a and b; for 3380Es they are: a, b and c.
subsys_name||_||device_number{subvol_name}
Examples:
The second subvolume of 3380D device number 3 in disk
subsystem a is dska_03b.
The third subvolume of 3380E device number 00 in disk
subsystem b is dskb_00c.
For devices supported before these changes, or future devices
that are not divided into subvolumes, the subvol_name must not be
given. Programs that parse the device number and subsystem also
check for the need of a subvolume name and the validity of that
name. Most of these programs are part of the volume management
MTB-731-01 FIPS Disk Support
subsystem. There are declarations in fs_dev_types.incl.pl1 that
define the number of subvolumes per device type (number_of_sv
array), and the valid names for subvolumes, (valid_sv_name array,
valid_sv_string). The device type can be found in the disk_table
(dte) or in physical_volume_table_entry (pvte), the full name can
be found in the dte.
The init_vol command looks like this
init_vol pub04 dska_03a
The add_volume command looks like this
add_volume pub04 dska_03a
Configuration cards and device types
The two IBM drive models are 3380D and 3380E. Before IBM
announced the 3380E it was rumored that the model would be called
a 3390. The model field on the disk peripheral card is a numeric
field as it is on the tape peripheral card. Many programs look
at these cards in the same way. The alpha character causes
problems, so the 3380D model number is 3380 and the 3380E is
3390. These match the Honeywell designation of MSU3380 and MSU
3390. Then it follows that device type names are d338 and d339.
These device types are compatible with d451 and d501.
The peripheral cards are:
prph dska a 20. 4 3380. 8.
prph dskb a 16. 4 3390. 8.
Now that some device numbers may have an alpha character in them
the definition of the drive number on the part and root cards has
changed from numeric to string. This has an impact on the config
deck and is an incompatible change.
Example:
part dump dskb 3c
part log dskc 1
root dska 0a dskb 3c dskc 1
In the above example disk subsystem "a" has 3380D drives,
subsystem "b" has 3380E drives and subsystem "c" has 451 drives.
This implementation of subvolumes also impacts BCE. The response
to find_rpv_substem_ at boot time is:
| [cold | rpv] a16 ipc [3380 | 3390] 0{a b c}
FIPS Disk Support MTB-731-01
A new module, disk_name_pvtx, can be used by hardcore modules to |
parse the disk_name and obtain the PVT index for this device |
name. |
IOI AND RCP
The user IO interface to these FIPS devices will be similar to
the MSU501 device, and will still have the similar problem that
is encountered with the MSU501. The problem on MSU501 is the
device that the user requests has a "buddy" device. This buddy
device usage must also be set for IO, if not the file system IO
will conflict with the user IO. With the IBM devices there is no
hardware protection of subvolumes boundaries. When a user
requests an IBM drive RCP will attach the entire device to the
user as is done with any other disk device. This requires there
be no mounted physical volumes on the requested device. RCP and
IOI data bases will only know about the device as a complete
entity.
The exception to this rule is device authentication. If the
device is divided into subvolumes it may contain up to three
physical volumes. There is no restriction that all the physical
volumes be part of the same logical volume. They may have never
been registered nor initialized by the init_vol command. The
authentication requirements of the subvolume labels on a device
may not be the same. The procedure rcp_disk_ must try to read
all the labels on the device. The number of labels can be found
by device type. The authentication of the device must be based
on what type of labels were found. That is, if any one of the
labels read indicated a system storage pack then "ss" would be
the required authentication code. There will be a priority to
the authentication, SS first, Unregistered next, then IO,
followed by Unreadable. This priority is enforced by the
procedure rcp_disk_.
Other alternatives were considered unacceptable. One is IOI
checking the users DCW list to verify that the addresses are
correct and then make the logical conversion. The difficulty
lies in chasing the transfer DCWS and in the user ability to
modify the list after the IO is started. This still would not
eliminate the conflict with the file system IO. Another method
would be to rewrite IOI to interface with the disk dims to do the
IO. This would be a major undertaking, increase the size of the
ring_0 code, and would place major restrictions on what the user
may do. The end result would be less than cost effective for the
amount of user IO done to disk.
MTB-731-01 FIPS Disk Support
VOLUME RELOADER AND RDISK_
Volume reloading is probably the largest use of "user IO" to
disk. The same types of IO are done as for the file system, page
and VTOC reads and writes. The volume reloader data bases are
related to physical volumes. The device interface module used is
rdisk_. The module rdisk_ attaches the entire device by calls to
RCP and issues IO through IOI. With the introduction of
subvolumes, a physical volume no longer defines an entire device,
but rather a portion of the device. This new relationship
between physical volumes and devices require address conversion
best performed by rdisk_. The change for the seek command will
also be placed in rdisk_.
The volume reloader uses the undocumented opening of
stream_input_output. Volume reloader calculates the sector
address and then converts to character position for the position
call, the volume reloader must know that the device to be
reloaded is an IBM device. The calculations must be made based
on the values defined by the include files fs_dev_types and
disk_pack. This will allow the 512 word seeks to work correctly.
With more devices having non-removable media, the desired device
must be assigned before the physical volume is reloaded. With
the addition of subvolumes, the correct portion of the assigned
device must be indicated. There is an undocumented option in
rdisk_ that allows the selection of a device. This is the
-device attachment argument, the format is: -device device_name.
The device_name may include the subvolume, which will trigger the
subvolume address conversion function within rdisk_. If the
subvolume name is not given then the entire device can be
accessed. In either case the entire device will be attached.
The -device attachment argument will be documented.
The volume reloader can reload more that one physical volume at a
time. In the case where two of the physical volumes are on the
same device, rdisk_ will keep track of the devices and subvolumes
attached. Rdisk_ will maintain a perprocess table of devices
attached. This table will contain the device name and IO control
block pointer for the attachment. Rdisk_ will attach the device
via RCP, if the device is not found in the table, and detach via
RCP when it is the only device found. This multiple attachment
will only be allowed for subvolumes. It will be considered an
error if the device is attached without a subvolume name and
another is requested with a subvolume name.
These changes make the volume reloader more device dependent than
it has previously been. This requires not only the "pvname" be
specified by the user but also the device name that is to be
reloaded. This will change the user interface to the volume
reloader. A new argument to volume reloader will be added. This
FIPS Disk Support MTB-731-01
will be -pvname_device (-pvdv) whose parameters will be a list
ordered pairs, first the pvname and then the device name.
Example:
-pvdv pub01 dska_17c pub02 dskb_00a
As with most other changes there is always another design that
may work. Because the Volume Reloader only issues file system
type IO, a ring_0 interface to the disk dim could be built. This
would require the expansion of ring_0, another wired space
manager, additional gates to verify, and more. This expansion of
ring_0 makes this alternative undesirable.
PROTOTYPE SOFTWARE RESULTS
The prototype software was written for the 512 word seek change
first. The base software was the dipper modified MR11 code using
the 3380s without subvolumes at 85% capacity. This software was
debugged and tested on system MD running an all root system.
Tests were run using a subset of MHAT to load the system and a
modified disk_meters to measure the impact of the change. These
tests showed a decrease in the average page read and write
channel time of about 15% from test runs using 64 word IO. It
was observed that the average channel time for the hardware VTOC
read-alter-rewrite was 5% longer than the sum of the average VTOC
write and VTOC read with the new software. However it does cost
in cpu time to do the one extra IO.
The second step was to change the 512 word IO system to use
subvolumes. Tests were run on an all root system. These tested
verified that the scavenger, sweep_pv and salvager all worked as
well as the MHAT subset.
The next step was to build a three logical volume system that
included 451 drives. The 3380s contained two logical volumes.
The root logical volume was placed on all the B subvolumes and
the A subvolumes made up the logical volume IBM1. The four 451
drives made up the DSU logical volume. Master directories were
created on each one of the logical volumes. These three
directories were at the project level, and were identical in
content (a subset of MHAT). The MHAT tests were run to show the
functionality of the subvolume concept.
Comprehensive tests were run to compare the performance of the |
"dipper software" to the subvolume software. The dipper software |
issues 64 word IO and does not divide the IBM devices into |
subvolumes. The standard measurement scripts were run on an all |
root MSU3380 system with and without subvolumes. These test were |
run on the same physical devices. While there was no difference |
in elapsed time the disk meters showed the difference in |
performance. |
MTB-731-01 FIPS Disk Support
| The average seek distance for the subvolume set was 30% greater
| than the non-subvolume set. However the channel time for the
| subvolume set was 4% less than the non-subvolume set. This set
| of scripts favored the non-subvolume set, due to a low percentage
| of vtoc writes, less that 3%.
| The functions of the salvager, scavenger, and sweep_pv where also
| tested and showed that they performed correctly. During this
| test it was noticed that init_scavenger data made calculations on
| the largest device size in fs_dev_types. This was changed to
| look at the pvt to find the largest configured device.
| The IOI and RCP functions were tested by using the volume dumper
| and volume reloader. This showed that rcp_disk_ was a better
| place to enforce the authentication of a device rather than
| rcp_authenticate_device_.
DETAIL SOFTWARE CHANGES
Multics Design Document changes and functional testing will be
planned in the future.
New include file
fs_dev_types_sector
Add the per device array constants for the new sector
related data. This will be used by programs that do not
use disk_pack.incl.pl1 and fs_dev_types.
| Include file changes
config_deck_cards
This changes the -drive field from OCTAL to STRING for the
root and part cards. This will allow the subvolume on the
end of the device name.
config_part_card
Changes the drive field to char (4) from fixed bin.
config_root_card
Changes the drive field to char (4) from fixed bin.
disk_pack
Change the constants SECTORS_PER_VTOCE and
VTOCES_PER_RECORD to device dependent array constants.
FIPS Disk Support MTB-731-01
disk_table
Add to the dte the same things as the pvte (See pvte below)
except for the record information. The drive_name will be
8 characters long for a drive that has subvolumes.
fs_dev_types
o Add the values for the 3380D (device_type 8) and the 3380E
(device_type 9) to the current arrays.
o Add new arrays rec_per_sv, number_of_sv, and
valid_sv_array.
o Include fs_dev_types_sector.
fs_vol_label
Add data to the label indicating that this volume is a
subvolume and which subvolume it is, as well as of the
number of subvolumes on this device. This information will
be used mainly for displaying the label.
get_vol_list |
Add the subvolume information for the physical volumes. |
This info is displayed by disk_meters. |
pvte
o Add is_sv, a bit to indicate that this pvte defines a
subvolume of a device.
o Add sv_num, indicating what subvolume this. The value may
be 0 or 1 for a 3380D, and 0 to 2 for a 3380E.
o Add number_of_sv, the number of subvolumes for the device.
If the device is a 3380D it will be 2 and for a 3380E it
will be 3.
o Add record_per_cyl, used in the conversion of logical to
real device addresses.
o Add record_factor, a factor used to convert the logical
record number for this subvolume to real device record
number and is calculated by rec_per_cyl * sv_num.
o Add sv_name, the alpha character for this subvolume
appended to the device name for use in error messages.
vtoc_buffer
MTB-731-01 FIPS Disk Support
| Add the meter for the read-alter-rewrite.
| Hardcore code changes
| error_table_
| Add :
| auth_incorrect "Incorrect authentication code."
| auth_unknown "Unknown authentication code."
| subvol_needed "Subvolume needed for this type device."
| subvol_invalid "Subvolume is invalid for this device."
| BOUND_BCE_DUMP_
| bce_create_sstnt
| Change to use the pvte device type for indexing into the
| VTOCES_PER_RECORD array for calculation of vtoc_record_num
| and vtoc_offset.
| bce_dump
| Changes to support the calling of
| find_partition$given_drive.
| BOUND_BCE_PAGED
bce_appending_simulation
Change to check the record number for subvolumes
| (rec_per_sv) instead of device (rec_per_dev).
| bce_display_disk_label
| Change to display the label correctly for drives with
| subvolumes. Also call disk_name_pvtx to find the pvtx from
| the disk name.
| bce_test_disk_.pl1
| Change to find the pvtx for the disk name by calling
| disk_name_pvtx
BOUND_BCE_WIRED
bootload_disk_io
Change to use the new include file fs_dev_types_sector and
the pvte device type to calculate the number of sectors.
FIPS Disk Support MTB-731-01
BOUND_BOOTLOAD_0
bootload_info (sys_boot_info)
Change to indicate that the RPV is on a subvolume and what
subvolume it is on. |
BOUND_BCE_PROBE_ |
bce_probe |
Change to find the pvtx for the disk name by calling |
disk_name_pvtx. |
BOUND_DISK_UTIL_1 |
bound_disk_util_.bind |
Add disk_name_pvtx |
disk_name_pvtx |
This is a new routine that will parse the disk name and |
return the pvtx index. It knows about subvolumes and will |
return the new error codes. |
find_partition
Change to uses the new part card. The entry point
given_drive changes the drive number from a fixed bin to a
char (4), allowing subvolume support. Also calls |
disk_name_pvtx to find the pvtx for the disk name. |
BOUND_DISK_UTIL_2 |
accept_fs_disk
Change to print the correct device name with subvolume in
messages. |
demount_pv |
Changed to display the subvolume name. |
MTB-731-01 FIPS Disk Support
| BOUND_HC_BACKUP
| hc_dmpr_primitives
| Change to read the correct number of vtocs per page,
| depending on the device type.
BOUND_LIBRARY_1_
cv_config_card_
Change to special case the conversion of the root and part
cards for the new format.
fill_vol_extents_
The calculations of the number of pages and vtoces will
change to use the per device values. A new argument must
be added to the entry fill_vol_extents_ for the device
type.
init_vol_header_
Change to add the device type argument used in vtoc_size
calculations.
BOUND_MDXHDX_
disk_table_
This program will need minor changes to handle the
subvolume entries correctly.
disk_rebuild_caller, init_disk_pack_
Change the calling of fill_vol_extents_ and
init_vol_header_ to include the device type obtained from
the disk_table or pvte. This program will correctly set up
the new label.
mdx
Change to fill in the new information into the dte from the
pvte.
BOUND_MULTICS_BCE_
display_disk_label_
Change to display the label correctly for drives with
subvolumes.
FIPS Disk Support MTB-731-01
BOUND_PAGE_CONTROL
dctl, disk_control
These programs use the record number and sector offset into
the record. The record number passed to them is considered
a subvolume record number or logical devadd. This is
converted to a real devadd or record number by the
algorithm. The sector address is calculated depending on
the seek type found in the channel table of disk_seg.
page_error
Change to print the subvolume name along with the device
number.
BOUND_RCP_
rcp_authenticate_device_
Changed to check that the correct authentication was given
for the disk device. If not the new error codes of
auth_incorrect or auth_unknown may be returned.
rcp_disk_
Change the seek command to be based on the device type. If
the device has subvolumes, all the labels must be read.
BOUND_SALVAGER
disk_rebuild
Change to use the pvte device type to index into the
VTOCES_PER_RECORD array to calculate n_vtoce.
salvage_pv
Change to display the subvolume name.
vm_vio
Change use the the device type from the pvte to index to to
the new arrays in fs_dev_types to calculate the correct
vtoc address.
BOUND_SCAVENGER
scavenger
Change to print the device name including the subvolume if
required.
MTB-731-01 FIPS Disk Support
BOUND_SEGMENT_CONTROL
activate, alm_syserr_caller
Changes in the module are to print the device name
including the subvolume if required.
BOUND_TEMP_1
create_rpv_partition
Change need to use the pvte to find the device type for the
calculations for VTOCES_PER_RECORD.
disk_init
Change to set chantab.scdcw.command in disk_seg to seek_64
or seek_512, depending on the device type the channel
supports. This is extracted from fs_dev_types seek_command
(device_type).
find_rpv_subsystem
Change to handle an RPV on a subvolume.
get_io_segs
Change to use the disk device type when setting up the
various hardcore data base segment sizes for subvolumes
support.
init_early_config
Change to support the new style root and part cards.
init_empty_root
Change the calling of fill_vol_extents_ and
init_vol_header_ to pass the the device type taken from the
pvte.
init_partitions
Change to use the new format of the part card for the
support of subvolumes.
init_pvt
Change to fill in the new values for subvolume support in
the pvte. If the pvte is for a device that contains
subvolumes, page$init is call only for the primary pvte.
init_root_vols
Change to support root physical volumes on subvolumes.
init_toehold
seek_512 depending on the RPV device type. If the RPV is
on a device divided into subvolumes the correct cylinder
FIPS Disk Support MTB-731-01
addresses for the RPV are calculated. This is extracted
from fs_dev_types seek_command (device_type).
BOUND_TEMP_2
accept_rpv
Changes to print the device name including the subvolume if
required.
init_scavenger_data
Change to calculate the number of records based on
rec_per_sv instead of rec_per_dev. This also changes form
the max size in fs_dev_types to the max size for the device
configured.
BOUND_VOLUME_RLDR_UT_
rdisk_
Change to issue 512_word seeks to 3380 nad 3390 devices,
and allow multiple attachments for subvolumes.
BOUND_VOLUME_RELOADER_
reloader
Change to uses the sector values in fs_dev_types_sector.
rldr_arg_reader_
Change to parse the new argument -pvname_device, and place
the information in rldr_data_.
rldr_output_
Change to use the new values in fs_dev_types and disk_pack
to calculate the sector addresses.
rldr_vtoc_header_
Change to use the new values in fs_dev_types and disk_pack
to calculate the sector addresses.
rldr_label_
Change to use the new values in fs_dev_types and disk_pack
to calculate the sector addresses.
rldr_volume_map_
Change to use the new values in fs_dev_types and disk_pack
to calculate the sector addresses.
MTB-731-01 FIPS Disk Support
BOUND_VTOC_MAN
vtoc_man
Change involves a small philosophical difference as well as
the calculation of the correct record number and sector
offset. A software RAR must be performed when writing a
partial vtocs to a 3380 or 3390 device. When this is found
a check should be made to see if the vtoce is in a buffer,
if not then it must be read. The parts to be written will
| be copied to the vtoce in the buffer and written.
| Tools code changes
BOUND_ADMIN_RTNES_
authenticate_device
Change to handle the two new error codes from
rcp_authenticate_device_.
BOUND_HC_DISPLAY_
display_disk_label
Change to display the label correctly for drives with
subvolumes.
BOUND_IO_TOOLS_
exercise_disk
| Change to issue 512 word seeks for subvolume devices.
| BOUND_METER_UTIL_
| get_vol_list_
| Change to obtain the subvolume information from disk_table
| for display by disk_meters.
FIPS Disk Support MTB-731-01
BOUND_METERING_CMDS_ |
disk_meters |
Change to display the volume information for all the |
physical volumes on devices that are divided into |
subvolumes. |
vtoc_buffer_meters
Change to print the software read-alter-rewrite meter.
BOUND_PRIV_SS_
record_to_vtocx
Change to use the new values in fs_dev_types for the
sectors per record instead of the value 16.
vtocx_to_record
Change to use the new values in fs_dev_types and the new
arrays in disk_pack.incl.pl1.