[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:
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.
http://elektronkind.org/outbox/afs/openafs-s10u4-compat.patch
/dale
--
Dale Ghent
Specialist, Storage and UNIX Systems
UMBC - Office of Information Technology
ECS 201 - x51705