Greg Smith
2003-04-19 07:45:02 UTC
I've committed to cvs code to support device sharing, specifically
dasd sharing.
The code affects anything to do with emulated disks, compressed or
not. I would suggest having some kind of recovery plan in case
something goes wrong. You can be sure I backed *my* disks up one
way or another before trying this code. However, I have been
testing using emulated ckd and fba dasd and seemed to have worked
out catastrophic bugs at least.
I've not actually tested yet shared dasd... but rather `remote' dasd.
Hence the `sorta kinda'. The first step (as this implementation goes)
is to access dasd in a remote process, whether on the same machine or
some other. I've doc'd (somewhat) how the stuff works in the new file
shared.h but will append the first section below.
There are `issues' with the code but afaik it should at least work.
That is, I'd rather hear `it works', `it doesn't work' etc. as
opposed to `performance suX0rd'.
Greg
* Shared device support allows multiple Hercules instances to share
* devices. The device will be `local' to one instance and `remote'
* to all other instances. The local instance is the `server' for
* that device and the remote instance is the `client'. You do not
* have to IPL an operating system on the device server. Any number
* of Hercules instances can act as a server in a Hercplex ;-)
*
* To use a device on a remote system, instead of specifying a file
* name on the device config statement, you specify
*
* ip_address_or_name:port:devnum
*
* For example:
*
* 0100 3350 localhost:3990:0100
*
* which says there is a device server on the local host listening
* on port 3990 and we want to use its 0100 device as 0100. The
* default port is 3990 and the default remote device number is the
* local device number. So we could say
*
* 0100 3350 localhost
*
* instead, providing we don't actually have a file `localhost'.
* Interestingly, the instance on the local host listening on 3990
* could have a statement
*
* 0100 3350 192.168.200.1::0200
*
* which means that instance in turn will use device 0200 on the
* server at 192.168.200.1 listening on port 3990. The original
* instance will have to `hop' thru the second instance to get
* to the real device.
*
* Device sharing can be `split' between multiple instances.
* For example, suppose instance A has
*
* SHRDPORT 3990
* 0100 3350 localhost:3991
* 0101 3350 mvscat
*
* and instance B has
*
* SHRDPORT 3991
* 0100 3350 mvsres
* 0101 3350 localhost
*
* Then each instance acts as both a client and as a server.
*
* When `SHRDPORT' is specified, thread `shared_server' is started
* at the end of Hercules initialization. In the example above,
* neither Hercules instance can initialize their devices until the
* server is started on each system. In this case, the device trying
* to access a server gets the `connecting' bit set on in the DEVBLK
* and the device still needs to initialize. After the shared server
* is started, a thread is attached for each device that is connecting
* to complete the connection (which is the device init handler).
*
------------------------ Yahoo! Groups Sponsor ---------------------~-->
Get 128 Bit SSL Encryption!
http://us.click.yahoo.com/xaxhjB/hdqFAA/VygGAA/W4wwlB/TM
---------------------------------------------------------------------~->
dasd sharing.
The code affects anything to do with emulated disks, compressed or
not. I would suggest having some kind of recovery plan in case
something goes wrong. You can be sure I backed *my* disks up one
way or another before trying this code. However, I have been
testing using emulated ckd and fba dasd and seemed to have worked
out catastrophic bugs at least.
I've not actually tested yet shared dasd... but rather `remote' dasd.
Hence the `sorta kinda'. The first step (as this implementation goes)
is to access dasd in a remote process, whether on the same machine or
some other. I've doc'd (somewhat) how the stuff works in the new file
shared.h but will append the first section below.
There are `issues' with the code but afaik it should at least work.
That is, I'd rather hear `it works', `it doesn't work' etc. as
opposed to `performance suX0rd'.
Greg
* Shared device support allows multiple Hercules instances to share
* devices. The device will be `local' to one instance and `remote'
* to all other instances. The local instance is the `server' for
* that device and the remote instance is the `client'. You do not
* have to IPL an operating system on the device server. Any number
* of Hercules instances can act as a server in a Hercplex ;-)
*
* To use a device on a remote system, instead of specifying a file
* name on the device config statement, you specify
*
* ip_address_or_name:port:devnum
*
* For example:
*
* 0100 3350 localhost:3990:0100
*
* which says there is a device server on the local host listening
* on port 3990 and we want to use its 0100 device as 0100. The
* default port is 3990 and the default remote device number is the
* local device number. So we could say
*
* 0100 3350 localhost
*
* instead, providing we don't actually have a file `localhost'.
* Interestingly, the instance on the local host listening on 3990
* could have a statement
*
* 0100 3350 192.168.200.1::0200
*
* which means that instance in turn will use device 0200 on the
* server at 192.168.200.1 listening on port 3990. The original
* instance will have to `hop' thru the second instance to get
* to the real device.
*
* Device sharing can be `split' between multiple instances.
* For example, suppose instance A has
*
* SHRDPORT 3990
* 0100 3350 localhost:3991
* 0101 3350 mvscat
*
* and instance B has
*
* SHRDPORT 3991
* 0100 3350 mvsres
* 0101 3350 localhost
*
* Then each instance acts as both a client and as a server.
*
* When `SHRDPORT' is specified, thread `shared_server' is started
* at the end of Hercules initialization. In the example above,
* neither Hercules instance can initialize their devices until the
* server is started on each system. In this case, the device trying
* to access a server gets the `connecting' bit set on in the DEVBLK
* and the device still needs to initialize. After the shared server
* is started, a thread is attached for each device that is connecting
* to complete the connection (which is the device init handler).
*
------------------------ Yahoo! Groups Sponsor ---------------------~-->
Get 128 Bit SSL Encryption!
http://us.click.yahoo.com/xaxhjB/hdqFAA/VygGAA/W4wwlB/TM
---------------------------------------------------------------------~->