[comp.os.v] questions on migration

cdash@BOULDER.COLORADO.EDU (Charles Shub) (08/04/88)

We've got the following comments and questions on version 6.0 of V.  The
questions are directly or indirectly related to process migration. Any help or
insights would be appreciated. Mail responses to me, please.

cdash   aka cdash@boulder.Colorado.EDU  -or-  ..!{ncar|nbires}!boulder!cdash

1.  Migration Facilities

    a.  Comment on ../V/cmds/migrateprog/mi/migrateprog.c:
In the routine GetRemoteHost, a check is made to ensure that a logical host is
not migrating to the same physical host it is on.  This check apparently does
not work. As a consequence, about 50% of the time migrateprog will not work.

    b.  Question on ../V/kernel/mi/migrate1.c:
In the routine DestroyMigratingProcess, there are two calls to 
InitializeAlien_1.  The second call assumes that an alien process descriptor 
has been set up when a send is performed between two different logical hosts 
on the same physical host.  Is this assumption correct?  Shouldn't a call to
Alienate or DirectNonLocalForward be made instead?  A subsequent reply 
will eventually generate a call to Dealienate for this process descriptor 
which can't be found among the aliens.

2.  V Kernel

    a.  Comment on ../V/kernel/mi/lhost.c:
In the routine DestroyHost, no attempt is made to leave the 
LKERNEL_SERVER_GROUP or LTEAM_SERVER_GROUP.  This causes a problem if the same
logical host tries to migrate back to this same machine before a call to 
ScavengeGroupDescriptors is made.

    b.  Question on Mutual Exclusion:
What, besides queues being locked, is the kernel policy for mutual 
exclusion (synchronization) on other kernel objects?  For instance, should 
hash table updates be preceded by 'disable' and followed with a 'enable'?  
Also, should object count updates be locked and unlocked as queues are?
We've run across synchronization problems trying to get to two or more logical
hosts to migrate to the same machine from different machines at the same time.

    c.  Question on Real and Alien Processes:
When are alien process descriptors (APD) built?  So far we have been assuming
the following:
	(1)  IPC between two processes on different physical hosts always
generates APDs for both sender and receiver.
	(2)  IPC between two processes on the same physical host never 
generates APDs even if the two processes are on different logical hosts.
	(3)  GROUPIPC always generates APDs even if the two processes are on 
the same logical host.
	(4)  A process descriptor (that is in use) is either linked into either
the Pd_bundle[] or AlienMap[] hash table but not both.

3.  Miscellaneous

    a.  Question on Remote Alias Process:
What is a remote alias process?  When is the REMOTE_ALIAS_PROCESS bit in the 
process identifier (pid)  ever set?

    b.  Question on config.c and config.h for sun3+le:
Are the config.c and config.h files for ../V/kernel/sun3+ie suitable for use 
with a Sun 3/50 Lance Ethernet configuration?  We have a new kernel directory 
called sun3+le that is the same as sun3+ie except for compiling in enetle.c 
versus enetie.c.