[OpenAFS] [REVIEW] Can haz Solaris 10 8/07 compatibility patch

Dale Ghent daleg@umbc.edu
Wed, 26 Sep 2007 19:35:44 -0400

Here's a candidate patch for those of you running any version of  
Solaris 10, or have hopes of running OpenAFS on Solaris 10 8/07  
(update 4);

This patch removes use of the non-Public ILL structures by OpenAFS to  
gather network interface information in order to make RX packet size  
and server locality decisions. I replaced it with a Solaris taskq(9f)  
that executes a function which polls the network interfaces on the  
machine and populates a global array with collected information.  
Network information consumers then walk this array to gain the info  
they require. This polling function, by default, runs every 30 seconds.

I made a design change from previous versions in that I dispensed  
with the while(1) loop for the polling mechanism. The osi_NetIfPoller  
function now chains itself.

The interval between polls may be adjusted either by /etc/system or  
in real time by the use of mdb:

Set afs interface poll interval to 15 seconds using /etc/system:
     set afs:afs_if_poll_interval=15

Get current poll interval using mdb:
     # echo afs_if_poll_interval/D | mdb -k
     afs_if_poll_interval:           30

Set a new poll interval to 15 seconds (in hex):
     # echo "afs_if_poll_interval/W 0f" | mdb -kw
     afs_if_poll_interval:           0x1e            =       0xf

You may see if the poller is doing its job by watching the "executed"  
line of the  afs_taskq kstat:
     # kstat -n afs_taskq
     module: unix                            instance: 0
     name:   afs_taskq                       class:    taskq
             crtime                          141.142208577
             executed                        126
             maxtasks                        1
             nactive                         2
             nalloc                          0
             priority                        60
             snaptime                        2286.25972396
             tasks                           126
             threads                         2
             totaltime                       28790720

The following patch applies against OpenAFS 1.4.4. I urge that it be  
tested on any version of Solaris that you may have at your disposal,  
not just 10u4. Please discuss any issues on the -devel list.


Dale Ghent
Specialist, Storage and UNIX Systems
UMBC - Office of Information Technology
ECS 201 - x51705